)]}'
{
  "log": [
    {
      "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": "b68ed2c708a5a3fcc8c2cec944c1080a6fbb88f5",
      "tree": "dabb0134bd5f27ee99628a7eafe65b2b6212934c",
      "parents": [
        "2e639002351545a76b0dbb2fbcb33c988d2d786e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 10:39:31 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 10:40:56 2018 -0700"
      },
      "message": "ART: Ensure OatQuickMethodHeader is trivially copyable\n\nRemove empty constructor.\n\nTest: mmma art\nChange-Id: Ie58721299a6675797e9a525f4eb7e6df82abed50\n"
    },
    {
      "commit": "faf742fe798038cd314ad06165017c9719cbce6e",
      "tree": "c7c60475d2955e1a401647c6a02057887b62fb53",
      "parents": [
        "866caa04287db748c2f8a16992b99e0ee6bf4a25",
        "89de444350fdbd7df4fb4d95bb71f00e6673b466"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 15:17:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 20 15:17:20 2018 +0000"
      },
      "message": "Merge changes I43d8736f,I6148d743,Id3687eb6\n\n* changes:\n  ART: Fix some performance-X tidy\n  ART: Mask garbage-memory warnings\n  ART: Fix clang-analyzer leak/memory warnings\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": "dbf540399a2aaddad00b1233b80808c80dc0d443",
      "tree": "b5a1933b5edd1b998a815b22695f2591e8db072c",
      "parents": [
        "4f0e0b8a4161ec9217b0b3cbca5fa6d3a289cc6a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 18 14:47:01 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 19 17:09:45 2018 -0700"
      },
      "message": "ART: Fix clang-analyzer leak/memory warnings\n\nFix warnings, or make code more obvious to the analyzer.\n\n(The analysis itself is too expensive to force it on for all\nlocal builds.)\n\nTest: mmma art (with clang-analyzer-cplusplus.NewDeleteLeaks)\nChange-Id: Id3687eb6f3af3a0b4f2df1422bc6d83650517623\n"
    },
    {
      "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": "20c64f8d802cc575cc9a1a1f6c493a611b23e2ee",
      "tree": "1fcfef016c7f2fca79a4e2c37a42c9058ad746f4",
      "parents": [
        "456dc5c7c70c45bf290c236aa1514b1274f120e1",
        "18e2687c4126d66870d61d6548abc2c7661a66cc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 08 16:39:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 08 16:39:58 2018 +0000"
      },
      "message": "Merge \"Refactor ClassAccessor to use an index instead of ClassDef pointer\""
    },
    {
      "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": "a4bae540b7c91136aaab02fd1638c8df6cb96970",
      "tree": "eb517cc7ba2a3b0d37b9be26e8b811d9f015d672",
      "parents": [
        "bac28b0d5fb0765291adf8379bc502783cbb15b0",
        "fd89b0739d4000ea70f28bf53dea531027024f5a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jun 08 11:14:39 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 08 11:14:39 2018 +0000"
      },
      "message": "Merge \"Remove unused GetDexRegisterMap arguments.\""
    },
    {
      "commit": "18e2687c4126d66870d61d6548abc2c7661a66cc",
      "tree": "06eff605df9259dde8170c8efb48b11df4108eb3",
      "parents": [
        "2607d6c47114a18ccf4a532b20e1099d1dd8fcca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 04 17:19:02 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 07 22:13:48 2018 -0700"
      },
      "message": "Refactor ClassAccessor to use an index instead of ClassDef pointer\n\nRemoves a separate class_def_idx being required for getting the index\nof a ClassAccessor foreach loop.\n\nBug: 79758018\nTest: test-art-host-gtest\n\nChange-Id: Ie3010a17669f24cf492c678b55bdddba7ec62ea8\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": "eb2557e74abf1830995cea287a9b03a8c0aa9b8b",
      "tree": "ea007db13f31492cab58adea297422b361e8af24",
      "parents": [
        "2b40dd35c65ad644d448611750f5b577e97594a1",
        "6de8833fb64e59301eada4005ed04da995796170"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 07 13:18:33 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 07 13:18:33 2018 +0000"
      },
      "message": "Merge \"Delta-compress register maps in stack maps.\""
    },
    {
      "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": "dc53f1616d656a757fb26039f387b7ee44ff2f1d",
      "tree": "e334f68df51c6078fd51f293a38146c6fcb6c106",
      "parents": [
        "f98a25083c71c2f26d8487142aa02fabcd023080",
        "d97e0828958fd14a962e37af2865bc2e628547ce"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 06 15:00:44 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 06 15:00:44 2018 +0000"
      },
      "message": "Merge \"Reduce code repetition in stack maps with macros.\""
    },
    {
      "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": "f51359edab8cd1a77677e68f0f2b56dc0f5d2561",
      "tree": "8b03fb414afac9cac2746eaaac9cd3330f1c097b",
      "parents": [
        "a13ec547911bb33d05955d9d6f336f550c8d9c10",
        "6e69e52a12883386f91d014324bebee867ca7877"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 06 00:24:22 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 06 00:24:22 2018 +0000"
      },
      "message": "Merge \"Remove depth argument from InlineInfo accessors in stack maps.\""
    },
    {
      "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": "8d97f400f5addaa52f66b804bf031e1005bab3d4",
      "tree": "29370726ecaaeaa089e92becea7b1b86755a03c5",
      "parents": [
        "302aa98f75213c749c9632a503a77011946b41de",
        "6eb4d5e4bc2ce068004c1d7c85dbfff0c5efd11d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jun 05 15:49:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 05 15:49:17 2018 +0000"
      },
      "message": "Merge \"De-duplicate inline info in stack maps.\""
    },
    {
      "commit": "9ddef18ae95859a985e7a0de7e22999fcbc28e07",
      "tree": "ff38945fc61f1e32717a18b0a6901c5d11c33ccb",
      "parents": [
        "0366f3251c3078a0161d178e3b0afd5efc4c84c0",
        "bcf175247272d0e321c8d988c3c01c123b56e36e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 04 09:14:42 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 04 09:14:42 2018 +0000"
      },
      "message": "Merge \"ObjPtr\u003c\u003e-ify array allocations.\""
    },
    {
      "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": "bcf175247272d0e321c8d988c3c01c123b56e36e",
      "tree": "9f65ece5ce9474aa4fcf16fbfca6278109dc9a67",
      "parents": [
        "09c5ca40635faee00f40f6ca0581dd475efd545e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 13:14:32 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 16:31:30 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify array allocations.\n\nAnd remove some unnecessary calls to ObjPtr\u003c\u003e::Ptr().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ie313980f7f23b33b0ccea4fa8d5131d643c59080\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": "9e4bbfb8c912dde29f01a76494fe6c253118e1d6",
      "tree": "3aebc9078ad94f132f7a5df0813a97bbdd4c4ed9",
      "parents": [
        "e7d145980df0079425a1ed04330848f92b992cd2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 31 08:52:16 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 31 09:19:53 2018 +0100"
      },
      "message": "Fix build: Extend the scope of CodeInfo object in ELF writer.\n\nCodeInfo is referenced from DexRegisterMap now, so keep it alive.\n\nTest: ./art/test/testrunner/run_build_test_target.py -j30 art-asan\nChange-Id: I47d0eb2a5be26fdaf2e2f6efc1c0909b84b38b31\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": "750cf88c8872983ae13259131cb2ed377e3eadff",
      "tree": "b0e35537e6ea4639e22f3467225be7b331818b86",
      "parents": [
        "08f1973a345d78a9336b7ce2bf1df82f1c2515db",
        "5924a4a73f1a2dcf83877062d67c297a9496b326"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 13:39:39 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 30 13:39:39 2018 +0000"
      },
      "message": "Merge changes I51c462c0,If8674fc7\n\n* changes:\n  Move String::SizeOf\u003c\u003e to string.h .\n  ObjPtr\u003c\u003e-ify RegTypeCache, fix 1 stale reference use.\n"
    },
    {
      "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": "452e0ae7de436e9c9aa012970423b997b4327b94",
      "tree": "cde3b492e353df4eacbc0f4e2105ccfdb3893f43",
      "parents": [
        "10b8747ec6dcfaf08c35d91cd0ad51387e54119e",
        "da4ff8bfcf03d6186b7d21c7bd8b90248f7b2f96"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 11:02:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 30 11:02:00 2018 +0000"
      },
      "message": "Merge \"Cleanup stackmap generation in exception_test\""
    },
    {
      "commit": "da4ff8bfcf03d6186b7d21c7bd8b90248f7b2f96",
      "tree": "f7d1c9de7bb3908341232c5b83c06b94b2ac722e",
      "parents": [
        "010b10e7ab1b6f5a736bf500acc16d2c7067f8af"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue May 29 20:20:12 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 10:05:33 2018 +0100"
      },
      "message": "Cleanup stackmap generation in exception_test\n\nThe alignment code was unnecessarily complicated,\nand the final alignment check was incorrect.\n\nTest: test-art-target-gtest-exception_test32\nChange-Id: I34e17af11d59b93bc445d7a2a5bd76552675fe3a\n"
    },
    {
      "commit": "525bb7427d7e97b5a4eba7b113ca065e79ad83d2",
      "tree": "b27c81c2cca6e3d0503bfe4638a6df45791ba2cc",
      "parents": [
        "010b10e7ab1b6f5a736bf500acc16d2c7067f8af",
        "0d896bd7da4f7b11559aa88aad82e9a9e170a4e4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 29 19:54:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 29 19:54:58 2018 +0000"
      },
      "message": "Merge \"Add Method/Field iterator to ClassAccessor\""
    },
    {
      "commit": "0d896bd7da4f7b11559aa88aad82e9a9e170a4e4",
      "tree": "44a9278d98ace169e8296feba98038c173f29eaf",
      "parents": [
        "267c83529850f51cd690b3e31882aaae98601afd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 25 00:20:27 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 29 10:20:59 2018 -0700"
      },
      "message": "Add Method/Field iterator to ClassAccessor\n\nEnables ranged based for loops on fields and methods.\n\nFor visiting both fields and methods, VisitFieldsAndMethods will\nbe faster because of not needing to decode the fields twice for\nseeking purposes.\n\nAdded test.\n\nBug: 79758018\nBug: 77709234\nTest: test-art-host-gtest\n\nChange-Id: I593e23ccd138b87a27d8bab6927ff2b685c057f3\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": "2eabc61c9592f18eb02211dd3e76e6d7e6793747",
      "tree": "7dbd72abe2ea0334f9b245b2bc633744ed508916",
      "parents": [
        "ad70b322fe9b2d3601dcdcfab915b651716ee448"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 25 14:31:16 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 25 14:41:27 2018 -0700"
      },
      "message": "Fix class_def_idx increment for FastVerify\n\nFixes vdex golem benchmarks.\n\nAlso fixed logic that was overwriting the expected ClassStatus for\ndebug builds. This is why the tests were passing but the CHECK was\nfailing for non debug dex2oat.\n\nAdded regression test in dex2oat_test.\n\nBug: 80309967\nTest: test-art-host\nChange-Id: I91c48ffbe894ab471572418142fcb4ae85bf0864\n"
    },
    {
      "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": "bfd6df4e0783fcc480d2f9a9b89c9fa4c4cde631",
      "tree": "6718779938ed76047ff24016bf98730945397905",
      "parents": [
        "b7e784694ba9c2399492d69710bede711a3b552d",
        "ca210e34eac5b262a85c05e8815ab266f7f983d2"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 25 10:13:01 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 25 10:13:01 2018 +0000"
      },
      "message": "Merge \"ART: SBC: Support single exit loops with live_outs.\""
    },
    {
      "commit": "ebf5902272613d8bb563ae312ec5ce2580a59bb7",
      "tree": "5e28c37d9697e51a399403c180d3208e7e841d1a",
      "parents": [
        "4f6858cb8de1ba8c6fafa5f6612a2de99751df02",
        "c8c8d5f484b9e4660de288aa51ce3f831317ee53"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 24 21:05:49 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 24 21:05:49 2018 +0000"
      },
      "message": "Merge \"Move compiler/ to ClassAccessor\""
    },
    {
      "commit": "c8c8d5f484b9e4660de288aa51ce3f831317ee53",
      "tree": "fa329a0787a0e302ff40c7deefa97d5b79b28550",
      "parents": [
        "d804b76c0b8f9d2c94f3a8648aba26254742a1e2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 22 11:56:14 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 24 10:48:53 2018 -0700"
      },
      "message": "Move compiler/ to ClassAccessor\n\nRemove usages of ClassDataItemIterator to reduces boiler plate code.\n\nBug: 79758018\nBug: 77709234\nTest: test-art-host\n\nChange-Id: Id41db3299bba3ea8debcbb0b9c721fa675adc064\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": "ff7ff426e136aa8fd6e33d873f6259311982f6bb",
      "tree": "ca937096fce3dcabf8890d80616ab5021d0b22b9",
      "parents": [
        "aaebb1468cc95838aa58ed537d03de000c9cfe28",
        "e9987b0831403858d95bdd7a5ef9e56665a9702d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 23 16:06:04 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 23 16:06:04 2018 +0000"
      },
      "message": "Merge \"ObjPtr\u003c\u003e-ify tests using ClassLinker::FindClass().\""
    },
    {
      "commit": "e9987b0831403858d95bdd7a5ef9e56665a9702d",
      "tree": "3950da94b73665a52eb5e2b9c5aecc8c92145f13",
      "parents": [
        "6ec2a1bf1cbecf17546df780dd0ad769042e1874"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 16:26:43 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 23 15:16:45 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify tests using ClassLinker::FindClass().\n\nClassLinker::FindClass() returns a non-ObjPtr\u003c\u003e reference\nbut it has a lot of uses, so we shall change the uses in\na few steps. This change deals with several tests.\n\nTest: Rely on TreeHugger.\nBug: 31113334\nChange-Id: Ib75e20e7ebaff01fb607a09f96675f8cf397ae52\n"
    },
    {
      "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": "04f0eaffa70e0384c07bb3680aa0724144358330",
      "tree": "e2c67558dd6202b4ff8b866c157fbc33b6a13434",
      "parents": [
        "438918b2f37e11684fa1e80bbbfe3a8f657b79a9",
        "bb30d5d917a47d352c209473b3faf332736fa6ae"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 22 18:18:39 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 18:18:39 2018 +0000"
      },
      "message": "Merge \"ART: Skip duplicate classes during compilation\""
    },
    {
      "commit": "438918b2f37e11684fa1e80bbbfe3a8f657b79a9",
      "tree": "b77443efb26d5a18a5f5f7d853223dfb3c6ab919",
      "parents": [
        "f31343f1eab771010b3f293366149d2524f30902",
        "c2b4db61e5d0d9ec40b87b9a051aa1ac15ed1294"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 22 16:49:41 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 16:49:41 2018 +0000"
      },
      "message": "Merge \"Add ClassAccessor\""
    },
    {
      "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": "c2b4db61e5d0d9ec40b87b9a051aa1ac15ed1294",
      "tree": "7d8ba5f2ab1c8ff66b17ce2352be3d7f0e12651c",
      "parents": [
        "8926b780fd75f23e8685e108e2d3f4905f3809fd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 18 13:58:12 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 21 12:59:22 2018 -0700"
      },
      "message": "Add ClassAccessor\n\nAims to replace ClassDataItemIterator with a cleaner and simpler\nabstraction.\n\nBug: 77709234\nBug: 79758018\nTest: test-art-host\n\nChange-Id: I871a3e1cf213e0d81bfe4bb77790fbab2d13e44c\n"
    },
    {
      "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": "df810b9c8d5013cd6f5799a75b6aaf0f3991210c",
      "tree": "ad66354ce172285273431bfa69922fc12ae4135a",
      "parents": [
        "ca768656c65109d43270949d1acceb2618738e4a",
        "1f010164bea4714e9f653c52e8948c5d5305040b"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 17 17:13:53 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 17 17:13:53 2018 +0000"
      },
      "message": "Merge \"Move ArtDexFileLoader to libdexfile\""
    },
    {
      "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": "1f010164bea4714e9f653c52e8948c5d5305040b",
      "tree": "e69b2c3f4d2645d4097655f8914325945fe5dbbd",
      "parents": [
        "a7d37cf735f05cfc3a3585a5c44eb65d8a279874"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 15 08:59:32 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed May 16 13:01:34 2018 -0700"
      },
      "message": "Move ArtDexFileLoader to libdexfile\n\nAdds a dependency from libdexfile on libartbase, but allows the use of\nMemMap loaders, etc.\n\nBug: 78652467\nTest: make -j 40 checkbuild\nChange-Id: I15cf33893ca9192050762f8350a3cc1e39f88dc5\n"
    },
    {
      "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"
    }
  ],
  "next": "93d301397c83b08f6fc165847a3d518e1031f392"
}
