)]}'
{
  "log": [
    {
      "commit": "9858bf70c9af425f5f712caca7b51b49c806b271",
      "tree": "e70e88c83c8260fbea01b258d3d221cc31d38d8d",
      "parents": [
        "a79f0b5deb932aa44e227c94c4ad09082b3ab4c7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jul 08 12:34:55 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jul 08 12:34:55 2017 +0000"
      },
      "message": "Revert \"Added GVN related attributes to vector nodes.\"\n\nFails armv8 checker tests.\n\nThis reverts commit a79f0b5deb932aa44e227c94c4ad09082b3ab4c7.\n\nChange-Id: I8913743f241febbbb24c0662af76397e87e59cd1\n"
    },
    {
      "commit": "a79f0b5deb932aa44e227c94c4ad09082b3ab4c7",
      "tree": "2d16c2876f6ccbc8ca1b9f6bf7fe43523a4132e3",
      "parents": [
        "4c4d9df7c79747978d2f927994a7b3c11a079075"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jul 05 17:19:41 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jul 06 11:58:20 2017 -0700"
      },
      "message": "Added GVN related attributes to vector nodes.\n\nRationale: enables better GVNing of vector operations,\nalso pays off some technical debt by adding unit tests\nfor vector nodes.\n\nTest: test-art-host, test-art-target\n\nChange-Id: I2aa886b894bb6a0961823ae309cf8cf44984cf4a\n"
    },
    {
      "commit": "640fbdc7516a40883f219bd3c9f0e7b8a49842b4",
      "tree": "09b4ed23b6904c78ce6b1229b0b70f9a8830717f",
      "parents": [
        "4a77b1e96733be419c0cb571448e8590c803bd91",
        "2a3471fc83383bfe3e060799482e372420ba6150"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 05 10:28:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 05 10:28:20 2017 +0000"
      },
      "message": "Merge \"Disambiguate memory accesses in instruction scheduling\""
    },
    {
      "commit": "8091ed8a26db4609c719ea8d905145ddfed7f498",
      "tree": "342d4459e8e9c61af7b69fc2ac2e0512592cf9f4",
      "parents": [
        "61cfb15e2588ff1fe3c80efbfcf55973122b28cb",
        "5fa5c04ca39fb9c46bfef0e0807a18d0cd9a4ba7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 03 11:48:56 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 03 11:48:56 2017 +0000"
      },
      "message": "Merge \"MIPS: Shorten .bss string/class loads\""
    },
    {
      "commit": "e128af51eb0d1a882b9bc37cd213639d0c3a63e7",
      "tree": "cce9394c1892680e9d731df24475fca35decaf59",
      "parents": [
        "dfcf10b92330164f8af6c82c8232e85cfff1ae3c",
        "8f7c41044bdb7a36913444a3437bf2b946f7efe9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 30 18:18:06 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 30 18:18:06 2017 +0000"
      },
      "message": "Merge \"ARM: ART Vectorizer (64-bit vectors).\""
    },
    {
      "commit": "dd3240ce699129007935ba0bae4872e28652b90c",
      "tree": "305d061a33740ce48c7f027b474641017e1bab86",
      "parents": [
        "89ae0f42e38a2f985ac404830f2a05fecf9547e2",
        "8098da9cf3e3f7875546c2cd953f2337587b39db"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Jun 30 15:50:59 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 30 15:50:59 2017 +0000"
      },
      "message": "Merge \"MIPS32: MoveLocation refactoring\""
    },
    {
      "commit": "2a3471fc83383bfe3e060799482e372420ba6150",
      "tree": "7b7764521a0b67392e023f1efacc0dbae64fe675",
      "parents": [
        "89ae0f42e38a2f985ac404830f2a05fecf9547e2"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Mon May 08 18:36:40 2017 +0100"
      },
      "committer": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Fri Jun 30 16:32:54 2017 +0100"
      },
      "message": "Disambiguate memory accesses in instruction scheduling\n\nBased on aliasing information from heap location collector,\ninstruction scheduling can further eliminate side-effect\ndependencies between memory accesses to different locations,\nand perform better scheduling on memory loads and stores.\n\nPerformance improvements of this CL, measured on Cortex-A53:\n| benchmarks     | ARM64 backend | ARM backend |\n|----------------+---------------|-------------|\n| algorithm      |         0.1 % |       0.1 % |\n| benchmarksgame |         0.5 % |       1.3 % |\n| caffeinemark   |         0.0 % |       0.0 % |\n| math           |         5.1 % |       5.0 % |\n| stanford       |         1.1 % |       0.6 % |\n| testsimd       |         0.4 % |       0.1 % |\n\nCompilation time impact is negligible, because this\nheap location load store analysis is only performed\non loop basic blocks that get instruction scheduled.\n\nTest: m test-art-host\nTest: m test-art-target\nTest: 706-checker-scheduler\n\nChange-Id: I43d7003c09bfab9d3a1814715df666aea9a7360b\n"
    },
    {
      "commit": "aed3dbf9601bc1bb91142dce10a89cf5ea6a93d3",
      "tree": "03742367b4f8f6a1b6eb44effae478c6d16a6e50",
      "parents": [
        "6cb5ae065a54f08f0c8d09b41c2697b097094ce9",
        "016c0f165dc6872d22c12c239d19b094983519f1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 30 11:44:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 30 11:44:18 2017 +0000"
      },
      "message": "Merge \"Improve array index analysis in LSA.\""
    },
    {
      "commit": "8f7c41044bdb7a36913444a3437bf2b946f7efe9",
      "tree": "cdfcc8dae149617f6270198e15101b329f821ebd",
      "parents": [
        "a4811cd3496eb28295fe61057844c53793f3023e"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed Jun 21 11:21:37 2017 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Jun 30 11:52:24 2017 +0100"
      },
      "message": "ARM: ART Vectorizer (64-bit vectors).\n\nBasic vectorization support with 64-bit vector length on ARM 32-bit\nplatforms (128-bit vectors require massive changes in register\nallocator).\n\nTest: test-art-target, test-art-host\n\nChange-Id: I1d740146c3f00170fc033ae5fd69d59321ddcbf4\n"
    },
    {
      "commit": "740c3008171fe69432db8bfe4b9c837ac24b85c0",
      "tree": "ead2d10a4c0478e2e08d30a9e7de7f8f5fbb4a27",
      "parents": [
        "4aa0cf8d72386bc2bc42f437919a66ec392eca21",
        "757b26c2442ae792039bc50153bef91145f3c7b4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 30 09:12:51 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 30 09:12:51 2017 +0000"
      },
      "message": "Merge \"Add CHECKs to help diagnose a crash seen internally.\""
    },
    {
      "commit": "4aa0cf8d72386bc2bc42f437919a66ec392eca21",
      "tree": "8032373cf5073225b8d6082d98760a3a4c3f4e09",
      "parents": [
        "5f17267621174ac22ab53f02b3a5e1ee54308775",
        "c9c310487b8730fce5edfa72e79c4188629898a3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 30 09:11:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 30 09:11:55 2017 +0000"
      },
      "message": "Merge \"Turn a few DCHECK into CHECKs.\""
    },
    {
      "commit": "37dc4df47fec811ea52f7180880961565f013434",
      "tree": "eac308a6c7ef8b7d53f64889ff0a93740a2dc62a",
      "parents": [
        "76754cc816af46b41a8d1f419a38334b5db59b6e"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 28 14:08:00 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jun 29 11:20:56 2017 -0700"
      },
      "message": "Improved subscript and data dependence analysis.\n\nRationale:\nWe missed vectorizing a simple stencil operation\ndue to inaccurate unit stride analysis and failure\nto detect single runtime data dependence test.\n\nTest: test-art-host, test-art-target\nChange-Id: I07ba03455bfb1c0aff371c1244a1328f885d0916\n"
    },
    {
      "commit": "757b26c2442ae792039bc50153bef91145f3c7b4",
      "tree": "4d8798405364a51bb7dd6f2c365bfdffca26f791",
      "parents": [
        "fe9a4f061841a3c597aac6817a47c799c54fcad7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 29 16:11:41 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 29 16:13:06 2017 +0100"
      },
      "message": "Add CHECKs to help diagnose a crash seen internally.\n\nbug: 62855731\nTest: test.py\nChange-Id: I7904257174ce11a138ca769172dbc2e33e10ef76\n"
    },
    {
      "commit": "c9c310487b8730fce5edfa72e79c4188629898a3",
      "tree": "e9e72b0296b557722979b51bf9d98054c4fb1971",
      "parents": [
        "853cc56ae6a79fa9540bb49c5c95d1568d47656d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 29 14:04:16 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 29 15:04:21 2017 +0100"
      },
      "message": "Turn a few DCHECK into CHECKs.\n\nTo help diagnose b/63070152.\n\nbug: 63070152\nTest: test.py\nChange-Id: I1ac1cf9bfe1bc15ecfa94b5b8537cd3afda6fd14\n"
    },
    {
      "commit": "76754cc816af46b41a8d1f419a38334b5db59b6e",
      "tree": "9a04d4a9811c5f196b29c144875a57818e8815d9",
      "parents": [
        "3dc94c4763ecab28c0053d5d07e332c61a3f781b",
        "f57c1ae3682f95e6d7ce08ae4c241d04b09de658"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 28 22:33:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 28 22:33:32 2017 +0000"
      },
      "message": "Merge \"Prevent loop optimization in debuggable mode.\""
    },
    {
      "commit": "f57c1ae3682f95e6d7ce08ae4c241d04b09de658",
      "tree": "bf12e0e19626c28edd933fb31c5652e7f974bf1d",
      "parents": [
        "0ca1ae25d33dc8b92d9eecd585657f74cbb313e9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 28 17:40:18 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 28 21:10:13 2017 +0100"
      },
      "message": "Prevent loop optimization in debuggable mode.\n\nbug: 33775412\nTest: no scanner crash (torn on whether I should spend some time working on a smali test)\n\nChange-Id: I8b94725ce57171b592bede4bf55cd0a9626a8a10\n"
    },
    {
      "commit": "a6d098c3f4da902d6607972fcadaf57760d76d63",
      "tree": "3d0a0590183765deacb3ed812b4f4fe5b3e78cf1",
      "parents": [
        "0ca1ae25d33dc8b92d9eecd585657f74cbb313e9",
        "14a68b4aa9620e4fd58907255b049fb5c18bd1ec"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 28 16:02:59 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 28 16:02:59 2017 +0000"
      },
      "message": "Merge \"Unrolling and dynamic loop peeling framework in vectorizer.\""
    },
    {
      "commit": "8098da9cf3e3f7875546c2cd953f2337587b39db",
      "tree": "8f0b2d69f83a1de7a0bb80ce1c3f1412c429615d",
      "parents": [
        "ebd4def76f4e60e442edb8d48f43a931bc3c773e"
      ],
      "author": {
        "name": "Lena Djokic",
        "email": "Lena.Djokic@imgtec.com",
        "time": "Wed Jun 28 12:07:50 2017 +0200"
      },
      "committer": {
        "name": "Lena Djokic",
        "email": "Lena.Djokic@imgtec.com",
        "time": "Wed Jun 28 17:42:17 2017 +0200"
      },
      "message": "MIPS32: MoveLocation refactoring\n\nMove32 and Move64 are removed so MoveLocation now handles all cases.\nReason for this are 128-bit (SIMDStackSlot, VectorRegister) moves\nwhich will be added in follow-up patch.\n\nTest: mma test-art-host-gtest\nTest: ./testrunner.py --optimizing --target in QEMU\n\nChange-Id: I93496e74874f77337b11b2265aa4b470bc7c6ce2\n"
    },
    {
      "commit": "14a68b4aa9620e4fd58907255b049fb5c18bd1ec",
      "tree": "692319b6a9344d84a2e8916c388be954d8878c41",
      "parents": [
        "afdcd847498abc0f4e295bece443afabf8aaf868"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jun 08 14:06:58 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jun 27 11:29:07 2017 -0700"
      },
      "message": "Unrolling and dynamic loop peeling framework in vectorizer.\n\nRationale:\nThis CL introduces the basic framework for dynamically peeling\n(to obtain aligned access) and unrolling the vector loop (to reduce\nlooping overhead and allow more target specific optimizations\non e.g. SIMD loads and stores).\n\nNOTE:\nThe current heuristics are \"bogus\" and merely meant to exercise\nthe new framework. This CL focuses on introducing correct code for\nthe vectorizer. Heuristics and the memory computations for alignment\nare to be implemented later.\n\nTest: test-art-target, test-art-host\n\nChange-Id: I010af1475f42f92fd1daa6a967d7a85922beace8\n"
    },
    {
      "commit": "db87b28cd68d5b1705da2e4fdbe04f9182e5452a",
      "tree": "a213ee07206ff08f1ebe633f6ffc346437e41522",
      "parents": [
        "90d71886bf3c134e1fc9255a312f41b56700854a",
        "5ceac0e41bdf8d486f978c43800f493bce83f5d4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 27 11:07:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 27 11:07:23 2017 +0000"
      },
      "message": "Merge \"Don\u0027t use the graph\u0027s dex file when printing HInvoke.\""
    },
    {
      "commit": "80b99c23b09bf1c4ca49385cff15879d821aecb9",
      "tree": "ac62622ac8948fedd1572087f4c63b992154e639",
      "parents": [
        "afdcd847498abc0f4e295bece443afabf8aaf868",
        "a4b58ed1ef8dceafbffcfa88bf2c11144e302d18"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 26 18:41:42 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 26 18:41:44 2017 +0000"
      },
      "message": "Merge \"Fix static analyzer warning\""
    },
    {
      "commit": "5ceac0e41bdf8d486f978c43800f493bce83f5d4",
      "tree": "6d0f266e85405afc88ebc28b70dd09a91bb85ddb",
      "parents": [
        "d1c983a5bc3ae50eab3af405ae8a415e1f36f532"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 26 13:19:09 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 26 16:17:43 2017 +0100"
      },
      "message": "Don\u0027t use the graph\u0027s dex file when printing HInvoke.\n\nIt\u0027s not the right dex file if the invokes come from inlined\nmethods.\n\nTest: manual\nChange-Id: I4e3fb35e2bddc67510c39e12075c9a5ca0498a3a\n"
    },
    {
      "commit": "016c0f165dc6872d22c12c239d19b094983519f1",
      "tree": "bef8e9912412d02b7aa3913f2750147835454b2e",
      "parents": [
        "d1c983a5bc3ae50eab3af405ae8a415e1f36f532"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Fri May 12 18:16:31 2017 +0100"
      },
      "committer": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Mon Jun 26 11:30:39 2017 +0100"
      },
      "message": "Improve array index analysis in LSA.\n\nThis CL improves analysis on array index in load store analysis.\n\nTest: m test-art-host\nTest: m test-art-target\nTest: m test-art-host-gtest-load_store_analysis_test\n\nChange-Id: Id5e5aa8b396c68e082db95809659494107985fa2\n"
    },
    {
      "commit": "6fda42718a348cfb758d8714e223cab7e855765b",
      "tree": "d6f0f4d0c1ca2eec26a56e2aadaf00d3205b70a0",
      "parents": [
        "a0e63dfbfe2f2513a709e94b8a1ac17418396fdf"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 26 09:12:45 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 26 10:59:17 2017 +0100"
      },
      "message": "Fix braino when handling branches fallthrough in arm backend.\n\nbug: 62210114\nTest: 657-branches\nChange-Id: I753a9a57e404c792cd4375ea66c91839684bdee2\n"
    },
    {
      "commit": "a4b58ed1ef8dceafbffcfa88bf2c11144e302d18",
      "tree": "c1a931ba1bc1c710d1cdad9291c57aaa6b373597",
      "parents": [
        "b96ed2c271a56fb8be0c8f30231710095e66a201"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 22 15:47:25 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 22 15:47:25 2017 -0700"
      },
      "message": "Fix static analyzer warning\n\nnodes.cc: warning: Access to field \u0027next_\u0027 results in a dereference of a\nnull pointer (loaded from field \u0027last_instruction_\u0027)\n\nThis was split from\nhttps://android-review.googlesource.com/#/c/416101/. Please see the\ndiscussion nodes.cc (patch set 1) for why this warning is triggered.\n\nBug: 32619234\nTest: test-art-host. Rebuilt ART with the analyzer to verify that these\nissues are gone.\n\nChange-Id: Id5da00ceee0667441233153a7971d238ea8c8650\n"
    },
    {
      "commit": "1a0a519c82044ec3e6d3910ff0602b11292de47a",
      "tree": "342691a82a58ddb0660b9111622b2ff67d92f898",
      "parents": [
        "8979f71079ec18fa8d3c0915549ec03ee1fbadf5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 22 11:56:01 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 22 12:09:16 2017 +0100"
      },
      "message": "Fix loop optimization in the presence of environment uses.\n\nWe should not remove instructions that have deoptimize as\nusers, or that have environment uses in a debuggable setup.\n\nbug: 62536525\nbug: 33775412\nTest: 656-loop-deopt\nChange-Id: Iaec1a0b6e90c6a0169f18c6985f00fd8baf2dece\n"
    },
    {
      "commit": "f789353025401c1907d2264952a88f253a9af8e7",
      "tree": "9ad4c6a4eed419eb8664fd8aa6b4811d5f259f71",
      "parents": [
        "1368312bb4772a1c505452f766fdaceef4c48f6e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 15 12:34:36 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 15 14:05:08 2017 +0100"
      },
      "message": "Set the deopt flag after adjusting the stack pointer.\n\nOne should not write to something below the stack pointer, or\nit could be overwritten during an interrupt.\n\nTest: test.py\nChange-Id: Ie6c997b9f7548ca5844303d6a3fc0c531f469c6e\n"
    },
    {
      "commit": "c0fe9db1af30a162448ca5ccd386e970a8d31f83",
      "tree": "6dbb5549f249b61337f1e70f1911ea1902d2d8fa",
      "parents": [
        "53ac3130edd9c9273f95e3ba0bc5e80f6d2b3f2d",
        "82b0740f03b1a6acab4558214d3edc362e27e238"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 12 09:09:09 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 12 09:09:11 2017 +0000"
      },
      "message": "Merge \"Use IntrusiveForwardList\u003c\u003e for Env-/UsePosition.\""
    },
    {
      "commit": "13600e9cd7536b7cd8d93c32270f5f08076f5d6d",
      "tree": "3cedd3b9538afb1a7213fea02210c0e7dea6d76d",
      "parents": [
        "a74c04b3c797265ab7923d3690da6166224f3e30",
        "8fea1e18ecce190bbffbc0085f20ad49ca10a8c2"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Jun 09 21:28:37 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 09 21:28:39 2017 +0000"
      },
      "message": "Merge \"MIPS64: Min/max vectorization support\""
    },
    {
      "commit": "58794c5c23f46a7476a58e5a10dbeebb6321aa90",
      "tree": "948368dd8d8376a50fe996da0438abe10da1322d",
      "parents": [
        "73321bfdd7e96e3ce62042c9e5be567ed0db1985",
        "5678db5b3a0275d04bc610236f89fac9f76b5b1e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 09 18:00:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 09 18:00:43 2017 +0000"
      },
      "message": "Merge \"ART: Refactor bit_utils and stl_util\""
    },
    {
      "commit": "8375e4f918cd409be6155f8c7b323a203c090e7e",
      "tree": "114ef9fcdd1f14fc4e0e54b26264f0fefbf75a22",
      "parents": [
        "05ae67444e15c9281582ef1fc45c4558d286040e",
        "f45d61c0866461c9476f17644b27dc0664d507c5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 09 16:31:42 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 09 16:31:44 2017 +0000"
      },
      "message": "Merge \"ART: Fix or disable some tidy warnings.\""
    },
    {
      "commit": "f45d61c0866461c9476f17644b27dc0664d507c5",
      "tree": "95d2837a03d451cccd82cad61924980beb5fd0d4",
      "parents": [
        "83b140474aa1759739c8ee4464bf226c4fa0f6d7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 07 10:29:33 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 17:19:51 2017 -0700"
      },
      "message": "ART: Fix or disable some tidy warnings.\n\nAdd a strlcpy shim for the host, so we can use strlcpy instead of\nstrcpy everywhere.\n\nFixed warnings include unused-decls, (some) unreachable code, use\nafter std::move, string char append, leaks, (some) excessive padding.\n\nDisable some warnings we cannot or do not want to avoid.\n\nBug: 32619234\nTest: m\nTest: m test-art-host\nChange-Id: Ie191985eebb160d94b988b41735d4f0a1fa1b54e\n"
    },
    {
      "commit": "5fa5c04ca39fb9c46bfef0e0807a18d0cd9a4ba7",
      "tree": "f902c5dad2486b8372c31989ac9b917715231fa8",
      "parents": [
        "83b140474aa1759739c8ee4464bf226c4fa0f6d7"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Thu Jun 01 21:07:52 2017 -0700"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Thu Jun 08 14:39:57 2017 -0700"
      },
      "message": "MIPS: Shorten .bss string/class loads\n\nThis is a follow-up to\nhttps://android-review.googlesource.com/#/c/384033/.\n\nTest: booted MIPS64 (with 2nd arch MIPS32R6) in QEMU\nTest: testrunner.py --target --optimizing\nTest: same tests as above on CI20\nTest: booted MIPS32R2 and MIPS64 in QEMU in configurations:\n      ART_USE_READ_BARRIER\u003dfalse,\n      ART_READ_BARRIER_TYPE\u003dTABLELOOKUP\n\nChange-Id: I4cb2f4ded13c0d9fc960c7eac55396f7931c1e38\n"
    },
    {
      "commit": "5678db5b3a0275d04bc610236f89fac9f76b5b1e",
      "tree": "efc4ffe5d59a0c6c5f4c15a886459962d24de4aa",
      "parents": [
        "83b140474aa1759739c8ee4464bf226c4fa0f6d7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 14:11:18 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 14:11:18 2017 -0700"
      },
      "message": "ART: Refactor bit_utils and stl_util\n\nMove iterator code from bit_utils.h into bit_utils_iterator.h. Move\nIdentity into stl_util_identity.h. Remove now unnecessary includes,\nand fix up transitive users.\n\nTest: m\nChange-Id: Id1ce9cda66827c5d00584f39ed310b6b37629906\n"
    },
    {
      "commit": "8dfe746dc969b61416a2906bea8c176427457efc",
      "tree": "3b5d736e7ead08f176514622684f8db7f0b7e40a",
      "parents": [
        "a215c5b2bac883a57e1d35e5490241609ad22e5f"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Thu Jun 01 14:28:48 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 08 13:50:28 2017 +0000"
      },
      "message": "ARM64: Encode constants when it is possible.\n\nSmall optimization which improves HVecReplicateScalar by encoding\nimmediates directly into NEON instruction when possible instead of\ngenerating constant in GPR and transferring it into NEON register.\n\nTest: test-art-target, test-art-host.\nChange-Id: I2113bbd98c0dc8433d2b7048921b9ed7c35ef1c5\n"
    },
    {
      "commit": "6fc7c4a669d6cbf47455e0849285c428e047df10",
      "tree": "364a4c7bbcccad106dfc819abd79ba4240d2f3e7",
      "parents": [
        "4d3df9131c4098828f889b9470c82880efdc91be",
        "0eb882bfc5d260e8014c26adfda11602065aa5d8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 08 09:07:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 08 09:07:25 2017 +0000"
      },
      "message": "Merge \"Use ArtMethod* .bss entries for HInvokeStaticOrDirect.\""
    },
    {
      "commit": "3050956ebb512002dfb56d4267a457d32133435d",
      "tree": "19cc8b19e995e280f138e7cefe13359d4eaaf2b2",
      "parents": [
        "3b8bbb9927a38561fa37e38d5d9ddcf02608d60b",
        "f81621ea5a67474e6f2cb0516b606822d5843612"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 07 19:01:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 07 19:01:23 2017 +0000"
      },
      "message": "Merge \"Be less aggressive when inlining.\""
    },
    {
      "commit": "f81621ea5a67474e6f2cb0516b606822d5843612",
      "tree": "47328b81513447eba30b99357fca4f7630c6bdc8",
      "parents": [
        "85adf5a9ac401ae61cfc12a9838bd4e744459366"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 07 13:18:03 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 07 16:21:23 2017 +0100"
      },
      "message": "Be less aggressive when inlining.\n\nReduce the threshold for cumulated dex registers, to prevent\nlong and memory expensive compiles.\n\nbug: 62243120 (3d party app startup)\nbug: 36727951 (Camera startup)\nbug: 62271612 (compiler allocations)\nTest: test.py\nChange-Id: I8fd5cd7aed3c4e677f0aa15af676b959cc6ddac2\n"
    },
    {
      "commit": "0eb882bfc5d260e8014c26adfda11602065aa5d8",
      "tree": "e66dbebfb1e9a254c20954a2f2f98541aebfd5af",
      "parents": [
        "b5f5d746ac3f2c3088292395603cb1470e7749d2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 15 13:39:18 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 07 15:39:24 2017 +0100"
      },
      "message": "Use ArtMethod* .bss entries for HInvokeStaticOrDirect.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --target\nTest: Nexus 6P boots.\nTest: Build aosp_mips64-userdebug.\nBug: 30627598\nChange-Id: I0e54fdd2e91e983d475b7a04d40815ba89ae3d4f\n"
    },
    {
      "commit": "3c8a91250b3e4e87548ec16bf1ab1ea46dbb84a4",
      "tree": "b5da100b358d1335eab403372e4f616c5c2d607c",
      "parents": [
        "0a87f31513e5f9da27856af054d2241452898b22",
        "e7197bf7d58c705a048e13e241d7ca320502cd40"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 07 10:38:10 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 07 10:38:11 2017 +0000"
      },
      "message": "Merge \"Replace invoke kind kDexCacheViaMethod with kRuntimeCall.\""
    },
    {
      "commit": "8fea1e18ecce190bbffbc0085f20ad49ca10a8c2",
      "tree": "e026d33cc0928a977118faff46fdbbb50ff0967e",
      "parents": [
        "11d72c608e0565fabcf6b2d6c13fbc85c560a608"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Tue Jun 06 13:28:42 2017 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Wed Jun 07 09:45:18 2017 +0200"
      },
      "message": "MIPS64: Min/max vectorization support\n\nTest: mma test-art-host-gtest\nTest: ./testrunner.py --optimizing --target --64 in QEMU\n\nChange-Id: I60dc9c97c2b6470414fa64750e7c9824e70bfb4e\n"
    },
    {
      "commit": "6ecff4d2127e70738aa2493d6deceb946c204eff",
      "tree": "453d0b0161a609b2a69e78a326e88f2c785bc203",
      "parents": [
        "b938fe6b55532229260f88d76057cf81d71db691",
        "6e92fb33dea9846ad03bd538d02d055fa96f5240"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jun 06 20:57:04 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 06 20:57:06 2017 +0000"
      },
      "message": "Merge \"Pass through inputs beyond arguments in invoke.\""
    },
    {
      "commit": "ad58e8a25649f6cff14566b86a8ca7d0dbe22fd0",
      "tree": "a6332ec37c84f93917fb839007b48637320da5e0",
      "parents": [
        "f3b55509ab4dcc192104430fbc99c1b58a16d800",
        "f0fc4c6c9cedbd8665a2f98c4a649a62aaf3ac19"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jun 06 20:53:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 06 20:53:30 2017 +0000"
      },
      "message": "Merge \"ARM64: SIMD instruction scheduling.\""
    },
    {
      "commit": "e7197bf7d58c705a048e13e241d7ca320502cd40",
      "tree": "496032b40145660b40002b9d5b7a78f1c2eeb44f",
      "parents": [
        "4ee8e291a7d5b7b98f35f495eb97705836910871"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 17:00:23 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 06 15:26:42 2017 +0100"
      },
      "message": "Replace invoke kind kDexCacheViaMethod with kRuntimeCall.\n\nIn preparation for replacing the dex cache method array\nwith a hash-based array, get rid of one unnecessary use.\nThis method load kind is currently used only on mips for\nirreducible loops and OSR, so this should have no impact\non x86/x86-64/arm/arm64.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Repeat the above tests with manually changing\n      kDexCachePcRelative to kRuntimeCall in sharpening.cc.\n      (Ignore failures in 552-checker-sharpening.)\nBug: 30627598\nChange-Id: Ifce42645f2dcc350bbb88c2f4642e88fc5f98152\n"
    },
    {
      "commit": "f0fc4c6c9cedbd8665a2f98c4a649a62aaf3ac19",
      "tree": "bd309a5d709f30e435fa98349954ee80330ea9f9",
      "parents": [
        "cce39b5b4fc00ab9e6b4aaed1e7fa6928f0ec594"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed May 03 15:07:15 2017 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Tue Jun 06 14:09:02 2017 +0100"
      },
      "message": "ARM64: SIMD instruction scheduling.\n\nEnables scheduling for SIMD loops; the patch gives\n4.1% perf gain on Linpack benchmark.\n\nTest: test-art-target, test-art-host.\n\nChange-Id: I5e728b5218fc6640ac583594ba08f69330b01e21\n"
    },
    {
      "commit": "508fdf3eb53824f109c89f98484927085bdc43ba",
      "tree": "4ed08886adc50962b7fd46936923e29057e2fdb2",
      "parents": [
        "2ff3b97500b717f69415ae474d5cfb1613cd15ee"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 16:42:13 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 20:28:21 2017 -0700"
      },
      "message": "ART: Small class-inl.h cleanup\n\nRemove unnecessary class_linker-inl.h include, and fix up all\ntransitives (mainly gc_root-inl.h). Also clean up reference.h.\n\nTest: m test-art-host\nChange-Id: I47bd6edcfe4a23821e37a6e6fa8cca91d0d2d226\n"
    },
    {
      "commit": "6e92fb33dea9846ad03bd538d02d055fa96f5240",
      "tree": "91c359d459a99f2c7f847c2e4d73a28a681612f7",
      "parents": [
        "81c769436a89b25c781eb2da882f11fd8d11f84d"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Jun 05 14:05:09 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Jun 05 14:05:09 2017 -0700"
      },
      "message": "Pass through inputs beyond arguments in invoke.\n\nRationale:\nRefinement requested by vmarko.\n\nTest: test-art-host\nChange-Id: I850466ebd5ad99bb617bc71c279159862e18e6ec\n"
    },
    {
      "commit": "36a5d0c3c46a75381f303a0a468eaefe1ac3c982",
      "tree": "94ea290524323aedc1f0d00e233ab84207507aa2",
      "parents": [
        "0a50965275df2da590c49a7a955e6ff5a7c7d2ae",
        "19680d3655433e98582983ed0a6d44d6b4822951"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Jun 05 16:59:25 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 05 16:59:28 2017 +0000"
      },
      "message": "Merge \"MIPS64: ART Vectorizer\""
    },
    {
      "commit": "0a50965275df2da590c49a7a955e6ff5a7c7d2ae",
      "tree": "7c4b3f2ebab0abb1c13239878450dc2bf7aaca08",
      "parents": [
        "ab6393400f0dd213d335092c6e83f6a8743f00c2",
        "4ee8e291a7d5b7b98f35f495eb97705836910871"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 05 14:40:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 05 14:40:25 2017 +0000"
      },
      "message": "Merge \"Revert^3 \"ART: Reference.getReferent intrinsic for x86 and x86_64\"\""
    },
    {
      "commit": "ab6393400f0dd213d335092c6e83f6a8743f00c2",
      "tree": "43f35b71321e7b96af7ad5ddc557638e365d2f06",
      "parents": [
        "2c97600c1107931825bf9f7f25517e89b7210ab4",
        "d254f5c0d7b43397e8b8885a56ec4d36e9b61602"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 05 12:11:07 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 05 12:11:09 2017 +0000"
      },
      "message": "Merge \"Revert \"ART: Reference.getReferent intrinsic for arm and arm64\"\""
    },
    {
      "commit": "2c97600c1107931825bf9f7f25517e89b7210ab4",
      "tree": "1951ed02eaf1abac7257d22c5881366c3fe493ba",
      "parents": [
        "af8d813133af6e2988296c9cc19719a9186f4cc8",
        "847e6ce98b4b822fd94c631975763845978ebaa3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 05 09:04:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 05 09:04:21 2017 +0000"
      },
      "message": "Merge \"Rename kDexCacheViaMethod to kRuntimeCall for HLoadClass/String.\""
    },
    {
      "commit": "9f7e91ca8144383ba04405eef42dcc19768825a6",
      "tree": "06ef66bca7beada95f329c413f9c6d1bedc433b7",
      "parents": [
        "eae88fc9f114b44b6f6b0b725246227c652c975f",
        "8523ea11a677b78e1fc05915976c04b1ff081451"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Jun 02 18:11:16 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 02 18:11:18 2017 +0000"
      },
      "message": "Merge \"Fixed bug in relying on precise FP in periodic sequence.\""
    },
    {
      "commit": "8523ea11a677b78e1fc05915976c04b1ff081451",
      "tree": "249523715fbba92a524fe01725a218c695c1b19e",
      "parents": [
        "85b82e35d810a21257fec9d850d95f8abc900670"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jun 01 15:45:09 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Jun 02 08:52:13 2017 -0700"
      },
      "message": "Fixed bug in relying on precise FP in periodic sequence.\n\nRationale:\nFP arithmetic is not always precise, so relying on FP\nperiod sequences to \"compute back\" precisely is not\nvalid; when all values in the period are \"fetches\"\nhowever, the rotation is precise.\n\nBug found by fuzz testing. With regression test.\n\nBug: 62196559\nTest: test-art-host\nChange-Id: Ie8f6b965b1921ff2762b90eebb8c20503c44c6bb\n"
    },
    {
      "commit": "4ee8e291a7d5b7b98f35f495eb97705836910871",
      "tree": "90aa3ea4a0674905b0f6fdb313cab129ca112a56",
      "parents": [
        "d254f5c0d7b43397e8b8885a56ec4d36e9b61602"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 15:39:30 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 16:48:23 2017 +0100"
      },
      "message": "Revert^3 \"ART: Reference.getReferent intrinsic for x86 and x86_64\"\n\nReverting because GenerateCalleeMethodStaticOrDirectCall()\nprevents replacing kDexCacheViaMethod with kRuntimeCall\nwhere we would not retrieve the target method at all and\nleave the runtime to retrieve and call it just like for\nunresolved methods.\n\nThe intrinsic should be re-implemented by loading the\nflags through HLoadClass.\n\nNote that the intrinsic was unimplemented for CC.\n\nTest: Rely on TreeHugger.\nBug: 32535355\nBug: 30627598\n\nThis reverts commit 288c7a8664e516d7486ab85267050e676e84cc39.\n\nChange-Id: Ia22864553ff55562897571e180b11926ccd51588\n"
    },
    {
      "commit": "d254f5c0d7b43397e8b8885a56ec4d36e9b61602",
      "tree": "ef645025a42f88a2c9eb0ab9483ff519886f0a4c",
      "parents": [
        "cff1b21b3e19c5d3a2d726fdb60dacd7de2a6f0d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 15:18:36 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 16:24:33 2017 +0100"
      },
      "message": "Revert \"ART: Reference.getReferent intrinsic for arm and arm64\"\n\nReverting because GenerateCalleeMethodStaticOrDirectCall()\nprevents replacing kDexCacheViaMethod with kRuntimeCall\nwhere we would not retrieve the target method at all and\nleave the runtime to retrieve and call it just like for\nunresolved methods.\n\nThe intrinsic should be re-implemented by loading the\nflags through HLoadClass.\n\nNote that the intrinsic was unimplemented for CC and a bit\nbroken for non-CC, using LDR instead of LDRB for loading\nthe flags.\n\nTest: Rely on TreeHugger.\nBug: 32535355\nBug: 30627598\n\nThis reverts commit d8c052ac0aa3382c4807add33afa32580ffeecbb.\n\nChange-Id: I81fd14dac60c94ac543e336f4f3c888259fc8bd7\n"
    },
    {
      "commit": "b486a98aadc95d80548953410cf23edba62259fa",
      "tree": "b113b7d50a4a015502873b7742c9ece00d293e84",
      "parents": [
        "1656ca9e6996cb555b4463e5efd4bd7e3f4fb816"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 13:45:54 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 02 08:24:02 2017 -0700"
      },
      "message": "ART: Introduce thread-current-inl.h\n\nFactor out Thread::Current() code into its own -inl file to remove\ntransitive includes.\n\nThis requires at the same time correcting mutex.h, i.e., moving\nsome functions into mutex-inl.h.\n\nTest: m test-art-host\nChange-Id: I88f888b604e0897368d9b483edce6ce4332dd9c9\n"
    },
    {
      "commit": "1656ca9e6996cb555b4463e5efd4bd7e3f4fb816",
      "tree": "ba32fd86f9a39329fecd5b94cbb018383d7bd304",
      "parents": [
        "9b70b4a806096d15bf00f629c1078c126dbd626b",
        "513061a792b22c417c938d31c19581390709561c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 02 15:21:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 02 15:21:05 2017 +0000"
      },
      "message": "Merge \"ART: Clean up thread.h and thread_list.h\""
    },
    {
      "commit": "847e6ce98b4b822fd94c631975763845978ebaa3",
      "tree": "760e26dea1597d8219d8c515317d978b0213cdc1",
      "parents": [
        "cff1b21b3e19c5d3a2d726fdb60dacd7de2a6f0d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 13:55:07 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 14:03:28 2017 +0100"
      },
      "message": "Rename kDexCacheViaMethod to kRuntimeCall for HLoadClass/String.\n\nThe old name does not reflect the actual code anymore.\n\nTest: testrunner.py --host\nChange-Id: I2e13cf727bba9d901c4d3fc821bb526d38a775b8\n"
    },
    {
      "commit": "9b70b4a806096d15bf00f629c1078c126dbd626b",
      "tree": "6831c828fcbd07f49f11e3c27f8fd03b9e65fb0c",
      "parents": [
        "b4fe268625d881315002be75e6f71eb49cc6da5c",
        "ec32f6402382303608544fdac5a88067781bdec5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 02 12:44:10 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 02 12:44:12 2017 +0000"
      },
      "message": "Merge \"Delay allocating environment locations.\""
    },
    {
      "commit": "b4fe268625d881315002be75e6f71eb49cc6da5c",
      "tree": "c84337cc94daf3a5bdbc79409796ca083903e1d0",
      "parents": [
        "cff1b21b3e19c5d3a2d726fdb60dacd7de2a6f0d",
        "72a75f7d6878ef46437098a94066c14e91e00216"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 02 11:40:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 02 11:40:56 2017 +0000"
      },
      "message": "Merge \"Fix build failure in scheduler_arm with ART_USE_OLD_ARM_BACKEND\u003d1\""
    },
    {
      "commit": "ec32f6402382303608544fdac5a88067781bdec5",
      "tree": "5a8cddd783a86d3ecb9c3565e65f8fad91e93ada",
      "parents": [
        "8144b1ebea42feaa798419eaf53a6bbbf37822a9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 10:51:55 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 11:00:59 2017 +0100"
      },
      "message": "Delay allocating environment locations.\n\nMany environments are killed before we get to the register\nallocation, so the early allocation of their locations was\nsimply wasting memory. For the most expensive method of a\ncertain app, this reduces EnvLocations with 64-bit dex2oat\nfrom 8657200 to 5339712 (-3.16MiB).\n\nTest: m test-art-host\nTest: testrunner.py --host\nBug: 33650849\nChange-Id: I70a02fc3c7ec87b54a87e989e1239dc4acfcf18b\n"
    },
    {
      "commit": "72a75f7d6878ef46437098a94066c14e91e00216",
      "tree": "eb2da80bbb06f37ddf25a71dbbd0c531d760d754",
      "parents": [
        "cce39b5b4fc00ab9e6b4aaed1e7fa6928f0ec594"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Thu May 25 16:50:39 2017 +0100"
      },
      "committer": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Fri Jun 02 10:36:27 2017 +0100"
      },
      "message": "Fix build failure in scheduler_arm with ART_USE_OLD_ARM_BACKEND\u003d1\n\nTest: m ART_USE_VIXL_ARM_BACKEND\u003dtrue test-art-host\nTest: m ART_USE_VIXL_ARM_BACKEND\u003dtrue test-art-target\n\nChange-Id: Id6019ec26a9e9ffe5c0ca7eb2535f094ea009763\n"
    },
    {
      "commit": "513061a792b22c417c938d31c19581390709561c",
      "tree": "80b4fdce03711170626aa5640d07b07de4a326a1",
      "parents": [
        "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 09:17:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 12:59:13 2017 -0700"
      },
      "message": "ART: Clean up thread.h and thread_list.h\n\nRemove dependency on stack.h and gc_root.h. Remove unused object\ncallbacks include. Factor out ManagedStack into its own set of files.\nFix up users of transitive includes.\n\nTest: m test-art-host\nChange-Id: I01286c43d8c7710948c161b1348faabb05922e59\n"
    },
    {
      "commit": "82b0740f03b1a6acab4558214d3edc362e27e238",
      "tree": "c19ec7ad047fbbef0c0f4dcd46905604b75841b5",
      "parents": [
        "8144b1ebea42feaa798419eaf53a6bbbf37822a9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 01 19:02:04 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 01 20:37:10 2017 +0100"
      },
      "message": "Use IntrusiveForwardList\u003c\u003e for Env-/UsePosition.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I2b720e2ed8f96303cf80e9daa6d5278bf0c3da2f\n"
    },
    {
      "commit": "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c",
      "tree": "dc7d4952b83542a32d0bdd555b4dde5d572fc019",
      "parents": [
        "d853fe46164d2a7a4853be08dbc96e50054c8a88",
        "08556886a16ff2bb9fc3f184ac699de21c0369cd"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jun 01 17:03:09 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 01 17:03:11 2017 +0000"
      },
      "message": "Merge \"Handle gracefully profiles with invalid classes or methods\""
    },
    {
      "commit": "d853fe46164d2a7a4853be08dbc96e50054c8a88",
      "tree": "2fae5d6ee2be43265cc1a35d597e8e36433d220e",
      "parents": [
        "c174ceef1861648b6390818c051cbcef7fa56e24",
        "f044c229e12f1d49b7024ab5d7353b2d83335501"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 01 16:41:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 01 16:41:41 2017 +0000"
      },
      "message": "Merge \"Add access flag for previously warm methods\""
    },
    {
      "commit": "08556886a16ff2bb9fc3f184ac699de21c0369cd",
      "tree": "c90ddce83ac98252ced0a4181b0c4b1e0e34c1f8",
      "parents": [
        "854461a4cd5e4a38debe3616e12b52fe7f160782"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri May 26 16:40:45 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jun 01 06:54:11 2017 -0700"
      },
      "message": "Handle gracefully profiles with invalid classes or methods\n\nBug: 38410980\nTest: m test-art-host-run-test-707\nChange-Id: I8c1b0a00c113c0faf0cc5d141e67e4183322520f\n"
    },
    {
      "commit": "f044c229e12f1d49b7024ab5d7353b2d83335501",
      "tree": "010bc946819a5190b19fbf55f50bef75ef789991",
      "parents": [
        "854461a4cd5e4a38debe3616e12b52fe7f160782"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 31 15:27:54 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 31 20:46:50 2017 -0700"
      },
      "message": "Add access flag for previously warm methods\n\nWe want to know if the method was warm instead of just having a non\nzero counter. This is required if we want to not compile all of the\nstartup methods, but still compile warm methods.\n\nTest: test-art-host ART_TEST_JIT\u003dtrue\n\nBug: 62200509\n\nChange-Id: I6e04866f39f970b04b47342b7af5ed474e1f4172\n"
    },
    {
      "commit": "d49012909625c3bf87bf51138fe79315ce1b1bdc",
      "tree": "349ef2cdcb7255d042244046601bd0fd5eb3a092",
      "parents": [
        "726e1793d3f54470705e5b84e7860074e029b0ed"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 18:41:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 20:44:33 2017 -0700"
      },
      "message": "ART: Clean up heap headers\n\nUse more forward declarations for accounting structures and spaces.\nFactor out structs to reduce header surface. Remove heap include where\nunnecessary. Fix up transitive users. Move some debug-only code out\nof line.\n\nTest: m test-art-host\nChange-Id: I16db4aaa803f39e155ce6e1b0778b7e393dcbb17\n"
    },
    {
      "commit": "deae7db5864fa50c5a1cd6c232a17aeb986b36e1",
      "tree": "cdedad3d0f921e4f82fa7b65d55820455b7ac0ea",
      "parents": [
        "8d01c3708c4becb186979ed9377aed0fc2954d06"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 09:56:41 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 14:15:50 2017 -0700"
      },
      "message": "ART: Add missing namespace comments\n\nAdd closing namespace comments.\n\nBug: 32619234\nTest: m\nChange-Id: I1f50e09dcd1038c4b540b87e5c19e319c1f592e4\n"
    },
    {
      "commit": "19680d3655433e98582983ed0a6d44d6b4822951",
      "tree": "15113506e75b1480c5c1d3cfdf9df4480f30eae8",
      "parents": [
        "0a5ace58e973da278049f837bf2cdbaf7b44849c"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu May 11 10:38:36 2017 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Mon May 29 17:57:39 2017 +0200"
      },
      "message": "MIPS64: ART Vectorizer\n\nMIPS64 implementation which uses MSA extension. Also extended all\nrelevant checker tests to test MIPS64 implementation.\n\nTest: booted MIPS64R6 in QEMU\nTest: ./testrunner.py --target --optimizing -j1 in QEMU\n\nChange-Id: I8b8a2f601076bca1925e21213db8ed1d41d79b52\n"
    },
    {
      "commit": "6079dca3058e58bb9e12a60a10324a5218a99274",
      "tree": "19e3a8ccf7a8ac831c27658e0470c4f83debef74",
      "parents": [
        "0a5ace58e973da278049f837bf2cdbaf7b44849c"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Sun May 28 19:10:28 2017 -0700"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Sun May 28 20:17:39 2017 -0700"
      },
      "message": "MIPS32R2: Fix MethodLoadKind::kBootImageLinkTimePcRelative\n\nThis makes MIPS32 boot again.\n\nThe issue was introduced in commit\n6597946d29be9108e2cc51223553d3db9290a3d9:\nStatic invokes in slow paths would sometimes get\nHMipsComputeBaseMethodAddress from the stack into the\nsame register where the art method pointer would later\nbe loaded (A0) with the former being overwritten in the\nprocess of loading the latter.\n\nTest: booted MIPS32R2 in QEMU\n\nChange-Id: Ib584cf66795574175650f42b191c797fb3b3965f\n"
    },
    {
      "commit": "dbddc22f5dc2d1ff4d4783fbd66c27812f4980d1",
      "tree": "2a0a8efa1c2630e57ab48ab2de171f2847ff282f",
      "parents": [
        "a559fa1b0d6c276dde2cdc707de1acd4950f7190"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 24 12:04:13 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 25 16:59:44 2017 -0700"
      },
      "message": "Refactor profiles to use TypeReference instead of ClassReference\n\nRefactor type reference into runtime and use it for profiles.\nClassReference was just duplicated code since it wasn\u0027t even using\nthe class def indexes.\n\nTest: test-art-host\n\nBug: 62040831\nChange-Id: Ia92f21c0e85c00321f52c97bb7a90158d882849b\n"
    },
    {
      "commit": "a559fa1b0d6c276dde2cdc707de1acd4950f7190",
      "tree": "8314a003ff09cee50acd15929c1edbb8a448eef8",
      "parents": [
        "673253e1628ca9483ea121571bb9a96f90a1c944",
        "e6f87cc95e5351f3872a4c50e18915a282578ff8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 25 23:57:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 25 23:57:32 2017 +0000"
      },
      "message": "Merge \"Fix compiler crash due to inline caches and improve docs\""
    },
    {
      "commit": "e6f87cc95e5351f3872a4c50e18915a282578ff8",
      "tree": "94af0c8fb8c8926f2bf3fe20d8c3ad6d7dcc4efb",
      "parents": [
        "798ba16bda747d74a27b7a748d3bb5deb2ccbf68"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 24 17:41:05 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 25 15:09:31 2017 -0700"
      },
      "message": "Fix compiler crash due to inline caches and improve docs\n\nFix a potential crash when extracting the inline caches from the method.\nThe way we copied the inline cache into a new map was not correct. In\nProfileCompilationInfo::GetMethod() we reused the same profile arena\nfor allocation which is not thread safe. When compiling with multiple\nthreads the profile arena could become corrupted due to races.\n\nAddress all the comments from the late reviews on the CL which migrates\nthe profiles to arena storage.\n\nTest: m test-art-host\n      compile with speed-profile apps on device\nBug: 37711886\nBug: 62062532\nChange-Id: I61af5175bc68b2c7dba77afb3cdff221989cc387\n"
    },
    {
      "commit": "6dd5019cccf7016e5b1d86defb2807759c2a6e46",
      "tree": "20ee76d34e8154c9f374b749c23f57bc2ecbdc48",
      "parents": [
        "8bdf4e0d2094b7c9a9a1ffc1a58dbdff4cbe7126",
        "af44e6c5ca0169bc19c6263288a7d889b37db549"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 25 18:09:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 25 18:09:24 2017 +0000"
      },
      "message": "Merge \"Do not deopt when using AOT inline caches\""
    },
    {
      "commit": "af44e6c5ca0169bc19c6263288a7d889b37db549",
      "tree": "acdb4dab1e1ef19bfa941abae3305210d9421531",
      "parents": [
        "a39fd980000d10ee0b3a49555cc8bcbbfacde943"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 23 14:24:55 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 24 16:06:04 2017 -0700"
      },
      "message": "Do not deopt when using AOT inline caches\n\nGenerating a deopt does not ensure that we will actually capture the new\ntypes; and the danger is that we could be stuck in a loop with \"forever\"\ndeoptimizations. For example, if the method never becomes hot again, the\ninline cache will not be updated and the AOT code will keep\ndeoptimizing.\n\nThis is a compromise because we will most likely never update the inline\ncache (unless there\u0027s another reason to deopt). So we might be stuck\nwith a sub-optimal inline cache. As a TODO, we could be smarter when\ncapturing inline caches to mitigate this. (e.g. by having different\nthresholds for new and old methods).\n\nDelete test 644 which was testing a regression involving deopts which is\nno longer applicable.\n\nBug: 38412648\nTest: m test-art-host\nChange-Id: Ib84559e84f07ec976feeb3a3120fa486d5bee3bf\n"
    },
    {
      "commit": "ce38efef23c7a328efb105152bec41ee6ffa02ee",
      "tree": "67047bdec34c38261b09f506bdce4760d788c6c9",
      "parents": [
        "0abc6bbde21e7b9d9104e8698946814649e51261",
        "fd522533bf8cea5a8334f233922c39536b1a3d29"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 24 16:59:43 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 24 16:59:46 2017 +0000"
      },
      "message": "Merge \"ARM: Specify if some branches go to far targets\""
    },
    {
      "commit": "0abc6bbde21e7b9d9104e8698946814649e51261",
      "tree": "7434ce7aea5781576d143f12a8f092f5fbf1f19a",
      "parents": [
        "ec89dfa25ae9e718730d775022aef505f7363d3a",
        "304c8a5dfe92d5677e9561270b19313d3e450c59"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed May 24 15:56:36 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 24 15:56:37 2017 +0000"
      },
      "message": "Merge \"Support for narrow operands in \"dangerous\" operations.\""
    },
    {
      "commit": "304c8a5dfe92d5677e9561270b19313d3e450c59",
      "tree": "a5345d8d3467dde5f509dcc5dd0b3b170b021e60",
      "parents": [
        "14538fb50832ac20445af5a92003bc250f486c22"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue May 23 11:01:13 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed May 24 15:56:14 2017 +0000"
      },
      "message": "Support for narrow operands in \"dangerous\" operations.\n\nThis is a revert^2 of commit 636e870d55c1739e2318c2180fac349683dbfa97.\n\nRationale:\nUnder strict conditions, even operations that are sensitive\nto higher order bits can vectorize by inspecting the operands\ncarefully. This enables more vectorization, as demonstrated\nby the removal of quite a few TODOs.\n\nTest: test-art-target, test-art-host\nChange-Id: Ic2684f771d2e36df10432286198533284acaf472\n"
    },
    {
      "commit": "19d7d50c0ae23f2041b1aee4aa8a5b789e3d2020",
      "tree": "c3483c46f7c967d21dcc1ace5d0af874f82e0288",
      "parents": [
        "a4bf3c33e501758fa8e707ef30f9ee67ea20511e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 24 13:04:14 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 24 13:19:23 2017 +0100"
      },
      "message": "ARM64: Fix IsAdrpPatch().\n\nkMethodRelative patch can be an ADRP patch. Note that this\nminor bug had no real consequences as the patch would later\nbe filtered out in NeedsErratum843419Thunk() because we\ngenerate the instruction sequence ADRP+ADD in this case.\n\nAlso change the output for kDirectAddress from \"Direct\" to\n\"DirectAddress\". This kind is currently unused in checker\ntests.\n\nTest: Rely on TreeHugger.\nBug: 30627598\nChange-Id: I4e7c033aa010bbff53a554bfadd2ba0f03f69528\n"
    },
    {
      "commit": "fd522533bf8cea5a8334f233922c39536b1a3d29",
      "tree": "8394d517d43c6b0a78b053ac7fe9f7bc61f387fa",
      "parents": [
        "a4bf3c33e501758fa8e707ef30f9ee67ea20511e"
      ],
      "author": {
        "name": "Anton Kirilov",
        "email": "anton.kirilov@linaro.org",
        "time": "Wed May 10 12:46:57 2017 +0100"
      },
      "committer": {
        "name": "Anton Kirilov",
        "email": "anton.kirilov@linaro.org",
        "time": "Wed May 24 11:35:08 2017 +0100"
      },
      "message": "ARM: Specify if some branches go to far targets\n\nAlso avoids some branches to branches.\n\nTest: m test-art-target\nChange-Id: I839bcaa6ba5fba7aaa8474bee5532366ac0cc4ac\n"
    },
    {
      "commit": "3b101e4bf11c5fa2d0f3d57d2fadccdc1dcdff93",
      "tree": "4620b702ae7728245071f557bfe8f284d7be6150",
      "parents": [
        "81cbb240f86487e23409324a288f2155231e48f9",
        "f20729914d87ab30e6c96420720d8718affd587f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 24 00:14:37 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 24 00:14:37 2017 +0000"
      },
      "message": "Merge \"optimizing: Fix a potential nullptr dereference\""
    },
    {
      "commit": "f20729914d87ab30e6c96420720d8718affd587f",
      "tree": "d86efb150d9493c97cee50c2c2e9137ec7e4b309",
      "parents": [
        "14538fb50832ac20445af5a92003bc250f486c22"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue May 23 15:36:41 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue May 23 15:42:07 2017 -0700"
      },
      "message": "optimizing: Fix a potential nullptr dereference\n\nOperator precedence in C++ means the DCHECK was parsed as\nDCHECK((allocation !\u003d nullptr \u0026\u0026 allocation-\u003eIsNewInstance()) ||\n       allocation-\u003eIsNewArray())\n\nCaught by the static analyzer:\nart/compiler/optimizing/instruction_builder.cc:1004:14: warning: Called\nC++ object pointer is null [clang-analyzer-core.CallAndMessage]\n\nBug: None\nTest: Reran the static analyzer. No more nullptr complaints. m builds\nthe file fine, as well.\nChange-Id: Iad94719fc013f1883746128e066452994740f171\n"
    },
    {
      "commit": "81cbb240f86487e23409324a288f2155231e48f9",
      "tree": "2eb76fd357e42a4832e3abaf13b12987bf235bab",
      "parents": [
        "14538fb50832ac20445af5a92003bc250f486c22",
        "cc3171ab3af35b4e4ad5671d7425aa8a6bfcc5f3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 23 21:25:19 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 23 21:25:21 2017 +0000"
      },
      "message": "Merge \"Use arena allocation for profiles\""
    },
    {
      "commit": "a17d6792358ffae7323e9f4e54e1b16eda5d6e0b",
      "tree": "fb404b64c184e6ddad4eea9135e0f9b43af39824",
      "parents": [
        "4199aa0208309006cf8f37eea2c735c9364d409e",
        "6597946d29be9108e2cc51223553d3db9290a3d9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 23 10:19:48 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 23 10:19:50 2017 +0000"
      },
      "message": "Merge \"Use PC-relative pointer to boot image methods.\""
    },
    {
      "commit": "4199aa0208309006cf8f37eea2c735c9364d409e",
      "tree": "50a7721a18e9e2ac4fa793e01a13a6ec635295d7",
      "parents": [
        "1f68cb5ad8b4b41bd61d0cdd1641cacde0fc87cf",
        "c239a2bb9474a1266c4882638fdb19056370e16d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 23 08:37:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 23 08:37:41 2017 +0000"
      },
      "message": "Merge \"Create load store analysis pass\""
    },
    {
      "commit": "1f68cb5ad8b4b41bd61d0cdd1641cacde0fc87cf",
      "tree": "9afe38869cac713b36b0b31aa6a1ecbf0895c872",
      "parents": [
        "889ab40f1f2377d7291ddf9527ad9327b6b9def3",
        "9231690d586ecf45d5d9481bc5df5a5ad2628c89"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 23 08:06:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 23 08:06:30 2017 +0000"
      },
      "message": "Merge \"Revert \"Support for narrow operands in \"dangerous\" operations.\"\""
    },
    {
      "commit": "9231690d586ecf45d5d9481bc5df5a5ad2628c89",
      "tree": "d48bf8b22461f6488821be6117ff2da4cc176093",
      "parents": [
        "636e870d55c1739e2318c2180fac349683dbfa97"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 23 08:06:07 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 23 08:06:07 2017 +0000"
      },
      "message": "Revert \"Support for narrow operands in \"dangerous\" operations.\"\n\nFails on armv8 / speed-profile\n\nThis reverts commit 636e870d55c1739e2318c2180fac349683dbfa97.\n\nChange-Id: Ib2a09b3adeba994c6b095672a1e08b32d3871872\n"
    },
    {
      "commit": "cc3171ab3af35b4e4ad5671d7425aa8a6bfcc5f3",
      "tree": "ec2c8c37b4d4cb1c213aafd2e5ab41fb115fb241",
      "parents": [
        "80dd30abe3fac52f6de4aec0543918d360f7d08a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri May 19 16:47:53 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon May 22 19:00:04 2017 -0700"
      },
      "message": "Use arena allocation for profiles\n\nBy using our arena allocator we can madvise the memory used during\nprofile processing right way. jemalloc may defer the release based on\nunpredictable native allocation.\n\nThe other advantage of arenas is a much simpler way to measure the\nmemory needed by profiles.\n\nTest: m test-art-host\nTest: manual inspection with meminfo and heaptrack\nBug: 37711886\n\nChange-Id: Ib656a8ac63600477ff553831087a83dc40d9c537\n"
    },
    {
      "commit": "2cd620bde125e8cc8653f482f44f81036d3a2846",
      "tree": "04831f0437cf8963564f7ad7077782b60979ba1b",
      "parents": [
        "f14bb6c840ece68c64bebf5d0b7e0abb8c039e13",
        "636e870d55c1739e2318c2180fac349683dbfa97"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon May 22 17:52:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 22 17:52:33 2017 +0000"
      },
      "message": "Merge \"Support for narrow operands in \"dangerous\" operations.\""
    },
    {
      "commit": "6597946d29be9108e2cc51223553d3db9290a3d9",
      "tree": "cea6647a45cc59fa1423751179e647124f269990",
      "parents": [
        "a654e0378a8d0bb149362399917e4da2959e6991"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 19 17:25:12 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 22 18:35:05 2017 +0100"
      },
      "message": "Use PC-relative pointer to boot image methods.\n\nIn preparation for adding ArtMethod entries to the .bss\nsection, add direct PC-relative pointers to methods so that\nthe number of needed .bss entries for boot image is small.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --target on Nexus 6P\nTest: Nexus 6P boots.\nTest: Build aosp_mips64-userdebug\nBug: 30627598\nChange-Id: Ia89f5f9975b741ddac2816e1570077ba4b4c020f\n"
    },
    {
      "commit": "5601d4e18594885260cbf3270273e5e35b3b0e8c",
      "tree": "3a6d29895d907bc279ba6a3a3c21a2ed5c679a32",
      "parents": [
        "95c7d5b995a975723113a2ef38befb86e4bfbf45"
      ],
      "author": {
        "name": "Anton Kirilov",
        "email": "anton.kirilov@linaro.org",
        "time": "Thu May 11 19:33:50 2017 +0100"
      },
      "committer": {
        "name": "Anton Kirilov",
        "email": "anton.kirilov@linaro.org",
        "time": "Mon May 22 10:19:14 2017 +0000"
      },
      "message": "Revert \"Revert \"ARM: Improve the code generated for HCondition with a constant input\"\"\n\nThis reverts commit 3082661d260449e1d773f077e914160c7ad58de5, and\nfixes the handling of HCondition with boolean inputs.\n\nTest: m test-art-target-run-test-409-materialized-condition\nTest: art/tools/run-libcore-tests.sh\nChange-Id: Ib21e3a81ba41ce20c06e9a9e454c4322af1513ae\n"
    },
    {
      "commit": "c239a2bb9474a1266c4882638fdb19056370e16d",
      "tree": "57fc8b0ba198cc6a6db65cbf48a600c38d269890",
      "parents": [
        "80dd30abe3fac52f6de4aec0543918d360f7d08a"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Thu Apr 27 15:31:37 2017 +0100"
      },
      "committer": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Fri May 19 17:17:06 2017 +0100"
      },
      "message": "Create load store analysis pass\n\nThis CL separates load store analysis from LSE pass.\n\nThe load and store analysis in LSE pass records information\nabout heap memory accesses for arrays and fields.\nSuch information can also be used in the other optimizations like\ninstruction scheduling pass which can eliminate side-effect\ndependencies between memory accesses to different locations.\n\nTest: m test-art-host\nTest: m test-art-target\nTest: m test-art-host-gtest-load_store_analysis_test\nTest: 530-checker-lse\n\nChange-Id: I353a2b9a03b19bfa0e7ef07716d60bd4254c7ea7\n"
    },
    {
      "commit": "636e870d55c1739e2318c2180fac349683dbfa97",
      "tree": "6c726b0b918e26aba5b5f9ec1bc900045ef2c3e3",
      "parents": [
        "de31d084f7d64c94911aef927798559d39759f95"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu May 18 14:45:27 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu May 18 17:18:24 2017 -0700"
      },
      "message": "Support for narrow operands in \"dangerous\" operations.\n\nRationale:\nUnder strict conditions, even operations that are sensitive\nto higher order bits can vectorize by inspecting the operands\ncarefully. This enables more vectorization, as demonstrated\nby the removal of quite a few TODOs.\n\nTest: test-art-target, test-art-host\nChange-Id: I2b0fda6a182da9aed9ce1708a53eaf0b7e1c9146\n"
    },
    {
      "commit": "17481b5244e0cb23a5d3762cf035a2399600f715",
      "tree": "2577108fdd4168d7b972b47eadff0edfef94de19",
      "parents": [
        "015a070503c297e0327bdaee0235c7bcb6687be0",
        "5f80500bba3df590f0bfffea2ebe2adee7c40763"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 18 18:39:16 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 18 18:39:19 2017 +0000"
      },
      "message": "Merge \"Made idiom recognition more robust.\""
    },
    {
      "commit": "5f80500bba3df590f0bfffea2ebe2adee7c40763",
      "tree": "ed18a25cc6dd29acea8641069295d81c3390d88d",
      "parents": [
        "536e54a6af85127d7f17037360deb08e0a7dc4eb"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue May 16 16:42:41 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu May 18 09:30:36 2017 -0700"
      },
      "message": "Made idiom recognition more robust.\n\nRationale:\nRecognition is now more robust with respect to\noperation order or even cancelling constants.\n\nTest: test-art-target, test-art-host\nChange-Id: I4e920150e20e1453bb081e3f0ddcda8f1c605672\n"
    },
    {
      "commit": "662ee25b95a908ab063d4a8ae136ab695ea22229",
      "tree": "1b8e89a0c1ac009490dd2e8c3a6c73ae30e4bf3e",
      "parents": [
        "c1c3351492674f2e264f41d93ffc80b633726689",
        "79d8fa7c52c1810d4618c9bd1d43994be5abb53d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 18 16:03:44 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 18 16:03:47 2017 +0000"
      },
      "message": "Merge \"optimizing: Build HConstructorFence for HNewArray/HNewInstance nodes\""
    },
    {
      "commit": "79d8fa7c52c1810d4618c9bd1d43994be5abb53d",
      "tree": "411a76dec2adf4139328d5e607b498b72c9aa2af",
      "parents": [
        "acac09dad3d5aa3922e6cdf54ff2e4fa6f176484"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Apr 18 09:37:23 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu May 18 14:14:13 2017 +0000"
      },
      "message": "optimizing: Build HConstructorFence for HNewArray/HNewInstance nodes\n\nAlso fixes:\n* LSE, code_sinking to keep optimizing new-instance if it did so before\n* Various tests to expect constructor fences after new-instance\n\nSidenote: new-instance String does not get a ConstructorFence; the\nspecial StringFactory calls are assumed to be self-fencing.\n\nMetric changes on go/lem:\n* CodeSize -0.262% in ART-Compile (ARMv8)\n* RunTime -0.747% for all (linux-armv8)\n\n(No changes expected to x86, constructor fences are no-op).\n\nThe RunTime regression is temporary until art_quick_alloc_* entrypoints have their\nDMBs removed in a follow up CL.\n\nTest: art/test.py\nBug: 36656456\nChange-Id: I6a936a6e51c623e1c6b5b22eee5c3c72bebbed35\n"
    },
    {
      "commit": "c1ff6bf32443ef79b0db30b10a08efbfa92420c4",
      "tree": "99cc8c5087526008da5fe137ebc388a332c7484b",
      "parents": [
        "aad63d06328e745a7f13e812bf41676274aa8f49",
        "00916b9eb0d83f333a00d7c8b839a62aed967857"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 17 18:47:16 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 17 18:47:18 2017 +0000"
      },
      "message": "Merge \"X86: Fix LoadString/Class for non-PIC boot image.\""
    }
  ],
  "next": "00916b9eb0d83f333a00d7c8b839a62aed967857"
}
