)]}'
{
  "log": [
    {
      "commit": "dc4bccef0ded1c261bf9838def2ef329765a8682",
      "tree": "f007ff3f747ae2d1e6a20d9bd9c017b2ce191f1e",
      "parents": [
        "eebb821b1adaf2db7662fc1c3ff4e9fcfe59a694"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 21 16:15:42 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 25 11:30:07 2018 +0100"
      },
      "message": "Move image_classes_ to CompilerOptions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ifb30e071d7b39ae939fc3f83d7eba82fd077c7e8\n"
    },
    {
      "commit": "eebb821b1adaf2db7662fc1c3ff4e9fcfe59a694",
      "tree": "a3d3cf5f8c20d03fccdc0808537904da63e74938",
      "parents": [
        "7e56bd41cde4e489a11050d9e340bf8b5692d9e8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 05 14:57:24 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 21 16:12:28 2018 +0100"
      },
      "message": "Implement Integer.valueOf() intrinsic for PIC.\n\nAnd fix the intrinsic for JIT even in case when someone\nmesses up the IntegerCache using reflection. Two cases are\nexposed with a regression test (one that previously failed\nrandomly and one that failed 100%) but other crashes were\npossible; for example, we would need a read barrier for\narray reads when elements are not guaranteed to be in the\nboot image.\n\nThe new approach loads references only from the boot image\nlive objects array which cannot be touched by reflection.\nThe referenced objects and IntegerCache.cache are exposed\nand can lead to weird behavior but not crashes.\n\nOn x86, the pc_relative_fixups_86 actually checks the cache\nan additional time but discrepancies between this check and\nthe location building at the beginning of codegen should be\nOK as the HIsX86ComputeBaseMethodAddress should be added\nfor PIC regardless of whether pc_relative_fixups_86 thinks\nthe method is intrinsified or not.\n\nTest: 717-integer-value-of\nTest: Pixel 2 XL boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --pictest --npictest\nTest: testrunner.py --host --jit\nTest: testrunner.py --target --optimizing --pictest --npictest\nTest: testrunner.py --target --jit\nBug: 71526895\nChange-Id: I89b3245a62aba22980c86a99e2af480bfa250af1\n"
    },
    {
      "commit": "54159c6c6fe529a55ef3d15a3c8418362d5a43fb",
      "tree": "2ec461de8ec15383134f4c6e209f4b8a33854277",
      "parents": [
        "44217b253bf4e5990de7051129ecda34f94d7f25"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 20 14:30:08 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 21 13:46:50 2018 +0100"
      },
      "message": "Use HashSet\u003cstd::string\u003e instead of unordered_set\u003c\u003e.\n\nChange the default parameters for HashSet\u003cstd::string\u003e to\nallow passing StringPiece as a key, avoiding an unnecessary\nallocation. Use the HashSet\u003cstd::string\u003e instead of\nstd::unordered_set\u003cstd::string\u003e. Rename HashSet\u003c\u003e functions\nthat mirror std::unordered_multiset\u003c\u003e to lower-case.\n\nFix CompilerDriver::LoadImageClasses() to avoid using\ninvalidated iterator.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I7f8b82ee0b07befc5a0ee1c420b08a2068ad931e\n"
    },
    {
      "commit": "58ef29a621fb629a639b13632e7a43337901a056",
      "tree": "6ab326bef33e0600f194b8f91be2755e518660e6",
      "parents": [
        "7496a1e8055f1a5f935cbfb7148c615885826e45",
        "cf7833edafa2dbf31ec7d29b51874dba6a92ae36"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 20 13:39:08 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 20 13:39:08 2018 +0000"
      },
      "message": "Merge \"Template BitTable based on the accessors.\""
    },
    {
      "commit": "92a020670417d960597d11788ed5cb044c1770bc",
      "tree": "79feae9308472fa34c164e188c724513843e9941",
      "parents": [
        "69abc5848218b584ca3af941c9429c25bbfc2288",
        "d6750532bae8dbb072e78e410c9a1f14aa071a5b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 15 18:11:15 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 15 18:11:15 2018 +0000"
      },
      "message": "Merge \"ART: Ignore unneeded environment uses.\""
    },
    {
      "commit": "69abc5848218b584ca3af941c9429c25bbfc2288",
      "tree": "44fa3563abbd72ae1316ad313bd3febe3747ba83",
      "parents": [
        "5f7c6a1fc35e04b75e1154620c5fd0ab8758e62c",
        "4d277ba858389980525c16c4b0655ee72af5a44c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 15 17:49:26 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 15 17:49:26 2018 +0000"
      },
      "message": "Merge \"ART: Make GVN work with BoundType.\""
    },
    {
      "commit": "d6750532bae8dbb072e78e410c9a1f14aa071a5b",
      "tree": "bab48e4844d3ed54924b95f0bd1c51ccbbb464b6",
      "parents": [
        "0e3a330f4a545a6a2d352bd4a803c8387f54e76b"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed May 30 20:07:43 2018 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Jun 15 17:21:02 2018 +0100"
      },
      "message": "ART: Ignore unneeded environment uses.\n\nSome of the environment uses of primitive-typed values are\nnot really needed in non-debuggable/non-OSR methods. Ignoring\nthose uses during liveness analysis significantly reduces the\nsize of stack maps in the oat file.\n\nCode reduction on arm64:\nboot-framework.oat: -1.8%\nboot.oat:           -1.4%\n\nTest: 466-get-live-vreg, 564-checker-condition-liveness.\nTest: 639-checker-code-sinking.\nTest: angler boots to GUI.\nTest: test-art-host, test-art-target\n\nChange-Id: I91dcb6d0a8ab86f56c7b243bf9b100f69bcd5979\n"
    },
    {
      "commit": "4d277ba858389980525c16c4b0655ee72af5a44c",
      "tree": "5f8c522b1340e52a94af1d329cf069c74d1bb288",
      "parents": [
        "0e3a330f4a545a6a2d352bd4a803c8387f54e76b"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Tue Jun 05 20:54:42 2018 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Jun 15 16:37:44 2018 +0100"
      },
      "message": "ART: Make GVN work with BoundType.\n\nSupport BoundType instruction treatment in GVN.\nNote: BoundType must not be a subject to LICM as it must not be\nmoved from more control dependent basic blocks to less control\ndependent (e.g. hoisted out from the loop) due to semantics of\nbounding the type.\n\nTest: 477-checker-bound-type.\nTest: test-art-target, test-art-host.\n\nChange-Id: I64263d6ec7d9ad75d1fb07d3a89e9973be67682b\n"
    },
    {
      "commit": "cf7833edafa2dbf31ec7d29b51874dba6a92ae36",
      "tree": "47b80e86d17768fe2ca0744fe4a5ebff9f1449a6",
      "parents": [
        "45b12e704e158f29877c78bd9a8406db7e361537"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 16:45:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 17:14:45 2018 +0100"
      },
      "message": "Template BitTable based on the accessors.\n\nTest: test-art-host-gtest-stack_map_test\nTest: test-art-host-gtest-bit_table_test\nChange-Id: I96c04e21864009b64cb3177a0e9f0f8782a9b10b\n"
    },
    {
      "commit": "45b12e704e158f29877c78bd9a8406db7e361537",
      "tree": "1bfc21d88a173b4a751a37a223a39d7c12976f95",
      "parents": [
        "c9633c80c2125814a8a7459079c1931a5c201011",
        "e1402125e8363b49e176c6072893d1c110a05d2f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 13:37:36 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 14 13:37:36 2018 +0000"
      },
      "message": "Merge \"Move some helper methods to DexRegisterLocation.\""
    },
    {
      "commit": "c9633c80c2125814a8a7459079c1931a5c201011",
      "tree": "094ff8058b181f2135b67b517d1b80b7023c78ed",
      "parents": [
        "41a50f3627e4d84941aaf36d821ea8ba47750b56",
        "f325e28656b51167f29496e87926b805240052c4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 14 13:33:32 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 14 13:33:32 2018 +0000"
      },
      "message": "Merge \"Remove POD helper classes for BitTableBuilder.\""
    },
    {
      "commit": "f325e28656b51167f29496e87926b805240052c4",
      "tree": "b37117db0fa312c567fddb8d6a06df6dd0b9c052",
      "parents": [
        "50fac06c51864f293c61ff9d0983b82698cf6dac"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 13 15:02:32 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 12:41:55 2018 +0100"
      },
      "message": "Remove POD helper classes for BitTableBuilder.\n\nInstead of declaring the classes explicitly and then casting,\ncreate generic BitTableBuilder::Entry class for that purpose.\nThis removes the need to keep the POD helper classes in sync.\n\nTest: test-art-host-gtest-stack_map_test\nTest: test-art-host-gtest-bit_table_test\nChange-Id: I4c632313bafd3a4bc823648436a5310b6f2a1d13\n"
    },
    {
      "commit": "e1402125e8363b49e176c6072893d1c110a05d2f",
      "tree": "44ec055be78cdcb8086a598cbf791f8c4627e157",
      "parents": [
        "86decb6a3e3ebba8c3c67bfd25c12d9a85794f65"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 13 18:20:45 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 12:31:44 2018 +0100"
      },
      "message": "Move some helper methods to DexRegisterLocation.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I0abab008159db023d531df69214cd3bb8c0639bd\n"
    },
    {
      "commit": "60204d2f1710acdea0294eba242ecbcb01867730",
      "tree": "4154f14b139d62ddc806695b981b102e47039d46",
      "parents": [
        "7a3e7833c44e76e1e0f53104795c89c237c341f0",
        "50fac06c51864f293c61ff9d0983b82698cf6dac"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 10:01:05 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 14 10:01:05 2018 +0000"
      },
      "message": "Merge \"Add Kind column to stack maps.\""
    },
    {
      "commit": "2227fe49558c5c5fc4820acb2cf357479e74b518",
      "tree": "bbfb6546c5da802132405569d2f06b459f12a0c3",
      "parents": [
        "111b895dfaa271d8e9c32d1186615a0b73c106b5"
      ],
      "author": {
        "name": "Petre-Ionut Tudor",
        "email": "petre-ionut.tudor@linaro.org",
        "time": "Fri Apr 20 17:12:05 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 14 07:42:40 2018 +0000"
      },
      "message": "Small refactor of MIN/MAX compiler code.\n\nIntegrate instruction code generation and location creation with\nHandleBinaryOp. Code generation has been improved for constant\ninputs 0, 1 and -1.\n\nTest: 679-checker-minmax\nTest: test-art-host, test-art-target.\n\nChange-Id: Ib34eb8a4b29d22a2491d21656e1f64011ef9f986\n"
    },
    {
      "commit": "50fac06c51864f293c61ff9d0983b82698cf6dac",
      "tree": "7f7d09fa8aeacf4b5a255085af02970347a54cd0",
      "parents": [
        "86decb6a3e3ebba8c3c67bfd25c12d9a85794f65"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 13 18:55:35 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 13 19:03:09 2018 +0100"
      },
      "message": "Add Kind column to stack maps.\n\nAdd \u0027Kind\u0027 column to stack maps which marks special stack map types,\nand use it at run-time to add extra sanity checks.\n\nIt will also allow us to binary search the stack maps.\n\nThe column increases .oat file by 0.2%.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I2a9143afa0e32bb06174604ca81a64c41fed232f\n"
    },
    {
      "commit": "6fa4404f501cf0fb5a87074baec9673cedde25d4",
      "tree": "ade27385c4aa0db96956b873321a7994e69acd8d",
      "parents": [
        "1e739fa94947147953c53e92964e0e9e1eac0526"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 19 18:42:49 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 12 15:46:22 2018 +0100"
      },
      "message": "Simplify const-string.indexOf().\n\nSimplify String.indexOf() called on empty or single-char\nconstant string. We see these patterns in inlined\n    java.net.URI$Parser.scan(int, int, String, String)\ncalled with constant strings from other URI$Parser methods.\nThe empty string simplification allows constant folding\nand DCE to remove some of the code. The single-character\nstring simplification avoids entrypoint call overhead.\n\nTest: New tests in 458-checker-instruct-simplification\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I4d3c997a8d6220202d481bbf8cbf280832c27cd7\n"
    },
    {
      "commit": "74f2ccc9fad3cfd8e04d24aceba1c58ce08884dc",
      "tree": "ba0051646cb8e8192f690259475101b61101d5c3",
      "parents": [
        "9fdd0125538fe63458aec68c4a40b025759bcf7c",
        "05e34f4cb8c9db165d1008721e874b9dd3db024b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 11 15:02:44 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 11 15:02:44 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"Remove support for Valgrind in ART.\"\""
    },
    {
      "commit": "05e34f4cb8c9db165d1008721e874b9dd3db024b",
      "tree": "c41d397ef5cfb9d7918fceadcda3195a0d0d91de",
      "parents": [
        "428d80e3a49f732b39bb0c71cfde26451e3fdf4d"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 24 13:19:05 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 11 14:03:37 2018 +0100"
      },
      "message": "Revert^2 \"Remove support for Valgrind in ART.\"\n\n- Disable test configuration art-gtest-valgrind64\n  (art-gtest-valgrind32 was already disabled).\n- Remove Makefile logic regarding testing with Valgrind.\n- Remove occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_VALGRIND`.\n- Replace occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_ASAN` with\n  `TEST_DISABLED_FOR_MEMORY_TOOL`.\n- Replace the potentially dynamically evaluated\n  `RUNNING_ON_MEMORY_TOOL` expression with constant\n  `kRunningOnMemoryTool`.\n- Simplify and fold the logic of\n  `art::ArenaAllocatorMemoryToolCheckImpl` and\n  `art::ArenaAllocatorMemoryToolCheck` into\n  `art::ArenaAllocatorMemoryTool`.\n- Adjust comments regarding memory tools.\n- Remove Valgrind suppression files.\n- Remove `--callgrind` option from tools/art.\n\nThis reverts commit 8b362a87d52a6668ffd2283ef6ffc274315f41c8.\n\nChange-Id: I23c76845e6ccf766f19b22b58a0d5161f60842a9\nTest: art/test.py\nTest: art/test/testrunner/run_build_test_target.py art-asan\nBug: 77856586\nBug: 29282211\n"
    },
    {
      "commit": "b42042e6aca41ae2f23cb5cc8f5bc864595f1ac9",
      "tree": "31ade7262edb31e57e407b2aab9ab57e26546f0e",
      "parents": [
        "7643e41206279d1c22fdddff450c2d7bdd585b54",
        "4c8e12e66968929b36fac6a2237ca4b04160161e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 11 11:52:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 11 11:52:17 2018 +0000"
      },
      "message": "Merge \"ART: Adds an entrypoint for invoke-custom\""
    },
    {
      "commit": "7643e41206279d1c22fdddff450c2d7bdd585b54",
      "tree": "7ba9b3d654b721c7288208fd8b6f8e5331fa3588",
      "parents": [
        "a8822d460db2ee9c189f16589ab553e3a7751ff1",
        "96f0ec14ba78e4d869065fdcf69b33008927505c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 11 11:43:59 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 11 11:43:59 2018 +0000"
      },
      "message": "Merge \"Remove DCHECK while investigating.\""
    },
    {
      "commit": "4c8e12e66968929b36fac6a2237ca4b04160161e",
      "tree": "d8bbfd72a978c69ef2eef98c37e7869673c52295",
      "parents": [
        "20c64f8d802cc575cc9a1a1f6c493a611b23e2ee"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 18 08:33:20 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jun 11 10:57:17 2018 +0100"
      },
      "message": "ART: Adds an entrypoint for invoke-custom\n\nAdd support for the compiler to call into the runtime for\ninvoke-custom bytecodes.\n\nBug: 35337872\nTest: art/test.py --host -r -t 952\nTest: art/test.py --target --64 -r -t 952\nTest: art/test.py --target --32 -r -t 952\nChange-Id: I821432e7e5248c91b8e1d36c3112974c34171803\n"
    },
    {
      "commit": "a8822d460db2ee9c189f16589ab553e3a7751ff1",
      "tree": "d763f2193a07fe328cbbf94be00f624fa7aeacdd",
      "parents": [
        "20c64f8d802cc575cc9a1a1f6c493a611b23e2ee",
        "f75613cb7c5cda6a4603ab7041d6f98ec62a80cd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 11 09:01:01 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 11 09:01:01 2018 +0000"
      },
      "message": "Merge \"Keep objects for Integer.valueOf() intrinsic alive.\""
    },
    {
      "commit": "96f0ec14ba78e4d869065fdcf69b33008927505c",
      "tree": "7c2db50c9b598bf5da9c275dee2486cc0a50acb1",
      "parents": [
        "408bdc604e4fe230bf90ffa6816bfbbb3786806e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 08 15:30:20 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 08 15:30:20 2018 +0100"
      },
      "message": "Remove DCHECK while investigating.\n\nbug: 109666561\nTest: m\nChange-Id: Ia10990d7caeb37d23d3096b087541aac9eea0c3d\n"
    },
    {
      "commit": "cd260ebf53e0e05bd75c37c4139f32782eb4ad97",
      "tree": "dab8e9054c59c16303ab9c8aeed01edeb0bb12da",
      "parents": [
        "408bdc604e4fe230bf90ffa6816bfbbb3786806e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jun 06 09:04:17 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jun 08 14:56:10 2018 +0100"
      },
      "message": "ART: Simplify invoke-polymorphic entrypoints\n\nMoves to pattern used by the interpreter bridge and writes the result\nin both the regular return register and the floating point result\nregister.\n\nAdd return value tests to 956-method-handles.\n\nTest: art/test.py --host -r -t 956\nTest: art/test.py --target --32 -r -t 956\nTest: art/test.py --target --64 -r -t 956\nChange-Id: I7389d04b70b88e149682f6d656ab185e48bcbf66\n"
    },
    {
      "commit": "f75613cb7c5cda6a4603ab7041d6f98ec62a80cd",
      "tree": "5d253108db708da20e0bbf55a5f3d8e2f8bce4d7",
      "parents": [
        "2b40dd35c65ad644d448611750f5b577e97594a1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 05 12:51:04 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 07 14:24:02 2018 +0100"
      },
      "message": "Keep objects for Integer.valueOf() intrinsic alive.\n\nKeep boot image objects referenced by the intrinsic alive\nthrough boot image roots, so that they can never be dead as\nthe intrinsic would still be able to resurrect them later.\n\nNote that currently the GC considers all boot image objects\nlive forever. That risks leaking memory and should be fixed.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 71526895\nChange-Id: Iec25cc27e9c5c4bd3c5711991e3111bfb19ef182\n"
    },
    {
      "commit": "fd89b0739d4000ea70f28bf53dea531027024f5a",
      "tree": "1c9f3e1b046d60df405fb63f04cf83d3be4ff0f5",
      "parents": [
        "6de8833fb64e59301eada4005ed04da995796170"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 07 12:00:18 2018 +0100"
      },
      "message": "Remove unused GetDexRegisterMap arguments.\n\nThey are no longer needed in the new encoding.\n\nI reuse the local variables in most places to DCHECK the size\nof the decoded register map.  This has one catch though:\nWe sometimes omit all dex registers, so the DCHECK should be\ndone only after checking if the map is empty (if applicable).\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I94b67029842374bc8eb7c9e5eac76fc93a651f24\n"
    },
    {
      "commit": "6de8833fb64e59301eada4005ed04da995796170",
      "tree": "9f5b731ae1c0428cf5dcae4105936a7a165a43c9",
      "parents": [
        "d97e0828958fd14a962e37af2865bc2e628547ce"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:11 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 07 12:00:18 2018 +0100"
      },
      "message": "Delta-compress register maps in stack maps.\n\nThe register maps tend to be similar from stack map to stack map,\nso instead of encoding them again, store only the modified ones.\n\nThe dex register bitmap stores the delta now - if register has\nbeen modified since the previous stack map, the bit will be set.\n\nThe decoding logic scans backwards through stack maps until it\neventfully finds the most recent value of each register.\n\nThis CL saves ~2.5% of .oat file size (~10% of stackmap size).\n\nDue to the scan, this makes dex register decoding slower by factor\nof 2.5, but that still beats the old algorithm before refactoring.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Id5217a329eb757954e0c9447f38b05ec34118f84\n"
    },
    {
      "commit": "d97e0828958fd14a962e37af2865bc2e628547ce",
      "tree": "bcb4ef65fee75cd64c222a2e3bfb44da6b60ebd5",
      "parents": [
        "6e69e52a12883386f91d014324bebee867ca7877"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:24 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 06 13:14:04 2018 +0100"
      },
      "message": "Reduce code repetition in stack maps with macros.\n\nSimplifies the code somewhat.  It also makes it possible\nto get column names as strings for the debugging code.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I1a2e146e7a4372c0752693313e1b881cb4a818bc\n"
    },
    {
      "commit": "6e69e52a12883386f91d014324bebee867ca7877",
      "tree": "7d1850f0a59e4ea2d013d6d479cd616b66922970",
      "parents": [
        "6eb4d5e4bc2ce068004c1d7c85dbfff0c5efd11d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:14 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jun 05 16:50:38 2018 +0100"
      },
      "message": "Remove depth argument from InlineInfo accessors in stack maps.\n\nThe InlineInfo class actually represented a list of inlining\ninformation for a given stack map, and the depth argument was\nused everywhere to select to desired element from the list.\nThis was verbose and inconsistent with the other classes.\n\nChange the InlineInfo class to represent a single inlining,\nand select the desired depth when getting it from CodeInfo.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I35b73e6704854f0203f51d4dbdbed5b1d1cd5a3b\n"
    },
    {
      "commit": "6eb4d5e4bc2ce068004c1d7c85dbfff0c5efd11d",
      "tree": "e2d8a213a4996d94988af748175d3eb5b7694f33",
      "parents": [
        "0366f3251c3078a0161d178e3b0afd5efc4c84c0"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:20 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:20 2018 +0100"
      },
      "message": "De-duplicate inline info in stack maps.\n\nThis saves 0.3% of .oat file size.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ic7d5addf04fb9b7a2f29a7d1d99ea93b39388fd2\n"
    },
    {
      "commit": "049d68181e4862271acc027bcb0b4cf5bcc122b6",
      "tree": "0073869bb1870fd31b2d81119bdc60eba456dc5a",
      "parents": [
        "71ec1cc0665cdb9d39f4fd284d68962020417a53"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 18 14:46:49 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jun 01 13:26:48 2018 +0100"
      },
      "message": "Rewrite stackmap verification code.\n\nThe new version is more complicated but it gives much higher\nconfidence about the correctness of the stackmap encoding.\n\nThe old version was comparing the internal builder entries to the\ndecoded information, which verified the bit-level manipulations,\nbut it did not verify that we created the internal state correctly.\n\nThe new version directly compares the parameters passed to the\nStackMapStream and the decoded values. This way, it really tests\nthe whole system. It uses lambda captures to record the parameters.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ib92819cc35ce0d790128392d303f6feabd7d9c74\n"
    },
    {
      "commit": "71ec1cc0665cdb9d39f4fd284d68962020417a53",
      "tree": "8d19b11ab3e04213c46b1b12ae94dbf54b305bfb",
      "parents": [
        "03f16e4de1e3289414888fe0a5104205a781bd2f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 18 15:57:25 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jun 01 13:26:46 2018 +0100"
      },
      "message": "Rewrite dex register map encoding in stackmaps.\n\nSimplify code by encoding dex register maps using BitTables.\nThe overall design is unchanged (bitmask+indices+catalogue).\n\nThis CL saves ~0.4% of .oat file size.\n\nThe dex register map decoding is factor of 3 faster now\n(based on the time to verify the register maps on Arm).\nThis is not too surprising as the old version was O(n^2).\n\nIt also reduces compiler arena memory usage by 11% since the\nBitTableBuilder is more memory efficient, we store less\nintermediate data, and we deduplicate most data on the fly.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ib703a5ddf7f581280522d589e4a2bfebe53c26a9\n"
    },
    {
      "commit": "03f16e4de1e3289414888fe0a5104205a781bd2f",
      "tree": "4ae1434e3e8e038118d5c13fc38b80bafb900c2e",
      "parents": [
        "11c0f3e15ae0f0064a0274a369737c7b6c65681d",
        "d775f96090a588efbc837961434b10c57bcf189c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 31 15:00:40 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 31 15:00:40 2018 +0000"
      },
      "message": "Merge \"Ensure all PCs in stack_map_test are aligned.\""
    },
    {
      "commit": "a8bba7d0853b372aea3ed3ea154fb2b2a23c2c9d",
      "tree": "973a89870e0cc8912401503ebab1b709a9df5ba0",
      "parents": [
        "65e463cf7ea91003ef030c8a819ae4596c9b820f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 15:18:48 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 31 09:48:59 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify ClassLinker::FindClass(), fix 1 stale reference use.\n\nThread::CreateAnnotatedStackTrace() was using a stale\nreference `aste_array_class`.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I191907c0053456bb57de425aa6ccd9668df818a2\n"
    },
    {
      "commit": "d775f96090a588efbc837961434b10c57bcf189c",
      "tree": "ff3817dabd3f00450643b13e6b87bdb363fed5d7",
      "parents": [
        "f5fc6bcdd98f50807756347ac19e8565bce3b6b5"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 18:12:52 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 22:52:01 2018 +0000"
      },
      "message": "Ensure all PCs in stack_map_test are aligned.\n\nIt is invalid to try to encode improperly aligned PC.\n\nTest: test-art-target-gtest-stack_map_test\nChange-Id: I73e7b6225bfee87b0d6161298e19648ee6e1d499\n"
    },
    {
      "commit": "21d45b4f4ef3661ac33d622aaac5dd6d2ce7deb8",
      "tree": "121e046a949025bca4d766fdfdc5ea58e4ea4a10",
      "parents": [
        "d02b23f7ee9664213216a82bfdcb0ee83824de04"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 06:35:05 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 17:59:24 2018 +0100"
      },
      "message": "Simplify DexRegisterMap API.\n\nStore some of the needed decoding state explicitly to avoid passing it\naround all the time. The DexRegisterMap class is rewritten in next CL.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ie268dff2a1c1da2e08f0e6799ae51c30e11f350b\n"
    },
    {
      "commit": "d02b23f7ee9664213216a82bfdcb0ee83824de04",
      "tree": "254b794533a6821c2ed2df31fab807abf7d508a4",
      "parents": [
        "08231f6cb3095a7dbde29299a7da5413a5f992e4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue May 29 23:27:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 17:59:24 2018 +0100"
      },
      "message": "Remove the CodeOffset helper class.\n\nI need to reduce the StackMapEntry to a POD type so that it\ncan be used in BitTableBuilder.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I5f9ad7fdc9c9405f22669a11aea14f925ef06ef7\n"
    },
    {
      "commit": "08231f6cb3095a7dbde29299a7da5413a5f992e4",
      "tree": "d7cc4595bd633b3f5e7ade454d405a57468f3e77",
      "parents": [
        "750cf88c8872983ae13259131cb2ed377e3eadff",
        "4b59d107f91601c4e0095d7a9db40970d4ed6956"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 30 16:21:15 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 30 16:21:15 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"Optimize register mask and stack mask in stack maps.\"\""
    },
    {
      "commit": "4b59d107f91601c4e0095d7a9db40970d4ed6956",
      "tree": "b120add4870b86cefc308ec3a0100851cfc1a4c0",
      "parents": [
        "da4ff8bfcf03d6186b7d21c7bd8b90248f7b2f96"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue May 29 21:46:10 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 14:32:44 2018 +0100"
      },
      "message": "Revert^2 \"Optimize register mask and stack mask in stack maps.\"\n\nThis reverts commit 8b20b5c1f5b454b2f8b8bff492c88724b5002600.\n\nReason for revert: Retry submit unmodified after fixing the test.\n\nUse BitTable to store the masks as well and move the\ndeduplication responsibility to the BitTable builders.\n\nDon\u0027t generate entries for masks which are all zeros.\nThis saves 0.2% of .oat file size on both Arm64 and Arm.\n\nEncode registers as (value+shift) due to tailing zeros.\nThis saves 1.0% of .oat file size on Arm64 and 0.2% on Arm.\n\nTest: test-art-target-gtest-exception_test\nTest: test-art-host-gtest-bit_table_test\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ib643776dbec3f051cc29cd13ff39e453fab5fae9\n"
    },
    {
      "commit": "5924a4a73f1a2dcf83877062d67c297a9496b326",
      "tree": "3517a1809ecbdc85533e1a8c5a0a9610cdc36005",
      "parents": [
        "2cffc5d2807096c0b7a07b89f5dda6920c6429f5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 29 17:40:41 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 12:50:37 2018 +0100"
      },
      "message": "Move String::SizeOf\u003c\u003e to string.h .\n\nstring.h was already indirectly (through class.h) including\neverything needed for String::SizeOf\u003c\u003e, so move it to the\nstring.h and make those includes direct. Then we can change\nthe object-inl.h to include only string.h, reducing the\nnumber of indirectly included files.\n\nTest: m test-art-host-gtest\nTest: m testrunner.py --host --optimizing\nChange-Id: I51c462c034f205498c539abe6d888be9738d4a6e\n"
    },
    {
      "commit": "8b20b5c1f5b454b2f8b8bff492c88724b5002600",
      "tree": "51bea8ddfff23b1f6b0323eaeacf42e6f6199015",
      "parents": [
        "ffaf87a429766ed80e6afee5bebea93db539620b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 29 15:32:55 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 29 15:32:55 2018 +0000"
      },
      "message": "Revert \"Optimize register mask and stack mask in stack maps.\"\n\nThis reverts commit ffaf87a429766ed80e6afee5bebea93db539620b.\n\nReason for revert: Breaks exception_test32 on target\nfor CMS and heap poisoning configs.\n\nChange-Id: I127c17f693e28211a799f73a50e73105edee7e4c\n"
    },
    {
      "commit": "ffaf87a429766ed80e6afee5bebea93db539620b",
      "tree": "d79637f4b6a564facf4b837c3ff125bb3755594e",
      "parents": [
        "5513c2b68a08109a5bfd811c7b2c8bbc66244e8e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 23 14:44:39 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 28 08:45:37 2018 +0100"
      },
      "message": "Optimize register mask and stack mask in stack maps.\n\nUse BitTable to store the masks as well and move the\ndeduplication responsibility to the BitTable builders.\n\nDon\u0027t generate entries for masks which are all zeros.\nThis saves 0.2% of .oat file size on both Arm64 and Arm.\n\nEncode registers as (value+shift) due to tailing zeros.\nThis saves 1.0% of .oat file size on Arm64 and 0.2% on Arm.\n\nTest: test-art-host-gtest\nChange-Id: I636b7edd49e10e8afc9f2aa385b5980f7ee0e1f1\n"
    },
    {
      "commit": "4b62244e252c9790dd95edddd34b0c2899b48a0c",
      "tree": "6ef42bd495242c0e902b260c64c7deb246bf5385",
      "parents": [
        "2c2e723f1b8aaec35fdf0c4f603e23d8ebd54cbb",
        "dd966bc5b30aac068ee25d8f9bdb18a53904e312"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat May 26 08:31:36 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat May 26 08:31:36 2018 +0000"
      },
      "message": "Merge \"Change the BitTableBuilder API to be POD based.\""
    },
    {
      "commit": "dd966bc5b30aac068ee25d8f9bdb18a53904e312",
      "tree": "d8cc9a393e2e6a86fa5b92b0497706c2d5639dfc",
      "parents": [
        "64e8175b611df79b617892435a26fb2db67bfa85"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 24 13:55:52 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 25 16:17:09 2018 +0100"
      },
      "message": "Change the BitTableBuilder API to be POD based.\n\nThe compiler has two copies of all stack map intermediate data\nin memory at the same time at the moment.\n\nChange the BitTableBuilder so that it will be able to store\nthe intermediate data directly (e.g. StackMapEntry), and thus\nwe can save the space, and can avoid the copying code complexity.\n\nIt will also make it possible to deduplicate data as we go,\nthus saving further memory and code complexity.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I660fddf0629422ae0d2588333854d8fdf1e1bd0f\n"
    },
    {
      "commit": "a326807d1ac1e37798c928911777c9d7c1d7ab4d",
      "tree": "d1d60c9c0ded7b8c99977c19830225218d55ff3e",
      "parents": [
        "8967547e8d27e63332839540a8b0f53f0d95b46c",
        "c7aa87e1666ac48ddf9149cfdfd64b026b3969e5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 12:43:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 25 12:43:17 2018 +0000"
      },
      "message": "Merge changes Iaf172f37,I15a8ade7,Icbc6b62b\n\n* changes:\n  Remove static_class_ from Method/VarHandle and CallSite.\n  Remove PrimitiveArray\u003cT\u003e::array_class_.\n  Refactor ClassRoot/GetClassRoot().\n"
    },
    {
      "commit": "b4eb1b19e1dd35d12a408358656c1421f507d231",
      "tree": "03ba65d206b5e6222dcca0f62a973bcbb1bf8a50",
      "parents": [
        "ff7ff426e136aa8fd6e33d873f6259311982f6bb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 24 11:09:38 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 11:32:31 2018 +0100"
      },
      "message": "Refactor ClassRoot/GetClassRoot().\n\nMove it outside the ClassLinker, into its own header file,\nand add retrieval based on a mirror class template argument.\nKeep the SetClassRoot() as a private member of ClassLinker.\n\nMake the new GetClassRoot()s return ObjPtr\u003c\u003e.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Icbc6b62b41f6ffd65b437297a21eadbb0454e2b7\n"
    },
    {
      "commit": "ca210e34eac5b262a85c05e8815ab266f7f983d2",
      "tree": "b4bcbb77cc00c62b62b4c84541c40daadb89f3fe",
      "parents": [
        "e46752658eaf41c0cc818c51a3e1cd95876bac93"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Dec 15 13:43:20 2017 +0000"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Thu May 24 18:13:31 2018 +0100"
      },
      "message": "ART: SBC: Support single exit loops with live_outs.\n\nSupport copying subgraphs with a single exit and live-outs -\nvalues which are defined inside the subgraph and have uses outside.\n\nTest: test-art-target, test-art-host.\nTest: 530-checker-peel-unroll.\n\nChange-Id: Id06a6f08d14c6e86f6437d662e24489f955e9edf\n"
    },
    {
      "commit": "8467030520beb718f3c648678eed4328254d6307",
      "tree": "3afeff6228ed297f6395a331875ff1c5c99cc179",
      "parents": [
        "223b8dc552cbf65356162aa6bc581c850c1a6441",
        "cf43fb6a1e676cc6bbc04c6591640f18643b1839"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 24 11:02:52 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 24 11:02:52 2018 +0000"
      },
      "message": "Merge \"ART: Enable scalar loop peeling and unrolling.\""
    },
    {
      "commit": "197f1ef6f4f2411d011d7e8f696775c3fbcffd86",
      "tree": "eacc720024479e75b03d12ac6764f2cd2ba945b3",
      "parents": [
        "04f0eaffa70e0384c07bb3680aa0724144358330",
        "8b362a87d52a6668ffd2283ef6ffc274315f41c8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 22 23:00:40 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 23:00:40 2018 +0000"
      },
      "message": "Merge \"Revert \"Remove support for Valgrind in ART.\"\""
    },
    {
      "commit": "8b362a87d52a6668ffd2283ef6ffc274315f41c8",
      "tree": "14b187cd0b4afde501b9cc7a9dc82c997362e888",
      "parents": [
        "8268cb677bd92bfbcfec7e803775c29687494e53"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 22 20:54:14 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 22 20:54:14 2018 +0000"
      },
      "message": "Revert \"Remove support for Valgrind in ART.\"\n\nThis reverts commit 8268cb677bd92bfbcfec7e803775c29687494e53.\n\nReason for revert: ASAN failures\n\nChange-Id: I7e66d3f3fb461ae4f6dea6ec7d506b7dface3402\nTest: SANITIZE_HOST\u003daddress m test-art-host\nBug: 77856586\nBug: 29282211\n"
    },
    {
      "commit": "f31343f1eab771010b3f293366149d2524f30902",
      "tree": "5187b2bceee4c7d5347750dc6ba0020172d5ef51",
      "parents": [
        "e816389b61d17b9a82d8e61426ddfcce20e1238c",
        "8268cb677bd92bfbcfec7e803775c29687494e53"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue May 22 16:46:43 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 16:46:43 2018 +0000"
      },
      "message": "Merge \"Remove support for Valgrind in ART.\""
    },
    {
      "commit": "e816389b61d17b9a82d8e61426ddfcce20e1238c",
      "tree": "689c338b4e659287b9697aa04d5f9c0c9c4f6f5f",
      "parents": [
        "d352156dfeadc72fda186ef8dcbeea4d06eee509",
        "4dc09e7261dede72d916059d1f751a48cd08dbb5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 22 16:34:23 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 16:34:23 2018 +0000"
      },
      "message": "Merge \"LSE improvement: better singleton array optimization\""
    },
    {
      "commit": "d352156dfeadc72fda186ef8dcbeea4d06eee509",
      "tree": "64ff7c025cacac290e21beea27ef6533e4f04d79",
      "parents": [
        "cbe50e965be5bcc7e9e0bba8b52a9b1adb7c291f",
        "d3083dd15af1cb4ffc13d87a7d2c3be2edb9199d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 15:33:35 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 15:33:35 2018 +0000"
      },
      "message": "Merge \"Refactor runtime callee save frame info.\""
    },
    {
      "commit": "d3083dd15af1cb4ffc13d87a7d2c3be2edb9199d",
      "tree": "88dd2599ad89da5a4f2668a2c9debd0335669cd0",
      "parents": [
        "6623bc389c43efc87668ce7465e19b195e765e22"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 17 08:43:47 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 14:38:14 2018 +0100"
      },
      "message": "Refactor runtime callee save frame info.\n\nAnd avoid storing the info in Runtime.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing --jit\nChange-Id: Ib14853fc06c420753993e1f9e82a1b01f5e35e8c\n"
    },
    {
      "commit": "64e8175b611df79b617892435a26fb2db67bfa85",
      "tree": "3d701089e737eeaac6b49d05033bf8a2160e1db2",
      "parents": [
        "dd5f539e390b3d1b3a77f263a0dbf019489aded3",
        "052f8ca1776ed7deb4f036498edd69eb6a1b942f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue May 22 10:35:15 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 10:35:15 2018 +0000"
      },
      "message": "Merge \"Rewrite stackmap encoding code.\""
    },
    {
      "commit": "4fe708c211c8367bae104616269ce62eb5465291",
      "tree": "652e761957804c7dbafb7e3356fee1c5aa1b4b01",
      "parents": [
        "84190220df62fb25c4e4b637624c81c918e3b84a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 21 20:31:24 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 21 20:47:03 2018 +0100"
      },
      "message": "Remove \"stack_map.h\" include from code_generator.\n\nIt is not needed and it increases header dependencies.\n\nTest: Build\nChange-Id: I51fcef5025defe5e4185e9c4fde18b363194789e\n"
    },
    {
      "commit": "052f8ca1776ed7deb4f036498edd69eb6a1b942f",
      "tree": "ae993f1a634b258e124df12663a1d24859917b05",
      "parents": [
        "1c515f0b9d621869a2e67ce5e0f5532d0f2f323a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 26 15:42:54 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 21 20:28:41 2018 +0100"
      },
      "message": "Rewrite stackmap encoding code.\n\nRemove most of the code related to handling of bit encodings.\nThe design is still same; the encodings are just more implicit.\nMost of the complexity is replaced with a single BitTable class,\nwhich is a generic purpose table of tightly bit-packed integers.\nIt has its own header which stores the bit-encoding of columns,\nand that removes the need to handle the encodings explicitly.\n\nOther classes, like StackMap, are accessors into the BitTable,\nwith named getter methods for the individual columns.\n\nThis CL saves ~1% of .oat file size (~4% of stackmap size).\n\nTest: test-art-host-gtest\nChange-Id: I7e92683753b0cc376300e3b23d892feac3670890\n"
    },
    {
      "commit": "1c515f0b9d621869a2e67ce5e0f5532d0f2f323a",
      "tree": "35e317ed3e16fede8d96f843a7b8b7b2f82bd764",
      "parents": [
        "e937c045a50b414411db058d32d8f689fb596e2e",
        "2c5827a67a7f3d307384e98757f91c8b5d49f94f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 21 12:29:26 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 21 12:29:26 2018 +0000"
      },
      "message": "Merge \"ART: Simplify operands in InstructionBuilder\""
    },
    {
      "commit": "2c5827a67a7f3d307384e98757f91c8b5d49f94f",
      "tree": "12d13e0e5c321639ca21d53eae61cfcaf3231c2d",
      "parents": [
        "80a7c29b29c50c1c6cf40093a4552dacd4c5d638"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 17 22:26:08 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 21 11:31:43 2018 +0100"
      },
      "message": "ART: Simplify operands in InstructionBuilder\n\nTest: art/test.py --host --optimizing --jit -r\nChange-Id: Ia408ae00637aa6a05a3ba54e1144ea00c6b335b5\n"
    },
    {
      "commit": "68fefacc54b9d918a5b17b99ac7e72421d1b1f94",
      "tree": "39cccda109a63153ca363e592b5570b46e6dece9",
      "parents": [
        "b2683cb0ae69c9a8a0ba654f50fa743a9117171c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 10 17:49:33 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 21 09:28:22 2018 +0000"
      },
      "message": "Move and rewrite bit loading/storing methods.\n\nMove bit loading/storing methods to BitMemoryRegion and rewrite them.\n\nEnforce natural alignment of the data pointer in BitMemoryRegion.\nThis probably would not be reasonable in MemoryRegion, but it is\nfine here since the BitMemoryRegion already has extra bit offset.\nThe alignment makes it possible to simplify and optimize the methods.\n\nThis makes the stackmap reading code 33% faster.\n(measured by the time needed to verify all stackmap fields on ARM).\n\nTest: m -j40 test-art-host-gtest\nChange-Id: I00be8052969a6056b262df4cd2066ffd86043196\n"
    },
    {
      "commit": "4dc09e7261dede72d916059d1f751a48cd08dbb5",
      "tree": "8a04828754b8da25db0b9101021b5bf0880a450b",
      "parents": [
        "e57a82bd25aa09ca9ad35cb2cb54242d7028f9a0"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri May 11 14:40:31 2018 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri May 18 11:15:23 2018 -0700"
      },
      "message": "LSE improvement: better singleton array optimization\n\nRationale:\nIn a recent LSA/LSE refactoring, we removed the \"exceptional\"\nsituation on mismatched arrays from the load-elimination branch\nfor merged values. As a direct result, we can relax the condition\non removing stores for singleton arrays into return blocks a bit,\nas done in this CL (and shown with some tests).\n\nTest: test-art-host,target\n\nBug: b/77906240\n\nChange-Id: I32c89057168730f82d1d7c41155a9ff71b126204\n"
    },
    {
      "commit": "e57a82bd25aa09ca9ad35cb2cb54242d7028f9a0",
      "tree": "1876393ccec2bd7f3d6ee9d98c412dd64060e238",
      "parents": [
        "064dfe4f9b68484557bfcc0589dc632c2a27770a",
        "b765a3f7f7b7c7efaab5fb331796b53439dbe04c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 18 18:05:26 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 18 18:05:26 2018 +0000"
      },
      "message": "Merge \"Refactoring LSE/LSA: introduce heap location type\""
    },
    {
      "commit": "cb2187c626828f5cefc0082a4df392ed7e1214e3",
      "tree": "9325c92f0520f3ecc8652335ff545d6ab800da8e",
      "parents": [
        "bb071ee44ddc1751c79d2a8c31afe4ea3d72b5f4",
        "d147e2fb824a92acb9cd86bd92d3f1c137d488c5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 17 08:14:11 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 17 08:14:11 2018 +0000"
      },
      "message": "Merge \"Don\u0027t compile methods with irreducible loops and String.\u003cinit\u003e.\""
    },
    {
      "commit": "d147e2fb824a92acb9cd86bd92d3f1c137d488c5",
      "tree": "ff228859971532ed6cc8f49baf387fa957fa923f",
      "parents": [
        "4972754f2327dc9c443f2c0c70e5a6528973c435"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 16 11:37:41 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 16 13:50:29 2018 +0100"
      },
      "message": "Don\u0027t compile methods with irreducible loops and String.\u003cinit\u003e.\n\nThe current code doesn\u0027t work when dex register aliases.\n\nbug: 78493232\nTest: m\nChange-Id: I1c296f6dc914388844ae5eb7d84f3bd7d81e1f87\n"
    },
    {
      "commit": "b765a3f7f7b7c7efaab5fb331796b53439dbe04c",
      "tree": "feba405a8f483f2dcf14ceab0528848f24468e91",
      "parents": [
        "487ad46b7ee79eb4a03d3560072c309280069c04"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu May 10 14:47:48 2018 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue May 15 13:23:29 2018 -0700"
      },
      "message": "Refactoring LSE/LSA: introduce heap location type\n\nRationale:\nThis refactoring introduces data types to heap locations.\nThis will allow better type disambiguation in the future.\nAs a first showcase, it already removes rather error-prone\n\"exceptional\" code in LSE dealing with array types on null\nvalues. Furthermore, many LSA specific details started to \"leak\"\ninto clients, which is also error-prone. This refactoring moves\nsuch details back into just LSA, where it belongs.\n\nTest: test-art-host,target\n\nBug: b/77906240\n\nChange-Id: Id327bbe86dde451a942c9c5f9e83054c36241882\n"
    },
    {
      "commit": "cf43fb6a1e676cc6bbc04c6591640f18643b1839",
      "tree": "2573ba1024307763c54df655333f1e2477d0ea82",
      "parents": [
        "9076eb66ad173933d7fbd5ce328d31c7f97fd202"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Thu Feb 15 14:43:48 2018 +0000"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Tue May 15 19:33:45 2018 +0100"
      },
      "message": "ART: Enable scalar loop peeling and unrolling.\n\nTurn on scalar loop peeling and unrolling by default.\n\nTest: 482-checker-loop-back-edge-use, 530-checker-peel-unroll\nTest: test-art-host, test-art-target, boot-to-gui\nChange-Id: Ibfe1b54f790a97b281e85396da2985e0f22c2834\n"
    },
    {
      "commit": "00e15d651e705640d4fdf206faf8317d69b20758",
      "tree": "fc8dd0911ee17433a679a052f58c8eb8c2d0b75f",
      "parents": [
        "6c99dc805acf46ff0047163e29d6c08e182e73a2",
        "06d10a78506fae7e033795cda7b1d9d0e1f1fff5"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue May 15 11:35:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 15 11:35:20 2018 +0000"
      },
      "message": "Merge \"ART: Add dex::ProtoIndex\""
    },
    {
      "commit": "8268cb677bd92bfbcfec7e803775c29687494e53",
      "tree": "b63ca42dcd440117187e3c859b4b311b11b8137e",
      "parents": [
        "004b8875b291af5001d384fb1eb76ae0660ff056"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri May 11 15:06:17 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon May 14 18:40:49 2018 +0100"
      },
      "message": "Remove support for Valgrind in ART.\n\n- Disable test configuration art-gtest-valgrind64\n  (art-gtest-valgrind32 was already disabled).\n- Remove Makefile logic regarding testing with Valgrind.\n- Remove occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_VALGRIND`.\n- Replace occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_ASAN` with\n  `TEST_DISABLED_FOR_MEMORY_TOOL`.\n- Replace the potentially dynamically evaluated\n  `RUNNING_ON_MEMORY_TOOL` expression with constant\n  `kRunningOnMemoryTool`.\n- Simplify and fold the logic of\n  `art::ArenaAllocatorMemoryToolCheckImpl` and\n  `art::ArenaAllocatorMemoryToolCheck` into\n  `art::ArenaAllocatorMemoryTool`.\n- Adjust comments regarding memory tools.\n- Remove Valgrind suppression files.\n- Remove `--callgrind` option from tools/art.\n\nTest: art/test.py\nBug: 77856586\nBug: 29282211\nChange-Id: Ifdcbfccc1830104c455760457df66ede4a4cd135\n"
    },
    {
      "commit": "06d10a78506fae7e033795cda7b1d9d0e1f1fff5",
      "tree": "91f94a605395776710f3d14298613a803158f3aa",
      "parents": [
        "93d301397c83b08f6fc165847a3d518e1031f392"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 14 08:53:38 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 14 16:49:55 2018 +0100"
      },
      "message": "ART: Add dex::ProtoIndex\n\nTest: m -j32 test-art-host\nChange-Id: Ic2d2a7a43be1b8590b97cdf3729200b043ffc6a3\n"
    },
    {
      "commit": "768c6cc3c4ae3aaf0fa65e10c685567371e18dc9",
      "tree": "b55804542510f8592c1c5b9e522a16d35567b2f1",
      "parents": [
        "93d301397c83b08f6fc165847a3d518e1031f392",
        "a9d5ccdf887ef5c9f61481f036773bdfadd39fd7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 14 13:38:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 14 13:38:30 2018 +0000"
      },
      "message": "Merge \"Revert \"Move kVRegSize to globals.h to reduce include dependencies.\"\""
    },
    {
      "commit": "a9d5ccdf887ef5c9f61481f036773bdfadd39fd7",
      "tree": "07fd0c81d1dfde82c2b3b476c2ccf3758b6cae4b",
      "parents": [
        "5ae7cdfe5b8da645d1fec61c76176e6a37e78fb9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 14 11:55:51 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 14 11:56:30 2018 +0000"
      },
      "message": "Revert \"Move kVRegSize to globals.h to reduce include dependencies.\"\n\nThis reverts commit 5ae7cdfe5b8da645d1fec61c76176e6a37e78fb9.\n\nReason for revert: Unknown crash in linker\n\nChange-Id: Ib5646376e2e589a7a6c4d66e72caa1f208a15905\n"
    },
    {
      "commit": "93d301397c83b08f6fc165847a3d518e1031f392",
      "tree": "a16cdb77261184066b9ed0f68a13e3380ae2228f",
      "parents": [
        "6623bc389c43efc87668ce7465e19b195e765e22",
        "5ae7cdfe5b8da645d1fec61c76176e6a37e78fb9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 14 09:26:09 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 14 09:26:09 2018 +0000"
      },
      "message": "Merge \"Move kVRegSize to globals.h to reduce include dependencies.\""
    },
    {
      "commit": "5ae7cdfe5b8da645d1fec61c76176e6a37e78fb9",
      "tree": "c9b1b0f3963e5cf2b370c45bed9ad448dd814fb0",
      "parents": [
        "e1b445b112ec83fea9b1760cdfe6d0e185607b0d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 09 18:42:12 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 11 16:00:08 2018 +0100"
      },
      "message": "Move kVRegSize to globals.h to reduce include dependencies.\n\nTest: m test-art-host-gtest\nChange-Id: I26146535f2684ddab3554023f7df571d93a39f88\n"
    },
    {
      "commit": "dbaa5c7ba8935cf87ceb40a4054f9842929e9a51",
      "tree": "5037625c80cb97a0e13026dc450db28e59ff72ca",
      "parents": [
        "51dda39549033b3c50a7fce5522ffc81325db54b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 10 08:22:46 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 11 11:55:30 2018 +0100"
      },
      "message": "ART: Compiler support for const-method-handle\n\nImplemented as a runtime call.\n\nBug: 66890674\nTest: art/test.py --target -r -t 979\nTest: art/test.py --target --64 -r -t 979\nTest: art/test.py --host -r -t 979\nChange-Id: I67f461c819a7d528d7455afda8b4a59e9aed381c\n"
    },
    {
      "commit": "18259d7fb7164a5e029df4f883b3a79ccc2403e8",
      "tree": "ba378bfdef4127bb0607215186e3b150fd38bcdf",
      "parents": [
        "922501b4bbf724e4259477a27764291684eedffb"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 12 11:18:23 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 10 15:04:09 2018 +0100"
      },
      "message": "ART: Compiler support for const-method-type\n\nImplemented as a runtime call.\n\nBug: 66890674\nTest: art/test.py --target -r -t 979\nTest: art/test.py --target --64 -r -t 979\nTest: art/test.py --host -r -t 979\nChange-Id: I4b3d3969d455d0198cfe122eea8abd54e0ea20ee\n"
    },
    {
      "commit": "6d5b7e38fd5aba9eaad3a630b4859d214fa8f77c",
      "tree": "c6e9d055840bbc5a9b57de2128656d80f6ef7cd6",
      "parents": [
        "48af3b39cd7c8abaa7f9671191ec8260630239b2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 16:52:48 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 16:57:43 2018 +0100"
      },
      "message": "ART: Clean up after HInstruction::Is##type() rewrite.\n\nAddress late comments on\n    https://android-review.googlesource.com/679021 .\n\nTest: Rely on TreeHugger.\nChange-Id: Id82976651aced36b8ee2808b6a9effbfb3224d42\n"
    },
    {
      "commit": "48af3b39cd7c8abaa7f9671191ec8260630239b2",
      "tree": "e60438ef346afff8b64d9a9e008e2385c96afd74",
      "parents": [
        "07a8adec764f6e76e0c6acb49ab57f8d5b0c2f69",
        "a90dd515c4451ad3d6e7ecdf0f0527fcc1e32d91"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 15:22:49 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 09 15:22:49 2018 +0000"
      },
      "message": "Merge \"Reimplement HInstruction::Is##type().\""
    },
    {
      "commit": "a3ad0cdd711857f04f477e2cdc5b56a2c74a3018",
      "tree": "7e0e4c7888c2497d86ce96c9574d7c9886721ccf",
      "parents": [
        "abd9e1515bc6be88372c61071971c5432a51553d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 04 10:06:38 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 11:11:09 2018 +0100"
      },
      "message": "ART: Move JNI files to runtime/jni/ .\n\nTest: Rely on TreeHugger.\nChange-Id: I9cae11191ef1567ae9453be498882a7767285140\n"
    },
    {
      "commit": "a90dd515c4451ad3d6e7ecdf0f0527fcc1e32d91",
      "tree": "1d551b2ce84dd87e7622d011354cea24b856047a",
      "parents": [
        "b865d9af3bb5f4777dbe9cbd60cdb2a8fe5f0557"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 04 15:04:45 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 08 17:16:51 2018 +0100"
      },
      "message": "Reimplement HInstruction::Is##type().\n\nUse a table-based implementation for abstract kinds. This\nimplementation can be fully inlined and even eliminated if\nthe range of possible kinds is known.\n\nThere is a small (\u003c0.5%) improvement of dex2oat compile\ntime for a big app (sum of \"Compile Dex File Quick\" dumped\nfor --dump-timings with the timing of compiler passes hacked\naway) on aosp_taimen-userdebug, little cores, -j4. The sizes\nof libart-compiler.so have changed:\n  - lib/libart-compiler.so: 2178608 -\u003e 2169136 (-9472)\n    .rodata: 0xd36c -\u003e 0xd55c (+496)\n    .text: 0x175914 -\u003e 0x175f44 (+1584)\n    .data.rel.ro: 0xa858 -\u003e 0x84e8 (-9072)\n  - lib64/libart-compiler.so: 3091432 -\u003e 3064248 (-27184)\n    .rodata: 0x15aa4 -\u003e 0x15c94 (+496)\n    .text: 0x203304 -\u003e 0x202294 (-4208)\n    .data.rel.ro: 0x151d8 -\u003e 0x10a68 (-18288)\nNote that .data.rel.ro is always dirty memory, .rodata and\n.text is always clean.\n\nTest: Rely on TreeHugger\nChange-Id: I95e6040ecd23cad83f024970c3bf785d32169deb\n"
    },
    {
      "commit": "2da52b084b940a5330aa985b687c852495bc38ff",
      "tree": "61d01d2391bc6e65ecfcbc636159369e9425c59c",
      "parents": [
        "b865d9af3bb5f4777dbe9cbd60cdb2a8fe5f0557"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 08 16:31:34 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 08 17:06:26 2018 +0100"
      },
      "message": "ART: Add --dump-pass-timings compiler option.\n\nThis replaces the old --dump-passes option removed in\n    https://android-review.googlesource.com/549200 .\nUsing --dump-timing for timing optimization passes makes\nthe high level timings useless, so return to using two\ndifferent options for these.\n\nTest: Manually run dex2oat with --dump-timings,\n      --dump-pass-timings and both.\nChange-Id: Iddc4cfee35652fb493656e7d6081a898c2894f72\n"
    },
    {
      "commit": "e394622583774d7e3c32bea0c7ffc4777ee47e56",
      "tree": "129435b4db6c780b1750b3a1a9b3f4cc8612b322",
      "parents": [
        "0dcccd815684b4c7540f9c6d39de161e44e5f51c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 04 14:18:47 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 08 11:36:11 2018 +0100"
      },
      "message": "ART: Do not define abstract HIR kinds.\n\nThey were never used and the two cases in HSchedulerARM64\u0027s\nIsSchedulable() were unreachable.\n\nTest: Rely on TreeHugger.\nChange-Id: I506bc2a89a6fbf556f32e25ecfe61eaad236a40a\n"
    },
    {
      "commit": "0dcccd815684b4c7540f9c6d39de161e44e5f51c",
      "tree": "89fce5c16f7d05f81c302a75e2ff744a002a1a3e",
      "parents": [
        "bd78567cef305e35481734b7fc24f68ded031439"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 04 13:32:25 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 08 11:36:11 2018 +0100"
      },
      "message": "ART: Remove InstructionTypeEquals().\n\nAvoid the virtual call and simply compare the instruction\nkinds.\n\nTest: Rely on TreeHugger.\nChange-Id: I7310de976614c5ec63d61a447a40047de5bc654d\n"
    },
    {
      "commit": "bd78567cef305e35481734b7fc24f68ded031439",
      "tree": "e3873b73e3631c5cd70c1a3f8f38e79dad25d890",
      "parents": [
        "9926e4615d75cb6c9371e1766a14b0a80089ae18"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 03 17:09:09 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 08 11:36:11 2018 +0100"
      },
      "message": "Store HIR type in HInstruction::packed_field_.\n\nThis is similar to\n    https://android-review.googlesource.com/609566\nthough the performance impact has not been measured.\nHowever, avoiding a virtual call reduces pressure on the\nbranch predictor and provides better optimization\nopportunities for the C++ compiler.\n\nAs there is now no difference between HTemplateInstruction\u003c\u003e\nand HExpression\u003c\u003e (the type is stored in HInstruction), we\nremove the former and use HExpression\u003c\u003e for all instructions\nthat have a fixed number of inputs.\n\nTest: Rely on TreeHugger.\nChange-Id: Ib3fd111048b0ac38ee65386a7e5af70c5ccc98de\n"
    },
    {
      "commit": "a8360cd6b858906f20558552f7bf3b3876c72ec4",
      "tree": "357c6916cb832b9a27ff6bbcf2d9344fb818e569",
      "parents": [
        "d637fdac0ea396780b12052c7ab9de61744bcd4b"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed May 02 16:07:51 2018 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu May 03 09:26:25 2018 -0700"
      },
      "message": "Perform rudimentary check on graph size for no-change assertions.\n\nRationale:\nThis will find blatant violations of asserting a no-change\npass change if the graph size changed nevertheless.\n\nBug: 78171933\n\nTest: test-art-host,target\nChange-Id: I07b38e71c75dd6f728246d096976c8333b363329\n"
    },
    {
      "commit": "3f08e9bb0dfbe9a51e1b378ae20a9338358349eb",
      "tree": "315a297945abd28e1f6375095c065ab40691fdde",
      "parents": [
        "cf659ae8b91e4ea84ffb4adb294eac5759d6666f"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue May 01 13:42:03 2018 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue May 01 14:14:53 2018 -0700"
      },
      "message": "Remove some SIMD recognition code.\n\nTest: : test-art-host,target\n\nChange-Id: I7f00315c61ed99723236283bc39a4c7fb279df47\n"
    },
    {
      "commit": "2e14868d43b4f8c21f8567f336a9bf1a2576dc1b",
      "tree": "3f17fc543c912e66ea937cd77b760f92faa4ea32",
      "parents": [
        "5503d264ac1b5dd23df4079dc14f26919de42bec"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Apr 18 16:11:12 2018 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Apr 30 08:58:32 2018 -0700"
      },
      "message": "Step 2 of 2: conditional passes.\n\nRationale:\nThe change introduces actual conditional passes\n(dependence on inliner). This ensures more\ncases are optimized downstream without\nneedlessly introducing compile-time.\n\nNOTE:\nSome checker tests needed to be rewritten\ndue to subtle changes in the phase ordering.\nNo optimizations were harmed in the process,\nthough.\n\nBug: b/78171933, b/74026074\n\nTest: test-art-host,target\n\nChange-Id: I335260df780e14ba1f22499ad74d79060c7be44d\n"
    },
    {
      "commit": "54e45c59de68fabbc06ffda38fcb1ed57e1b913a",
      "tree": "f3669f1af3131c9543024e34f463ca5572c66414",
      "parents": [
        "c84335957653c3bbbe3cb9a4049c6d614b5abadb"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Apr 27 13:57:21 2018 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Apr 27 13:57:21 2018 -0700"
      },
      "message": "Bug fix: add condition back\n\nRationale:\nCL https://android-review.googlesource.com/c/platform/art/+/673413\nleft out this important condition\n\nTest: test-art-host\nChange-Id: Id233f07f2089e5269e7982146ff45864dc3e6acf\n"
    },
    {
      "commit": "2f8279eab734f2e701625e283a0c5776ecbea1bc",
      "tree": "02100f78a38ff6e7a93746efe4d288a52144684e",
      "parents": [
        "8db788b3484d0d926fff631ba022add50936b7c1",
        "2477320a8d9de58ede68e2645ea53c10f71dcd57"
      ],
      "author": {
        "name": "android-build-prod (mdb)",
        "email": "android-build-team-robot@google.com",
        "time": "Fri Apr 27 16:38:24 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 27 16:38:24 2018 +0000"
      },
      "message": "Merge \"Step 1 of 2: conditional passes.\""
    },
    {
      "commit": "0ecbdb32eb0f829614c25a54a165f43c3ad676f8",
      "tree": "b0d2b2f52be1296be2536d9838efc29b32a80a04",
      "parents": [
        "8404e930d2f74430e156c1f11c7ed2908b29ec2b",
        "1979c64214bd505c013d573bc8729ee94f7bdea5"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 27 15:49:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 27 15:49:58 2018 +0000"
      },
      "message": "Merge \"Clean up include paths\""
    },
    {
      "commit": "1979c64214bd505c013d573bc8729ee94f7bdea5",
      "tree": "9b4b2298b8b9d15cd6ca0a1e06e3771f3db2163f",
      "parents": [
        "5a87e19e4bf1b6719c2aad3effde1b38d2c3085c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 14:41:18 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 15:08:49 2018 -0700"
      },
      "message": "Clean up include paths\n\nRemove runtime/globals.h and make clients point to the right globals.h\n(libartbase/base/globals.h).  Also make within-libartbase includes\nrelative rather than using base/, etc.\n\nBug: 22322814\nTest: make -j 40 checkbuild\nChange-Id: I99de63fc851d48946ab401e2369de944419041c7\n"
    },
    {
      "commit": "82d046e7c9daad9b706cbec7df7025c5a4ef9163",
      "tree": "92b7deea052015dd64bea6fc72d76c67f69e0e5d",
      "parents": [
        "5a87e19e4bf1b6719c2aad3effde1b38d2c3085c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Apr 23 08:14:19 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 12:37:04 2018 -0700"
      },
      "message": "Add a profiling library\n\nMove profile_compilation_info to a separate library.  Another step\ntowards building many of our tools without libart[d].\n\nBug: 78459333\nTest: make -j 50 checkbuild\nChange-Id: Ib281d3d1fde6d06ebb429c5d39d62a7038af0f44\n"
    },
    {
      "commit": "2477320a8d9de58ede68e2645ea53c10f71dcd57",
      "tree": "f428a6856e10d8ebaff0bb2da544a8d41c35ab77",
      "parents": [
        "5a87e19e4bf1b6719c2aad3effde1b38d2c3085c"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Apr 26 10:28:51 2018 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Apr 26 10:28:51 2018 -0700"
      },
      "message": "Step 1 of 2: conditional passes.\n\nRationale:\nThe change adds a return value to Run() in preparation of\nconditional pass execution. The value returned by Run() is\nbest effort, returning false means no optimizations were\napplied or no useful information was obtained. I filled\nin a few cases with more exact information, others\nstill just return true. In addition, it integrates inlining\nas a regular pass, avoiding the ugly \"break\" into\noptimizations1 and optimziations2.\n\nBug: b/78171933, b/74026074\n\nTest: test-art-host,target\nChange-Id: Ia39c5c83c01dcd79841e4b623917d61c754cf075\n"
    },
    {
      "commit": "b8f199705ebd673563fac5cd416a44794d07f692",
      "tree": "9ef0089572b912de08ff1b5cdda3d44de14a9090",
      "parents": [
        "70ffeec2e95e82476827f0dbe2d7edb7688ccc7c",
        "dcd117e04b0831e4539544c38c524799114f3e66"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 24 17:55:35 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 24 17:55:35 2018 +0000"
      },
      "message": "Merge \"ARM: Use rMR for Baker RB introspection marking.\""
    },
    {
      "commit": "dcd117e04b0831e4539544c38c524799114f3e66",
      "tree": "c5564d659c74ac9ef5207434ced91f4f7415dc77",
      "parents": [
        "63fe8dc454298852ae31cfc2692108488a58c650"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 19 11:54:00 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 24 17:13:47 2018 +0100"
      },
      "message": "ARM: Use rMR for Baker RB introspection marking.\n\nThe marking register (r8 on ARM) is known to be 1 when\nentering the introspection marking entrypoint, so we can\nclobber it, use it as a temporaray register (instead or r4)\nin the runtime entrypoint, and reload the 1 before\nreturning. The immediate benefits are minor, see below,\nbut this shall allow further improvements, for example we\ncould try to change rMR to r4 which would reduce code size\nof every marking register check by 2 bytes.\n\nARM boot image (boot*.oat) size in aosp_taimen-userdebug:\n  - before: 17861724\n  - after: 17858088 (-3636)\n\nTest: Pixel 2 XL boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --target --optimizing --32\nTest: Repeat the above tests with heap poisoning enabled.\nBug: 36141117\nChange-Id: I0f625dec3a6b3ee1786f7e5f4377be42b9bc37d3\n"
    },
    {
      "commit": "75ff2c96c37485ff8c74cf9942c0a4bf0710e91c",
      "tree": "13b3cdcf7060e06b1dc50201c4f4d9436d379db7",
      "parents": [
        "240384b7d96c2d579bf58ed7a3e9c9ba1911dae3"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Sat Apr 21 01:28:11 2018 +0000"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Sat Apr 21 01:28:11 2018 +0000"
      },
      "message": "Revert \"Revert^2: Deopt does not throw\"\n\nThis reverts commit 240384b7d96c2d579bf58ed7a3e9c9ba1911dae3.\n\nReason for revert: P1 b/78360004 points to this so reverting for now (will triage later)\n\nChange-Id: I041c1d9fc045391c73e887268c3b1b9b69fcc216\n"
    },
    {
      "commit": "240384b7d96c2d579bf58ed7a3e9c9ba1911dae3",
      "tree": "d00e99045d9b4fda7a3743577dbddeba0c276a38",
      "parents": [
        "cb21a56d811e961ad1f2a50ee8bc748bd148885c"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Apr 17 14:56:29 2018 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Apr 19 09:17:11 2018 -0700"
      },
      "message": "Revert^2: Deopt does not throw\n\nRationale:\n\"CanThrow\" of deopt was possibly misused to prevents some\noptimizations. However, the instruction technically cannot\nthrow an exception, and indeed crashed the graph verifier\nfor some corner cases. This Cl sets that right.\n\nBug: 29868356\n\nTest: test-art-host,target\n\n(revert^2 of commit 2905de1c0e5b6a0c995be474b3f0efdfdc6a41c4)\n\nChange-Id: I4d4e6c00eff52140aa1845332998224ececc92ef\n"
    },
    {
      "commit": "080820c8e7a25bc3fb28d7c5a1524b0e5537c7a9",
      "tree": "398d9bbd027743a233034d4977821c0275a918e7",
      "parents": [
        "2905de1c0e5b6a0c995be474b3f0efdfdc6a41c4"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Apr 19 04:02:36 2018 +0000"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Apr 19 04:02:36 2018 +0000"
      },
      "message": "Revert \"Deopt does not throw\"\n\nThis reverts commit 2905de1c0e5b6a0c995be474b3f0efdfdc6a41c4.\n\nReason for revert: test breaks on git_master-art-host; art-test-javac (linux) \n\nChange-Id: Ic39d442776858c74d2163683c78bd3a8072ad45e\n"
    },
    {
      "commit": "2905de1c0e5b6a0c995be474b3f0efdfdc6a41c4",
      "tree": "83f372a7922090b3243831c2cb9a23b3ccd29c0b",
      "parents": [
        "740a50992ea1a200068eb4486a172a151c9b329c"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Apr 17 14:56:29 2018 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Apr 18 16:01:35 2018 -0700"
      },
      "message": "Deopt does not throw\n\nRationale:\n\"CanThrow\" of deopt was possibly misused to prevents some\noptimizations. However, the instruction technically cannot\nthrow an exception, and indeed crashed the graph verifier\nfor some corner cases. This Cl sets that right.\n\nBug: 29868356\n\nTest: test-art-host,target\nChange-Id: Icb551d3b2935282a70ad673a0544e4fe01104da1\n"
    },
    {
      "commit": "6d05700c620d2bca95fd046969753f71aa015ab4",
      "tree": "a4fe0409be49298541d4a508ab7ffd0869c71bfb",
      "parents": [
        "8f669504a1c4646501a2cf5d090597f9fed59f70"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Apr 09 15:39:58 2018 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Apr 17 12:55:50 2018 -0700"
      },
      "message": "Run GVN earlier.\n\nRationale:\nRunning GVN earlier allows for better subsequent\ninstruction simplifation. For example, running GVN\nbefore select generation also finds the MIN in:\n   if (x \u003e a[i])\n     x \u003d a[i];\n\nBug: b/74026074\n\nTest: test-art-host,target\n\nChange-Id: I633046375637c7809a3603fdf7c5cf77e8f21167\n"
    }
  ],
  "next": "8f669504a1c4646501a2cf5d090597f9fed59f70"
}
