)]}'
{
  "log": [
    {
      "commit": "8d5b8b295930aaa43255c4f0b74ece3ee8b43a47",
      "tree": "c26fc49bbc74615e7f0b9657aaf3757a8282d7a9",
      "parents": [
        "c8924c6ea9e83ba3832dd5551df38ab06f4aaca9"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 24 10:51:52 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 26 14:10:03 2015 +0000"
      },
      "message": "ART: Force constants into the entry block\n\nOptimizations such as GVN and BCE make the assumption that all\nconstants are located in the entry block of the CFG, but not all\npasses adhere to this rule.\n\nThis patch makes constructors of constants private and only accessible\nto friend classes - HGraph for int/long constants and SsaBuilder for\nfloat/double - which ensure that they are placed correctly and not\nduplicated.\n\nNote that the ArenaAllocatorAdapter was modified to not increment\nthe ArenaAllocator\u0027s internal reference counter in order to allow\nfor use of ArenaSafeMap inside an arena-allocated objects. Because\ntheir destructor is not called, the counter does not get decremented.\n\nChange-Id: I36a4fa29ae34fb905cdefd482ccbf386cff14166\n"
    },
    {
      "commit": "790412959a6413a585f45fc5f77fe7106311a00c",
      "tree": "94d7d6016c5a58d6c5f31d8350330c8025baa014",
      "parents": [
        "9ed05c4cf76aaeee48a1eb5bbae659b0acbabe67"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 26 10:05:54 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 26 10:05:54 2015 +0000"
      },
      "message": "Use the original invoke type when inlining.\n\nWhen resolving a method through the compiler driver, the code makes\nsure the call in the DEX bytecode matches the kind of method found,\nto check for IncompatibleClassChangeError. Because when we sharpen\nan invoke virtual, we transform the invoke kind to direct, we must not\nuse the new kind, but the one in DEX.\n\nChange-Id: Iaf77b27b529c659ea48ffb19f46427552c9e3654\n"
    },
    {
      "commit": "651b4fb337eba9971bb830d9e037c633e29a6eba",
      "tree": "06cb3f4534205d2a8947e211834806d6343ead15",
      "parents": [
        "39b4bf99a1167cd9d5e5454059dd360e67f1eac1",
        "9437b78780f9e6ffa5797ebe82de8e8d7f3a5ed6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 25 17:19:07 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 25 17:19:08 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Inline across dex files.\"\"\""
    },
    {
      "commit": "39b4bf99a1167cd9d5e5454059dd360e67f1eac1",
      "tree": "1536a13873faa1031901d003fb987522598c381f",
      "parents": [
        "3679a47027b40290018d0ccc50b996a15645dfef",
        "ab4a2f5995b79c2b5b28c91b419a2c91cb88e377"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 25 17:15:21 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 25 17:15:22 2015 +0000"
      },
      "message": "Merge changes I4b3b4d90,I70e0d78f,I2848636f\n\n* changes:\n  Forbid the use of shifts in ShifterOperand in Thumb2\n  Make subs and adds alter flags when rn is an immediate\n  Inline long shift code\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": "139cec015abd195727d5410dc313b483babeda10",
      "tree": "4ac5501a8f66730eb176b93533cf80c920605d1d",
      "parents": [
        "410f5cfe4ff70bc8a151216afae4e204f51aff37",
        "6ae70962089e4af9718cc9b7c2b79a0c501c1844"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 25 14:10:12 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 25 14:10:12 2015 +0000"
      },
      "message": "Merge \"Share dex register maps between stack maps when possible.\""
    },
    {
      "commit": "6ae70962089e4af9718cc9b7c2b79a0c501c1844",
      "tree": "3b7cd46ed7c7bab95dc258a29883297738138f6c",
      "parents": [
        "2f5904383a7b7ffb741c8839ec3c60762860bad3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 18 16:31:28 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 25 13:50:23 2015 +0000"
      },
      "message": "Share dex register maps between stack maps when possible.\n\nIf two stack maps have the same dex register map then one of them will\nreference the register map from the other instead of owning an\nindependent copy.\n\nThis saves around 1.5% of space.\n\nChange-Id: Ic2c2c81210c6c45a5c5f650f7ba82a46ff6f45e4\n"
    },
    {
      "commit": "b2bd1c5f9171f35fa5b71ada42d1a9e11189428d",
      "tree": "db9165b3daa18d1d430b690b78c2d125bade3021",
      "parents": [
        "11e99b19f48576f1bb6d0993635b34b6e09c9832"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Mar 25 11:17:37 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Mar 25 12:30:26 2015 +0000"
      },
      "message": "ART: Formatting and comments in BooleanSimplifier\n\nChange-Id: I9a5aa3f2aa8b0a29d7b0f1e5e247397cf8e9e379\n"
    },
    {
      "commit": "fd18f5ac060365286616cce773f8702d6246e4ca",
      "tree": "23f63ca2dddadd2da573b027d6a7b632235a3b7f",
      "parents": [
        "72fad8dd9653c4c79b8a43f4c1d466282ec80cc6"
      ],
      "author": {
        "name": "Guillaume \"Vermeille\" Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Wed Mar 11 14:57:40 2015 +0000"
      },
      "committer": {
        "name": "Guillaume \"Vermeille\" Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Wed Mar 25 10:19:26 2015 +0000"
      },
      "message": "Inline long shift code\n\nChange-Id: I2848636f892e276507d04f4313987b9f4c80686b\n"
    },
    {
      "commit": "10f56cb6b4e39ed0032e9a23b179b557463e65ad",
      "tree": "9f53251569ed32af7add31cf16206f255261b97e",
      "parents": [
        "3e690d11d26b3ae3891a03cdef88e7c2272109f5"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 24 18:49:14 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 24 19:13:13 2015 +0000"
      },
      "message": "ART: Fix crash in gtests\n\nSsaLivenessAnalysis was crashing after change of iteration order in\n142377 because gtests do not always build reverse post order.\n\nChange-Id: If5ad5b7c52040b119c4415f0b942988049fa3c16\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": "b64b782f9ae7a94ecbbf64c83cbcdc7d716ba560",
      "tree": "df3aa814ff7762d681c50781c413fd510440ae61",
      "parents": [
        "2c2d00e8ca841aa2f57fa2f852e896378ef67144",
        "46e2a3915aa68c77426b71e95b9f3658250646b7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 24 17:31:29 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 24 17:31:31 2015 +0000"
      },
      "message": "Merge \"ART: Boolean simplifier\""
    },
    {
      "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": "2c2d00e8ca841aa2f57fa2f852e896378ef67144",
      "tree": "c4050a4e6e9aa6f091ae042daf940ba0a1e72136",
      "parents": [
        "09aa354d0d7ff58cb9f028647d81a67648c9e0ba",
        "da4d79bc9a4aeb9da7c6259ce4c9c1c3bf545eb8"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 24 17:00:58 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 24 17:01:00 2015 +0000"
      },
      "message": "Merge \"Unify ART\u0027s various implementations of bit_cast.\""
    },
    {
      "commit": "09aa354d0d7ff58cb9f028647d81a67648c9e0ba",
      "tree": "d49b3a0a353222252b425911749725b775f56f7b",
      "parents": [
        "af87659f462ac650009fce295097cae3dabce171",
        "6a816cf624ba56bf2872916d7b65b18fd9a411ef"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 24 16:24:51 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 24 16:24:52 2015 +0000"
      },
      "message": "Merge \"Revert \"Inline across dex files.\"\""
    },
    {
      "commit": "6a816cf624ba56bf2872916d7b65b18fd9a411ef",
      "tree": "47d03a97a9b5101ea543beda55f29cce339bd06e",
      "parents": [
        "7e4c3508e4f5512650b63c41f7872a749e99aee9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 24 16:17:56 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 24 16:17:56 2015 +0000"
      },
      "message": "Revert \"Inline across dex files.\"\n\nbug: 19904089\nbug: 19903495\n\nThis reverts commit 7e4c3508e4f5512650b63c41f7872a749e99aee9.\n\nChange-Id: I15df746b5f1882cce78eedde6c05c0d3b69bfa4a\n"
    },
    {
      "commit": "da4d79bc9a4aeb9da7c6259ce4c9c1c3bf545eb8",
      "tree": "151dd61c4b6a8fd512ea4c2c862af28b02f4ed9c",
      "parents": [
        "af87659f462ac650009fce295097cae3dabce171"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 24 14:36:11 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 24 16:02:21 2015 +0000"
      },
      "message": "Unify ART\u0027s various implementations of bit_cast.\n\nART had several implementations of art::bit_cast:\n\n1. one in runtime/base/casts.h, declared as:\n\n   template \u003cclass Dest, class Source\u003e\n   inline Dest bit_cast(const Source\u0026 source);\n\n2. another one in runtime/utils.h, declared as:\n\n   template\u003ctypename U, typename V\u003e\n   static inline V bit_cast(U in);\n\n3. and a third local version, in runtime/memory_region.h,\n   similar to the previous one:\n\n   template\u003ctypename Source, typename Destination\u003e\n   static Destination MemoryRegion::local_bit_cast(Source in);\n\nThis CL removes versions 2. and 3. and changes their callers\nto use 1. instead.  That version was chosen over the others\nas:\n- it was the oldest one in the code base; and\n- its syntax was closer to the standard C++ cast operators,\n  as it supports the following use:\n\n    bit_cast\u003cDestination\u003e(source)\n\n  since `Source\u0027 can be deduced from `source\u0027.\n\nChange-Id: I7334fd5d55bf0b8a0c52cb33cfbae6894ff83633\n"
    },
    {
      "commit": "0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430",
      "tree": "0e1d0813c1d8d1c7239a900c1653296975713df0",
      "parents": [
        "e295e6ec5beaea31be5d7d3c996cd8cfa2053129"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 24 02:39:46 2015 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 24 02:39:46 2015 +0000"
      },
      "message": "Revert \"Deoptimization-based bce.\"\n\nThis breaks compiling the core image:\n\n Error after BCE: art::SSAChecker: Instruction 219 in block 1 does not dominate use 221 in block 1.\n\nThis reverts commit e295e6ec5beaea31be5d7d3c996cd8cfa2053129.\n\nChange-Id: Ieeb48797d451836ed506ccb940872f1443942e4e\n"
    },
    {
      "commit": "e295e6ec5beaea31be5d7d3c996cd8cfa2053129",
      "tree": "4d8a657d23d511743ce35bee596544d7f652efdb",
      "parents": [
        "d24ba2c44c76a2b2dd13aafe8f7981c15be31a98"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Sat Mar 07 06:37:59 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Mar 23 16:39:37 2015 -0700"
      },
      "message": "Deoptimization-based bce.\n\nA mechanism is introduced that a runtime method can be called\nfrom code compiled with optimizing compiler to deoptimize into\ninterpreter. This can be used to establish invariants in the managed code\nIf the invariant does not hold at runtime, we will deoptimize and continue\nexecution in the interpreter. This allows to optimize the managed code as\nif the invariant was proven during compile time. However, the exception\nwill be thrown according to the semantics demanded by the spec.\n\nThe invariant and optimization included in this patch are based on the\nlength of an array. Given a set of array accesses with constant indices\n{c1, ..., cn}, we can optimize away all bounds checks iff all 0 \u003c\u003d min(ci) and\nmax(ci) \u003c array-length. The first can be proven statically. The second can be\nestablished with a deoptimization-based invariant. This replaces n bounds\nchecks with one invariant check (plus slow-path code).\n\nChange-Id: I8c6e34b56c85d25b91074832d13dba1db0a81569\n"
    },
    {
      "commit": "d24ba2c44c76a2b2dd13aafe8f7981c15be31a98",
      "tree": "0e1d0813c1d8d1c7239a900c1653296975713df0",
      "parents": [
        "90d480c26f7524f35323a11d6ba2880ff3db789a",
        "7e4c3508e4f5512650b63c41f7872a749e99aee9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 23 17:52:58 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 23 17:52:59 2015 +0000"
      },
      "message": "Merge \"Inline across dex files.\""
    },
    {
      "commit": "7e4c3508e4f5512650b63c41f7872a749e99aee9",
      "tree": "b6f9f89eb384a386ee756e6dd98d9f979feef2ce",
      "parents": [
        "0b1692cd451053198362993d1f6939fde90c2f50"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 18 11:00:52 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 23 17:42:01 2015 +0000"
      },
      "message": "Inline across dex files.\n\nChange-Id: I5c2c44f5130b50f0bad21a6877a3935dc60b4a85\n"
    },
    {
      "commit": "90d480c26f7524f35323a11d6ba2880ff3db789a",
      "tree": "d52251e5720bbce2c5bc066e6da90b0345f8d53d",
      "parents": [
        "c6de977f6482014a9d01a880efe3eed8bd2007e6",
        "36540cb4d549c706cc7cd23086684f1548a91042"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 23 17:05:48 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 23 17:05:48 2015 +0000"
      },
      "message": "Merge \"Implement a space filter for optimizing.\""
    },
    {
      "commit": "5af26bd446660bc5d13dd6ff9470e6920a51e26e",
      "tree": "a7a8ffcef09783b7ca91c70aa90e48efaf650b38",
      "parents": [
        "af2bec33e5f124e37e9dbbe0fef1261411bd372d",
        "2d35d9d7490ef3880ee366ccbf8f6e791f398c47"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 23 16:44:35 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 23 16:44:36 2015 +0000"
      },
      "message": "Merge \"Opt Compiler: Materialise constants that cannot be encoded\""
    },
    {
      "commit": "af2bec33e5f124e37e9dbbe0fef1261411bd372d",
      "tree": "4b49689ff6d7483440fa250c68ea65b8f68e26dd",
      "parents": [
        "461bd6cbcd26731aad019d382aafbdbc7ee19e69",
        "3f6c7f61855172d3d9b7a9221baba76136088e7c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 23 15:23:23 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 23 15:23:24 2015 +0000"
      },
      "message": "Merge \"[optimizing] Improve x86, x86_64 code\""
    },
    {
      "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": "9ccd151d0d27a729f88af9d00285afe4d147981a",
      "tree": "edfef268a0ecda957dfaa91ec35dd99c9ad3761f",
      "parents": [
        "3743174267159ec0c39bce1ca28c2081468dda94"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 20 18:11:45 2015 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 20 18:40:32 2015 -0700"
      },
      "message": "Fix verifier handling of empty switch as last instruction.\n\nAlso fixes optimizing compiler\u0027s assumption that switch is non-empty and\nadds test case.\n\nBug: 19827056\nChange-Id: I5ac891d5062f528ef3be787b1094cba7b4c0fbd0\n"
    },
    {
      "commit": "37c22c61890fe779826dfefa3d327daa76dabb30",
      "tree": "a73e8c2d4092efc8bf13692d3ca6919986fead8d",
      "parents": [
        "39374ce1df34164e0060b0621be98d33ba0ff4e6",
        "004c230b4cfc856690c61faabc41864061813c88"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 20 14:56:12 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 20 14:56:13 2015 +0000"
      },
      "message": "Merge \"Compress the StackMaps.\""
    },
    {
      "commit": "004c230b4cfc856690c61faabc41864061813c88",
      "tree": "40d95445eaa2eb248fa639755689c797a5e0c2ae",
      "parents": [
        "735dc87c92bee338d0638b3290c2b93a122429f2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 20 10:06:38 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 20 14:55:15 2015 +0000"
      },
      "message": "Compress the StackMaps.\n\nFirst step towards the compression of the StackMap (not\nthe DexRegisterMap). Next step will be to just use what is\nneeded (instead of byte -\u003e word).\n\nChange-Id: I4f81b2d05bf5cc508585e16fbbed1bafbc850e2e\n"
    },
    {
      "commit": "c0365b144651c4e586ddc235423b3f0111966f89",
      "tree": "7d996dcd0233f6f26ffd7c72dda331f630cc8309",
      "parents": [
        "a2b02f7bb474549ae356b5edfbb27a76e5460c58"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 18 18:31:52 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 20 12:16:25 2015 +0000"
      },
      "message": "Remember whether a method was worth inlining.\n\nChange-Id: I9d8efe312b264739ac6307f966e43c1d7650a3ca\n"
    },
    {
      "commit": "0ced884ac5b2ce50a8bfe738f654155c51b2766f",
      "tree": "0afc979e047848d486b2b4f14d584afa42bb82cb",
      "parents": [
        "d6f00810e2419489f526e4f0c94cb13318a365fd",
        "aec8f930571ce10d6ce9a4249c45866a7f213397"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 18 10:48:19 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 18 10:48:19 2015 +0000"
      },
      "message": "Merge \"StackMap: Always load and store unalign.\""
    },
    {
      "commit": "aec8f930571ce10d6ce9a4249c45866a7f213397",
      "tree": "6514b8af90323a20282f3afe78812cce7535c7df",
      "parents": [
        "696005b00575fa53c91f3baabd4e85d543df4df8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 18 10:42:22 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 18 10:43:37 2015 +0000"
      },
      "message": "StackMap: Always load and store unalign.\n\nNow that we can have a mix of Quick and Optimized code in an .oat\nfile, a CodeInfo object is not necessarily word aligned.\n\nChange-Id: Ic6c5d1a2c6e20363436726a0708b0764b5a76caf\n"
    },
    {
      "commit": "d6f00810e2419489f526e4f0c94cb13318a365fd",
      "tree": "34ce88146d5c2ed27676e4780181ed395f9a9129",
      "parents": [
        "696005b00575fa53c91f3baabd4e85d543df4df8",
        "522e2241f5b5f331d0aa2f8508f4c97973f7f012"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Mar 18 09:15:21 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 18 09:15:21 2015 +0000"
      },
      "message": "Merge \"ART: Fix condition for StoreNeedsWriteBarrier\""
    },
    {
      "commit": "202d164d97c1e0322188706c222911f8370dd194",
      "tree": "b1f0e65127e4a9ca87f4843490a1993dd250e148",
      "parents": [
        "cadf090da2dc91a3d6b842324e85f12ea6fef2ef",
        "f3b4aebd0f5ce6c82bfd6284919a5c5e91955124"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 17 21:18:07 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 17 21:18:08 2015 +0000"
      },
      "message": "Merge \"Revert \"Inline long shift code\"\""
    },
    {
      "commit": "f3b4aebd0f5ce6c82bfd6284919a5c5e91955124",
      "tree": "ea27dd630728cfa994ce2c5da522538744a7a8a9",
      "parents": [
        "09895ebf2d98783e65930a820e9288703bb1a50b"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 17 21:16:38 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 17 21:16:38 2015 +0000"
      },
      "message": "Revert \"Inline long shift code\"\n\nThis reverts commit 09895ebf2d98783e65930a820e9288703bb1a50b.\n\nChange-Id: I7544022d896ef4353bc2cdf4b036403ed20c956d\n"
    },
    {
      "commit": "522e2241f5b5f331d0aa2f8508f4c97973f7f012",
      "tree": "7b438281eb239aee475b1d7d4c87c13621626055",
      "parents": [
        "94e480778b0946d1ab405ecf901e5d41ed54cc17"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 17 18:48:28 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 17 18:57:24 2015 +0000"
      },
      "message": "ART: Fix condition for StoreNeedsWriteBarrier\n\nCodegen\u0027s StoreNeedsWriteBarrier assumed nulls are represented as\ninteger constants and generated a barrier when not needed. This patch\nfixes the bug.\n\nChange-Id: I79247f1009b1fe6f24dba0d57e846ecc55806d4d\n"
    },
    {
      "commit": "cadf090da2dc91a3d6b842324e85f12ea6fef2ef",
      "tree": "60cd1c1c8982b6c10074e6c7385e55d9ab042657",
      "parents": [
        "1d2868c081f6d523d4fe2d88fe321074e53f68e5",
        "09895ebf2d98783e65930a820e9288703bb1a50b"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 17 18:50:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 17 18:50:55 2015 +0000"
      },
      "message": "Merge \"Inline long shift code\""
    },
    {
      "commit": "09895ebf2d98783e65930a820e9288703bb1a50b",
      "tree": "5fa8d5baf27ac8f18b80291a47ca62d19fa2dd7d",
      "parents": [
        "e8e42f3548fd894f860912bb1b71ce6fa2d7daf3"
      ],
      "author": {
        "name": "Guillaume \"Vermeille\" Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Wed Mar 11 14:57:40 2015 +0000"
      },
      "committer": {
        "name": "Guillaume Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Tue Mar 17 18:49:53 2015 +0000"
      },
      "message": "Inline long shift code\n\nChange-Id: I96887c295eb9a23dad4c9cc05d0a0e3ba17f674d\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": "68e15009173f92fe717546a621b56413d5e9fba1",
      "tree": "460f18693f53bcbcc6f79b03f8a211f271c973a7",
      "parents": [
        "1311ef7226f6147f2ef8c491321972a79d73914a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 17 16:16:49 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 17 16:23:17 2015 +0000"
      },
      "message": "PREOPT compiles using dex2oatd so don\u0027t emit debug instructions.\n\nChange-Id: I8d2ab8d956ad0ce313928918c658d49f490ad081\n"
    },
    {
      "commit": "2d35d9d7490ef3880ee366ccbf8f6e791f398c47",
      "tree": "5e512b5da7d7c290d69e4437436feb15ccad5ffc",
      "parents": [
        "8fff8c66738b35bafc5318e408afa21c34c57ff3"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Sun Feb 22 22:08:01 2015 +0000"
      },
      "committer": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Tue Mar 17 10:47:51 2015 +0000"
      },
      "message": "Opt Compiler: Materialise constants that cannot be encoded\n\nThe VIXL MacroAssembler deals gracefully with any immediate. However\nwhen the constant has multiple uses and cannot be encoded in the\ninstruction\u0027s immediate field we are better off using a register for\nthe constant and thus sharing the constant generation between multiple\nuses.\n\nEg:\n  var +\u003d #Const;    // #Const cannot be encoded.\n  var +\u003d #Const;\n\nBefore:                 After:\n  mov wip0, #Const        mov w4, #Const\n  add w0, w0, wip0        add w0, w0, w4\n  mov wip0, #Const        add w0, w0, w4\n  add w0, w0, wip0\n\nChange-Id: Ied8577c879845777e52867aced16b2b45e06ac6c\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@arm.com\u003e\n"
    },
    {
      "commit": "6d340c4f16f374e05f4205e5a27de1174abcaf2a",
      "tree": "ea4f4205049668dc1d46fb0ed4b6f349cbd3d761",
      "parents": [
        "94e480778b0946d1ab405ecf901e5d41ed54cc17"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 03 11:54:54 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 17 10:07:23 2015 +0000"
      },
      "message": "ART: Faster implementation of GVN\u0027s hash table\n\nThe basic hash table in Optimizing\u0027s GVN pass does not scale for\nlarger methods and quickly becomes a bottleneck. This patch provides\na different implementation, focusing on the following:\n(1) Proper buckets with chaining for near constant-time lookup.\n(2) Bucket inheritance for faster cloning. A clone does not actually\n    copy the entries until a first change is made.\n(3) Table resizing for better load management. Done during cloning.\n(4) Kill() and IntersectWith() applied only on impure instructions.\n    This is achieved by splitting (im)pure entries between even- and\n    odd-indexed buckets.\n\nBenchmarks show that this optimization speeds up GVN by ~10%, which\ntranslates to a rougly 2% change in the overall compilation time.\n\nChange-Id: Ib4058359701d990194cfd49c6ee46ac2372f090c\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": "eeefa1276e83776f08704a3db4237423b0627e20",
      "tree": "d7c647ca77703f3712f567704f40b00d59a125de",
      "parents": [
        "02c0bac34c246c1bd974dbb86d292d4b52ba98e4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 18:52:59 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 16 10:48:21 2015 +0000"
      },
      "message": "Update locations of registers after slow paths spilling.\n\nChange-Id: Id9aafcc13c1a085c17ce65d704c67b73f9de695d\n"
    },
    {
      "commit": "02c0bac34c246c1bd974dbb86d292d4b52ba98e4",
      "tree": "83774758f02a48a0b59e042d2c6f4a4a7edf60a2",
      "parents": [
        "ccac273186a7f624ee20d1a3e19ea34bb3fd305f",
        "fead4e4f397455aa31905b2982d4d861126ab89d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 18:46:44 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 13 18:46:44 2015 +0000"
      },
      "message": "Merge \"[optimizing] Don\u0027t record None locations in the stack maps.\""
    },
    {
      "commit": "fead4e4f397455aa31905b2982d4d861126ab89d",
      "tree": "21e4ccd99472bbf5cf1fac3bc20d0bca6f176022",
      "parents": [
        "cc22e3946baf035c8732e9417ab132bfe663aa45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 14:39:40 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 18:28:19 2015 +0000"
      },
      "message": "[optimizing] Don\u0027t record None locations in the stack maps.\n\n- moved environment recording from code generator to stack map stream\n- added creation/loading factory methods for the DexRegisterMap (hides\ninternal details)\n- added new tests\n\nChange-Id: Ic8b6d044f0d8255c6759c19a41df332ef37876fe\n"
    },
    {
      "commit": "3f6c7f61855172d3d9b7a9221baba76136088e7c",
      "tree": "b61ab89a880ae74f44956425f5c9794d73ef029d",
      "parents": [
        "cc22e3946baf035c8732e9417ab132bfe663aa45"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Mar 13 13:47:53 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Mar 13 14:01:43 2015 -0400"
      },
      "message": "[optimizing] Improve x86, x86_64 code\n\nTweak the generated code to allow more use of constants and other small\nchanges\n- Use test vs. compare to 0\n- EmitMove of 0.0 should use xorps\n- VisitCompare kPrimLong can use constants\n- cmp/add/sub/mul on x86_64 can use constants if in int32_t range\n- long bit operations on x86 examine long constant high/low to optimize\n- Use 3 operand imulq if constant is in int32_t range\n\nChange-Id: I2dd4010fdffa129fe00905b0020590fe95f3f926\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "a8ac9130b872c080299afacf5dcaab513d13ea87",
      "tree": "2bd0a2a88cbb6e7a3ae79dff84c466bed9189eb5",
      "parents": [
        "cc22e3946baf035c8732e9417ab132bfe663aa45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 16:36:36 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 16:47:44 2015 +0000"
      },
      "message": "Refactor code in preparation of correct stack maps in slow path.\n\nMove the logic of saving/restoring live registers in slow path\nin the SlowPathCode method. Also add a RecordPcInfo helper to\nSlowPathCode, that will act as the placeholder of saving correct\nstack maps.\n\nChange-Id: I25c2bc7a642ef854bbc8a3eb570e5c8c8d2d030c\n"
    },
    {
      "commit": "ede7bf8a5cef965974e7c1edcf46a41fbe50a49d",
      "tree": "7f99657bd4f8591f7cf463c1a197e1a7575abab6",
      "parents": [
        "63346f57e2327894ce6c1e28e3d00342177538a6"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 13 12:23:04 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 13 12:54:45 2015 +0000"
      },
      "message": "Align CodeInfo regions instead of their inner subregions.\n\nInstead of word-aligning every stack map region, as well as\nthe Dex register maps region of a CodeInfo object, just\nalign the whole CodeInfo region itself.\n\nChange-Id: Ia35d213d2bd184729aa0d048874c76f7bc6da0f6\n"
    },
    {
      "commit": "63346f57e2327894ce6c1e28e3d00342177538a6",
      "tree": "dd3e686f2915a5c1cf37f83c6a9882ae35ff9da2",
      "parents": [
        "faa375ca1409707efaaeeb710b2e933e7668dbe9",
        "29ba1b068fc9f5a8011782c147b1f7732928aac7"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 13 12:40:16 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 13 12:40:16 2015 +0000"
      },
      "message": "Merge \"Fix the computation of the size of the stack maps region.\""
    },
    {
      "commit": "29ba1b068fc9f5a8011782c147b1f7732928aac7",
      "tree": "5b61289b1e135cce6f01e8c9cbcaa747a39f196c",
      "parents": [
        "d9a59ca8f038a0f93a4e1504e0f7f8f388848719"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 13 11:45:07 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 13 12:28:43 2015 +0000"
      },
      "message": "Fix the computation of the size of the stack maps region.\n\nIn art::StackMapStream::ComputeStackMapSize, compute the\nsize of a CodeInfo\u0027s stack maps region using the stack\nmask size, not the maximum element of the stack mask.\nAlso, rename this method as\nart::StackMapStream::ComputeStackMapsSize to make it clear\nit that it covers all the stack maps of the CodeInfo item,\nnot just one stack map.\n\nChange-Id: Icad21946dbca6e1ade2b82c9c2c535fdfed110a9\n"
    },
    {
      "commit": "faa375ca1409707efaaeeb710b2e933e7668dbe9",
      "tree": "32ce9cd8faec1e102dd2f0c8b601ac3f2e8cc1a9",
      "parents": [
        "f11995b033f70900098ecf56bab32256ce536ada",
        "e50b8d23d69a0d1f4eee51d34870968cd49a6f7d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 10:37:33 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 13 10:37:33 2015 +0000"
      },
      "message": "Merge \"Disable inlining in Optimizing when --debuggable is set.\""
    },
    {
      "commit": "e50b8d23d69a0d1f4eee51d34870968cd49a6f7d",
      "tree": "34d0a0b7b17510f1f45817bc8a2fbd09554d985e",
      "parents": [
        "e4aca0297a0c3c710c802342db025832aed9e6ab"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 08:57:42 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 09:58:00 2015 +0000"
      },
      "message": "Disable inlining in Optimizing when --debuggable is set.\n\nChange-Id: I6365269e606e0c176e518c06719ebdaf6a4c4b88\n"
    },
    {
      "commit": "a4d120c88e79eece333e66eec64c4e909d770e3e",
      "tree": "086e8196778127b9bbd77d63e5521b2a86fb1668",
      "parents": [
        "ddd04a64a13bde9551ca1174957e055cd2132cff"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 08:55:09 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 08:55:09 2015 +0000"
      },
      "message": "Fix build breakage.\n\nChange-Id: I86959eca5d8f5458ff75c78776b0af9db9c26800\n"
    },
    {
      "commit": "ddd04a64a13bde9551ca1174957e055cd2132cff",
      "tree": "cfee62d10e81752ec3af2be1b03dc04a4b176fc9",
      "parents": [
        "90a6adc0f6e55ec02f9443c12e93fea85c1a9393",
        "915b9d0c13bb5091875d868fbfa551d7b65d7477"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 08:45:10 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 13 08:45:12 2015 +0000"
      },
      "message": "Merge \"Tweak liveness when instructions are used in environments.\""
    },
    {
      "commit": "9ac0e4d4ed1b45cf8767ef1d339afcdd205bf55a",
      "tree": "f5a53e3e10a138b4b301d60f9abc1011e945bda5",
      "parents": [
        "4054413950cbee5d304a7c29f08c21fb33d33d08"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 12 18:33:05 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 12 18:33:19 2015 +0000"
      },
      "message": "Force word alignment of Dex register maps.\n\nPlus some cosmetic changes.\n\nChange-Id: I45e805aa87c2ef8fe8907eaae726cd2188b54897\n"
    },
    {
      "commit": "915b9d0c13bb5091875d868fbfa551d7b65d7477",
      "tree": "63822d7081b0da33ccda2019dd52025f0ecedb35",
      "parents": [
        "bf5565a75876a84c8c2401df597d922a7870a8f2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 11 15:11:19 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 17:55:01 2015 +0000"
      },
      "message": "Tweak liveness when instructions are used in environments.\n\nInstructions remain live when debuggable, but only instructions\nwith object types remain live when non-debuggable.\n\nEnable StackVisitor::GetThisObject for optimizing.\n\nChange-Id: Id87b2cbf33a02450059acc9993995782e5f28987\n"
    },
    {
      "commit": "97d30aca68af2aa4f114a01d7a7d73e4bf009fe0",
      "tree": "e441187dfab14ffab41aff6576df6aaa14ce8b1c",
      "parents": [
        "3848c4fbc189287bca1298d45d07e21ec90c7c82",
        "b2fd7bca70b580921eebf7c45769c39d2dfd8a5a"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 12 17:00:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 12 17:00:15 2015 +0000"
      },
      "message": "Merge \"Opt compiler: Basic simplification for arithmetic operations.\""
    },
    {
      "commit": "1f49bdc50b49520c8cf45bc395cb815d591f855b",
      "tree": "b5b74c786a4bedcf5803b32d2910b84c99624748",
      "parents": [
        "63a63fc38115c415863b8b2d56b012ae3d9e00c7",
        "a2d8ec6876325e89e5d82f5dbeca59f96ced3ec1"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 12 15:44:09 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 12 15:44:10 2015 +0000"
      },
      "message": "Merge \"Compress the Dex register maps built by the optimizing compiler.\""
    },
    {
      "commit": "a2d8ec6876325e89e5d82f5dbeca59f96ced3ec1",
      "tree": "65bf174b669ff3cd9694dc5a1124fb9f2225ade1",
      "parents": [
        "39d9fe2eb3552a002c53ed41701c6faffe3cd75a"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 12 15:25:29 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 12 15:25:29 2015 +0000"
      },
      "message": "Compress the Dex register maps built by the optimizing compiler.\n\n- Replace the current list-based (fixed-size) Dex register\n  encoding in stack maps emitted by the optimizing compiler\n  with another list-based variable-size Dex register\n  encoding compressing short locations on 1 byte (3 bits for\n  the location kind, 5 bits for the value); other (large)\n  values remain encoded on 5 bytes.\n- In addition, use slot offsets instead of byte offsets to\n  encode the location of Dex registers placed in stack\n  slots at small offsets, as it enables more values to use\n  the short (1-byte wide) encoding instead of the large\n  (5-byte wide) one.\n- Rename art::DexRegisterMap::LocationKind as\n  art::DexRegisterLocation::Kind, turn it into a\n  strongly-typed enum based on a uint8_t, and extend it to\n  support new kinds (kInStackLargeOffset and\n  kConstantLargeValue).\n- Move art::DexRegisterEntry from\n  compiler/optimizing/stack_map_stream.h to\n  runtime/stack_map.h and rename it as\n  art::DexRegisterLocation.\n- Adjust art::StackMapStream,\n  art::CodeGenerator::RecordPcInfo,\n  art::CheckReferenceMapVisitor::CheckOptimizedMethod,\n  art::StackVisitor::GetVRegFromOptimizedCode, and\n  art::StackVisitor::SetVRegFromOptimizedCode.\n- Implement unaligned memory accesses in art::MemoryRegion.\n- Use them to manipulate data in Dex register maps.\n- Adjust oatdump to support the new Dex register encoding.\n- Update compiler/optimizing/stack_map_test.cc.\n\nChange-Id: Icefaa2e2b36b3c80bb1b882fe7ea2f77ba85c505\n"
    },
    {
      "commit": "e4aca0297a0c3c710c802342db025832aed9e6ab",
      "tree": "2f902b3221f08ae508a598c94606a33ecfc38545",
      "parents": [
        "bf5565a75876a84c8c2401df597d922a7870a8f2",
        "d335083828e2838bd360303be768e600275cedf5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 11:35:29 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 12 11:35:29 2015 +0000"
      },
      "message": "Merge \"Run the natural loop recognizer before building SSA.\""
    },
    {
      "commit": "d335083828e2838bd360303be768e600275cedf5",
      "tree": "f0e584e15fce5ae7ad4fb8e29c4f8f3d76ba1184",
      "parents": [
        "d304629202eec2ab053a47fc7bcf10223b5ccea4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 11:16:23 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 11:18:57 2015 +0000"
      },
      "message": "Run the natural loop recognizer before building SSA.\n\nSSA building checks the consistency of the graph when dealing\nwith dead phis.\n\nFixes continuous AOSP builds with optimizing.\n\nChange-Id: Ia9a0f0adc24a8e144e54444e090ad828b9b40040\n"
    },
    {
      "commit": "bf5565a75876a84c8c2401df597d922a7870a8f2",
      "tree": "3cb359f31e1f3080fb7cfffd5a6fd417f61753d7",
      "parents": [
        "28b87a628403c0dc10006c84b6fa009b082c5d84",
        "3ce57abd8fe50a0a772d14e033a9e7c34beff6cb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 11:06:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 12 11:06:26 2015 +0000"
      },
      "message": "Merge \"Revert \"Opt Compiler: Materialise constants that cannot be encoded\"\""
    },
    {
      "commit": "3ce57abd8fe50a0a772d14e033a9e7c34beff6cb",
      "tree": "4be0ac5a10e6fd0c1d9e52feb169e89b1f77206c",
      "parents": [
        "758c2f65805564e0c51cccaacf8307e52a9e312b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 11:06:03 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 11:06:03 2015 +0000"
      },
      "message": "Revert \"Opt Compiler: Materialise constants that cannot be encoded\"\n\nFails building the core image.\n\nThis reverts commit 758c2f65805564e0c51cccaacf8307e52a9e312b.\n\nChange-Id: Ic3ebd8a08a3d17a513d820035b430f6de4125866\n"
    },
    {
      "commit": "28b87a628403c0dc10006c84b6fa009b082c5d84",
      "tree": "0012da59f6ae7727f09b4d408c48a4cb223769d4",
      "parents": [
        "1baecb26b5cd9969b90065aeff8262d3dd6a6802",
        "4f1a384762bf49fe8f3ecae8dd2bcb0e19d044a9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 11:01:55 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 12 11:01:55 2015 +0000"
      },
      "message": "Merge \"Give an expected type to phis created for multiple returns.\""
    },
    {
      "commit": "4f1a384762bf49fe8f3ecae8dd2bcb0e19d044a9",
      "tree": "3cb359f31e1f3080fb7cfffd5a6fd417f61753d7",
      "parents": [
        "d304629202eec2ab053a47fc7bcf10223b5ccea4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 10:34:11 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 10:57:47 2015 +0000"
      },
      "message": "Give an expected type to phis created for multiple returns.\n\nWhen inlining, we used to take the type of the inlined method\nfor the phi in case of multiple returns. I recently changed the\nlogic of phi types to only be of int/float/double/ref, so we\nneed to call ToPhiType when creating the phi.\n\nChange-Id: I960067ca8a8814509c2a7c52c08387d892ebf4a3\n"
    },
    {
      "commit": "1baecb26b5cd9969b90065aeff8262d3dd6a6802",
      "tree": "e4ad5dabadaf1176c7ede5afa965de251cbc60d1",
      "parents": [
        "d304629202eec2ab053a47fc7bcf10223b5ccea4",
        "758c2f65805564e0c51cccaacf8307e52a9e312b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 10:52:05 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 12 10:52:06 2015 +0000"
      },
      "message": "Merge \"Opt Compiler: Materialise constants that cannot be encoded\""
    },
    {
      "commit": "b59dba05697b4ac6c86cb4f45c9222c9c6ad852b",
      "tree": "83cd372b86498c7a78d08be11d6e9f73d7338665",
      "parents": [
        "356286f989941ac495417195e4129aaceaf36a83"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 11 18:13:21 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 11 18:13:21 2015 +0000"
      },
      "message": "Fix a bug in the SSA builder.\n\nThe build would leave behind phis with incompatible input types\n(for example float and int). We need another dead phi run after\nthe type propagation to ensure all such phis are dead.\n\nChange-Id: I6ef1da725c7d4a1ebaf6b52dd7eb0c7bacd261b2\n"
    },
    {
      "commit": "758c2f65805564e0c51cccaacf8307e52a9e312b",
      "tree": "ec8bbbe69fa3f263dd91763fe1bef81cf090f468",
      "parents": [
        "637455782147a41fbde2e284c49ca5e02d3444c2"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Sun Feb 22 22:08:01 2015 +0000"
      },
      "committer": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Wed Mar 11 17:45:09 2015 +0000"
      },
      "message": "Opt Compiler: Materialise constants that cannot be encoded\n\nThe VIXL MacroAssembler deals gracefully with any immediate. However\nwhen the constant has multiple uses and cannot be encoded in the\ninstruction\u0027s immediate field we are better off using a register for\nthe constant and thus sharing the constant generation between multiple\nuses.\n\nEg:\n  var +\u003d #Const;    // #Const cannot be encoded.\n  var +\u003d #Const;\n\nBefore:                 After:\n  mov wip0, #Const        mov w4, #Const\n  add w0, w0, wip0        add w0, w0, w4\n  mov wip0, #Const        add w0, w0, w4\n  add w0, w0, wip0\n\nChange-Id: I8d1f620872d1241cf582fb4f3b45b5091b790146\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@arm.com\u003e\n"
    },
    {
      "commit": "b2fd7bca70b580921eebf7c45769c39d2dfd8a5a",
      "tree": "c5dae29519df73f889ba14495eb79d545cd7d6e5",
      "parents": [
        "356286f989941ac495417195e4129aaceaf36a83"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Wed Mar 11 16:48:16 2015 +0000"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Wed Mar 11 16:48:16 2015 +0000"
      },
      "message": "Opt compiler: Basic simplification for arithmetic operations.\n\nThe optimisations in this patch do not look further than the\ninputs of each operation.\n\nChange-Id: Iddd0ab6b360b9e7bb042db22086d51a31be85530\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": "3afca781086699e60a8941fb9474d4607c5909cb",
      "tree": "ea9e1c3b0dbb2180b6c4971d93849aeb265c23b1",
      "parents": [
        "21c7906e08b801f1afcb62bdd1f1763c93e5ea06"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 18:59:31 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 18:59:31 2015 +0000"
      },
      "message": "Fix tests now that the SSA builder is pruning more phis.\n\nChange-Id: I503400e7343322e31ad393d51367b404d6ed7bd8\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": "0e242b5cad3c0b68b72f28c1e5fd3fdd4c05bfd8",
      "tree": "1446f5a1ec95cf1c641228fd7dc2fecb67962723",
      "parents": [
        "7e5b740cc387645c6b2e0dc8604b1e074c398b4d",
        "154552e666347d41d95d7619c6ee56249ff4feca"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 06 16:10:31 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 06 16:10:32 2015 +0000"
      },
      "message": "Merge \"Revert \"[optimizing] Enable x86 long support.\"\""
    },
    {
      "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": "2ed20afc6a1032e9e0cf919cb8d1b2b41e147182",
      "tree": "169a7bf67d0431922896fe91db3f34a03b786ad7",
      "parents": [
        "b341b70b2418922d9b792cdba96d22bece87c55a"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Fri Mar 06 13:55:35 2015 +0000"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Fri Mar 06 14:15:57 2015 +0000"
      },
      "message": "Opt compiler: Clean the use of `virtual` and `OVERRIDE`.\n\nChange-Id: I806ec522b979334cee8f344fc95e8660c019160a\n"
    },
    {
      "commit": "b341b70b2418922d9b792cdba96d22bece87c55a",
      "tree": "143fcb9aa30dfd6f709c4b1d38f8506c164f6cb2",
      "parents": [
        "b265262780ef7384bdcd1413cde2a59f7594cec9",
        "12baf476389359d54ae04d7898190ef6f81ab0b2"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 06 11:47:03 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 06 11:47:03 2015 +0000"
      },
      "message": "Merge \"Extend compiler/optimizing/stack_map_test.cc.\""
    },
    {
      "commit": "b265262780ef7384bdcd1413cde2a59f7594cec9",
      "tree": "ded0752013a32e0a071ca508f2fd23e5287f328e",
      "parents": [
        "6626f89db7158d864c2f93d0e7682e6e6fa4b2c2",
        "b4ba354cf8d22b261205494875cc014f18587b50"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 06 11:42:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 06 11:42:26 2015 +0000"
      },
      "message": "Merge \"[optimizing] Enable x86 long support.\""
    },
    {
      "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": "df45205204125727fa71b17b3f6bb3d8eb9bc20c",
      "tree": "224b4ba87f27dfca80d119e84b5ffd2866097657",
      "parents": [
        "ea19b3696f90e07c72acb383f84305ace9b16097"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 05 15:34:41 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 05 15:47:58 2015 +0000"
      },
      "message": "ART: Fix test breakage\n\nRecent commit changed the direction of iteration over safepoints in\nthe register allocator but contained a bug that skipped some of them\nat the boundaries of interval siblings. This patch fixes the bug.\n\nChange-Id: Ia7d4892536b5198e01c9bc3034f448227794ff72\n"
    },
    {
      "commit": "12baf476389359d54ae04d7898190ef6f81ab0b2",
      "tree": "08978200d483aed50c0128e9fa241d254facb50b",
      "parents": [
        "442b46a087c389a91a0b51547ac9205058432364"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 05 12:41:42 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 05 14:44:46 2015 +0000"
      },
      "message": "Extend compiler/optimizing/stack_map_test.cc.\n\nChange-Id: I6f8c3186683210a5162cbf4f15361a4c494495c9\n"
    },
    {
      "commit": "9a9ab61ca425298f161872ed8efcf0a89b158ab2",
      "tree": "2b1ddc995cba6ab9fa9fce2b04463dd9b504307e",
      "parents": [
        "af8db2ea18135588b267fe9a0b2f7af734b906cc"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 03 10:44:24 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 05 14:27:31 2015 +0000"
      },
      "message": "ART: Optimize iteration of safepoints\n\nThe LiveInterval::Covers method is optimized for multiple calls with\nnon-decreasing positions. This patch reverts the order of iteration\nover safepoints in RegisterAllocator::ConnectSiblings to capitalize\non this effect.\n\nChange-Id: Ieb70eb9d5c0a06ee79379aab6c87cb3290c15bf7\n"
    },
    {
      "commit": "af8db2ea18135588b267fe9a0b2f7af734b906cc",
      "tree": "b8bdb820be33317f23ef1d3e43d13b2b6bfb3ba5",
      "parents": [
        "65b50272a15c52d753f68df2468fe1792f2516ea",
        "5f8741860d465410bfed495dbb5f794590d338da"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 05 11:22:00 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 05 11:22:01 2015 +0000"
      },
      "message": "Merge \"[optimizing] Use callee-save registers for x86\""
    },
    {
      "commit": "5f8741860d465410bfed495dbb5f794590d338da",
      "tree": "cf295594b5b018e96959ddf474e7c8b7374006b5",
      "parents": [
        "c670efd6ba9dbd1166bfd8c805bb6b2df7d4313a"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Wed Mar 04 15:42:45 2015 -0500"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 05 11:08:33 2015 +0000"
      },
      "message": "[optimizing] Use callee-save registers for x86\n\nAdd ESI, EDI, EBP to available registers for non-baseline mode. Ensure\nthat they aren\u0027t used when byte addressible registers are needed.\n\nChange-Id: Ie7130d4084c2ae9cfcd1e47c26eb3e5dcac1ebd6\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "b8fef11aef3732f97ef9192e14c49d4993c26e22",
      "tree": "76873271c0c93ceaae11bcee6c3b609e98ea17aa",
      "parents": [
        "c670efd6ba9dbd1166bfd8c805bb6b2df7d4313a",
        "f60c90ba8d1eee6f137a9e1a8a65e4d6bec35d6d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 04 22:17:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 04 22:17:56 2015 +0000"
      },
      "message": "Merge \"[optimizing] Improve x86/x86_64 bound check code\""
    },
    {
      "commit": "f60c90ba8d1eee6f137a9e1a8a65e4d6bec35d6d",
      "tree": "c0c41ae585ceb66c237a08e3ee8ce206920e9dee",
      "parents": [
        "ff3ef43f3d0f0986fe23286af028b352277b6e1e"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Wed Mar 04 15:12:59 2015 -0500"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Wed Mar 04 15:17:09 2015 -0500"
      },
      "message": "[optimizing] Improve x86/x86_64 bound check code\n\nDon\u0027t force a constant index into a register just to compare to the\narray size.  Allow a constant, and compare the constant to the size.\n\nChange-Id: I1c5732fbd42e63f7eac5c6219a19e9c431c22664\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "6775ba544283897c7bd0cac9e7c70c354b962a5a",
      "tree": "520d7b81f028821df0623e36fcddd95c39a05685",
      "parents": [
        "d8de6f2f6083c119a56b6d4abe537a67c070ebea"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Mar 04 12:10:34 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Mar 04 12:10:34 2015 -0800"
      },
      "message": "Fix bce gtest.\n\nChange-Id: I8b974b68bbebef704fa3c8a073f2920f8a78d1fa\n"
    },
    {
      "commit": "d8de6f2f6083c119a56b6d4abe537a67c070ebea",
      "tree": "5c911a6d55bbfb1b7da1a4cb5d4f14343e9c4784",
      "parents": [
        "dc68bafc29a457b1cc5b29a03f2ef5f2af77865d",
        "e4335eb5bcbca6927e51c10cf0de3516d94ef599"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Mar 04 19:30:50 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 04 19:30:50 2015 +0000"
      },
      "message": "Merge \"Make BCE a no-op if there is no array access.\""
    },
    {
      "commit": "de0eb6f59853f08d94fe42088d959b88f8448123",
      "tree": "f3756060991a216202201890f11cb63bfd2ec205",
      "parents": [
        "44d95a22b2d9127f9b803a70dbe00d0816e922ad"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 04 10:28:04 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 04 10:28:04 2015 +0000"
      },
      "message": "Fix arm64 build.\n\nChange-Id: Ib6babc1c6e8f2e78badc93cfcf89950e53f71bbb\n"
    },
    {
      "commit": "e4335eb5bcbca6927e51c10cf0de3516d94ef599",
      "tree": "3f69b4a17dc5d7ac5f6cab1ffee5a4091b5c9ba9",
      "parents": [
        "5e42cd3eee2c89214a331a36fe226cfcc57917a3"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Mar 02 15:14:13 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Mar 03 17:39:04 2015 -0800"
      },
      "message": "Make BCE a no-op if there is no array access.\n\nChange-Id: I8456182808c1dbaa0c0ae1b8c2e94bb17baf5f29\n"
    },
    {
      "commit": "8928cab7c1a00f38b9c9a575998093d1b4138805",
      "tree": "991a48e144df77b9afec226cc3ef8e571c1b4d6b",
      "parents": [
        "49ccb6e6e126bbb7af5e16e608e080fd07968caf"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Mar 03 16:15:23 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Mar 03 16:15:23 2015 -0800"
      },
      "message": "Add a change that should be part of \"enhance gvn for commutative ops.\"\n\nChange-Id: Id1a30afb095b2c7e27a4ef8a1ef7293022c1aaed\n"
    },
    {
      "commit": "dc5ac731f6369b53b42f1cee3404f3b3384cec34",
      "tree": "72a90f1da01185014551628078b98a79e5d5230e",
      "parents": [
        "0e5e728a4a4f042f157e1897cc8bbc2b0bb110b1"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Feb 25 11:28:05 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Mar 03 13:24:03 2015 -0800"
      },
      "message": "Opt compiler: enhance gvn for commutative ops.\n\nChange-Id: I415b50d58b30cab4ec38077be22373eb9598ec40\n"
    },
    {
      "commit": "94e917219bae3de865aab36e556a44d242e6cd77",
      "tree": "0022b521057baf0a525c470a62453aff61b84fd4",
      "parents": [
        "ea84bf7246f47693594eb5acc9a25c438289bd9f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 03 12:53:49 2015 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 03 12:53:49 2015 -0800"
      },
      "message": "Fix build lint issue.\n\nChange-Id: I53d5bdefdf79b376f99dfaa17591a0d2103921d5\n"
    },
    {
      "commit": "ea84bf7246f47693594eb5acc9a25c438289bd9f",
      "tree": "a879181a02d71f666df68576dacc456390625d9a",
      "parents": [
        "dc47e986941b1a3754447fabea272485f3f0f382",
        "57e04754d5b7fb3cc99d6b9f70da73cf4c65b416"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Mar 03 19:53:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 03 19:53:15 2015 +0000"
      },
      "message": "Merge \"bce: add support to narrow two MonotonicValueRange\u0027s at the same time.\""
    },
    {
      "commit": "d07adcf4105e206b4684315caa0c54db172f35d0",
      "tree": "7ea858397684ce92f2caffba4381ae6aa729e732",
      "parents": [
        "4b39eeea67b0fecf21588d7b00e92eb844014c24",
        "09b8463493aeb6ea2bce05f67d3457d5fcc8a7d9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 03 10:46:42 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 03 10:46:43 2015 +0000"
      },
      "message": "Merge \"[optimizing compiler] x86 goodness\""
    },
    {
      "commit": "4b39eeea67b0fecf21588d7b00e92eb844014c24",
      "tree": "10bb8bc99f7c7241efe3b3c6dd004d612aba4acc",
      "parents": [
        "87998b0a959a50dff43ce469678e84bd083279f3",
        "4559f000b323b64e4bd179b72cfb788b30b25b23"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Mar 03 00:02:26 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 03 00:02:28 2015 +0000"
      },
      "message": "Merge \"bce: handle a pattern for circular buffer\""
    },
    {
      "commit": "4559f000b323b64e4bd179b72cfb788b30b25b23",
      "tree": "00728f44d761f8663bbadc51d6d6eb67c42465ff",
      "parents": [
        "1d8587fe1d98909b4949282f14c0334085fdc964"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Feb 27 14:43:53 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Mar 02 15:45:08 2015 -0800"
      },
      "message": "bce: handle a pattern for circular buffer\n\nChange-Id: Ie54bdd7c044af58deea0d0addaaa8186cabf3532\n"
    },
    {
      "commit": "87998b0a959a50dff43ce469678e84bd083279f3",
      "tree": "34a74d0ca46fc9f4b1b74b3d5854c1622f5d6701",
      "parents": [
        "1d8587fe1d98909b4949282f14c0334085fdc964",
        "5b8e6a594b827f7dc88b2e3d895e08f5b3f22446"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Mar 02 23:16:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 02 23:16:25 2015 +0000"
      },
      "message": "Merge \"ART: Cache last returned range in LiveInterval::Covers\""
    },
    {
      "commit": "09b8463493aeb6ea2bce05f67d3457d5fcc8a7d9",
      "tree": "bc1b2eddb27143144c2ca1a7ac4a811cfaf42232",
      "parents": [
        "4ab52e75c782abf19ff9ebff8d19c87ec4ec97b6"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Feb 13 17:48:38 2015 -0500"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Mar 02 11:27:05 2015 -0500"
      },
      "message": "[optimizing compiler] x86 goodness\n\nImplement the x86 version of\nhttps://android-review.googlesource.com/#/c/129560/, which made some\nenhancements to x86_64 code.\n- Use leal to implement 3 operand adds\n- Use testl rather than cmpl to 0 for registers\n- Use leaq for x86_64 for adds with constant in int32_t range\n\nNote:\n- The range and register allocator tests seem quite fragile.  I had to\n  change ADD_INT_LIT8 to XOR_INT_LIT8 for the register allocator test to\n  get the code to run.  It seems like this is a bit hard-coded to\n  expected code generation sequences.  I also changes BuildTwoAdds to\n  BuildTwoSubs for the same reason.\n- For the live range test, I just changed the expected output, as the\n  Locations were different.\n\nChange-Id: I402f2e95ddc8be4eb0befb3dae1b29feadfa29ab\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "5b8e6a594b827f7dc88b2e3d895e08f5b3f22446",
      "tree": "80dbd414dd8ff4398fae817b64bc374b95896b7a",
      "parents": [
        "2eb5168bd9e43b80452eaee5be32c063e124886e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 25 16:17:05 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Mar 02 16:26:25 2015 +0000"
      },
      "message": "ART: Cache last returned range in LiveInterval::Covers\n\nOptimizing spends ~10% of compilation time in the register allocator.\nOne of the frequently called methods is LiveInterval::Covers which\nhas linear complexity w.r.t. the number of gaps in liveness intervals.\nThis patch leverages the fact that the register allocator calls Covers\nwith non-decreasing position values and caches the last returned\nresult to start the iteration closer to the result the next time the\nmethod is invoked. Stats from compiling the framework show that this\noptimization reduces the average number of iterations needed to find\nthe result by 40%.\n\nChange-Id: I4dd26b900879d5e1d03818ebc1e117cc6a53053c\n"
    }
  ],
  "next": "579885a26d761f5ba9550f2a1cd7f0f598c2e1e3"
}
