)]}'
{
  "log": [
    {
      "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": "05dc23eab55efcfbd13a3de59864d0491e87b834",
      "tree": "baa2ac740d54d849f2c8c71dbe536f1fa63d3716",
      "parents": [
        "ac1cec6eae1646fede5a7355699a317a93a88ac5"
      ],
      "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": "Wed May 23 13:27:52 2018 -0700"
      },
      "message": "Add ClassIterator\n\nAdd a way to iterate over all of the classes in a Dex file. The\niterator returns a ClassAccessor for each class.\n\nAdded DexFile::GetClasses to return an iteration range for this new\niterator type.\n\nSample usage:\nfor (ClassAccessor accessor : dex_file.GetClasses()) {\n\nBug: 79758018\nBug: 77709234\nTest: test-art-host\nChange-Id: I66e000aa11f433e72f6857496f4e89a0b811f5a2\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": "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": "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": "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": "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": "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": "93fea8afb29dd5576bcf45df30add112f4469f52",
      "tree": "50e86f6530c304a0c3e010d2c95a9809f9b8576d",
      "parents": [
        "768c6cc3c4ae3aaf0fa65e10c685567371e18dc9",
        "2300b2d45aba525a163688e5e8faa7448dbfcaef"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon May 14 15:24:16 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 14 15:24:16 2018 +0000"
      },
      "message": "Merge \"Remove MemMap dependency on libbacktrace\""
    },
    {
      "commit": "2300b2d45aba525a163688e5e8faa7448dbfcaef",
      "tree": "734e02b52a162b28f17e637320ffa08a555a8115",
      "parents": [
        "42805fa0afeefbc4fd4e3339940582bdda9c77bd"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 10 14:20:10 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri May 11 16:48:36 2018 -0700"
      },
      "message": "Remove MemMap dependency on libbacktrace\n\nRemove the dependency on BacktraceMap/libbacktrace for MemMap.\nThe removed code was entirely debug, but we may want to add back\nsome of it to facilitate test debugging.\n\nThis removes the dependency from libartbase on libbacktrace and\nmakes it possible to use libartbase from libdexflie without\ncausing a cyclic dependency.  This facilitates moving\nArtDexFileLoader and some other code into libartbase, and gets\nrid of some debt accumulated during all these refactorings.\n\nBug: 78652467\nTest: make -j 50 checkbuild\nChange-Id: Ic575a764817ba660b851f7d5b5c60e43f8356fea\n"
    },
    {
      "commit": "9d93cd6518633be803cc140b51d0ad5093fc25f2",
      "tree": "8619f55be46f787e4347435f436ace283e8dbc06",
      "parents": [
        "da1e6d2a8d41c130eefbb4ad3b828f2cd1470529",
        "0d0f3164160e50ddb78022f662c5438fc167f50d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 11 12:19:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 11 12:19:20 2018 +0000"
      },
      "message": "Merge \"Handle multidex in LocationIsOnSystemFramework.\""
    },
    {
      "commit": "0d0f3164160e50ddb78022f662c5438fc167f50d",
      "tree": "13bfdad1117db0adfb8b434ff1b8e1589c0c43ea",
      "parents": [
        "9d7905fffb9eca8f4fa6f3f3d7d3deb9718e3005"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 10 12:55:40 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 10 22:49:34 2018 +0100"
      },
      "message": "Handle multidex in LocationIsOnSystemFramework.\n\nbug: 79111915\nTest: art_dex_file_loader_test.cc\nChange-Id: I507ad98c62b4c589196685d74abdeaf748502a61\n"
    },
    {
      "commit": "59a49a6fe102b26aacda906b6a2c466d84819c73",
      "tree": "f33b21de298b1943ae3483ba877cdbf50313e049",
      "parents": [
        "48af3b39cd7c8abaa7f9671191ec8260630239b2"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 09 10:58:27 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu May 10 12:38:11 2018 +0100"
      },
      "message": "Implement VMDebug API to mark a class \"platform\"\n\nAdd a native implementation of VMDebug.allowHiddenApiReflectionFrom\nwhich takes a Class object and sets a new access flag\nkAccSkipAccessChecks on the corresponding mirror::Class instance.\n\nThe function will throw a SecurityException if the process has not\nbeen forked as Java debuggable.\n\nhiddenapi::IsCallerInPlatformDex is extended to take an optional\nargument of the mirror::Class of the caller. If it is set and\nthe class has kAccSkipAccessChecks, the caller is allowed to\nacccess non-SDK APIs.\n\nNote that the mirror::Class of the caller is only provided for\nreflection and JNI. The access flag is ignored for other means of\naccess.\n\nBug: 64382372\nTest: N/A\nChange-Id: I2bf0ca7dcb45c17fe91eb2d421c947b892bd6fec\n"
    },
    {
      "commit": "abd9e1515bc6be88372c61071971c5432a51553d",
      "tree": "821b3e27a022ff907cfe0b953140ed4ed354c8d8",
      "parents": [
        "2cd2eea6d14acdc4a9b62df7e9fcffd997962da3",
        "5a2993cd9a158a8fb36d1fdd65d796b3e6e6db2c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 08:44:56 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 09 08:44:56 2018 +0000"
      },
      "message": "Merge \"ART: Templatize DexFileVerifier::CheckIntraIdSection().\""
    },
    {
      "commit": "5a2993cd9a158a8fb36d1fdd65d796b3e6e6db2c",
      "tree": "230c7643d031d5d57500b0219f9ab95e3d1f87ee",
      "parents": [
        "b865d9af3bb5f4777dbe9cbd60cdb2a8fe5f0557"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 08 18:11:25 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 08 18:19:15 2018 +0100"
      },
      "message": "ART: Templatize DexFileVerifier::CheckIntraIdSection().\n\nAnd use macros in DexFileVerifier::CheckIntraSection() to\navoid code duplication.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/672438\nbut the improvements in instruction count measured on host\nwith \"perf stat dexdump2 -c \u003clarge apk\u003e\" are absolutely\ninsignificant (0.0003%).\n\nTest: Rely on TreeHugger.\nChange-Id: I95fd3b2f7f2d767e5446dd71552b34ea55f4bd47\n"
    },
    {
      "commit": "166546c3579b7a9deb413f8e44ad94b8ed41335b",
      "tree": "766450bb9576909e925c5e7d5e1b81c25dd05839",
      "parents": [
        "2e6f69c704202d41f0ab5ab0aa65583a26184e51"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 23 13:50:38 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:32:23 2018 +0100"
      },
      "message": "Fix hidden API flags decoding for intrinsics\n\nHidden API decision logic would try to decode the access flags of\nintrinsics directly, bypassing the override in ArtMethod. This patch\nget hidden_api.h to use the same code path.\n\nThis also fixes CtsHiddenApiDiscoveryTestCases where the access flags\nof blacklisted APIs are tested. VarHandle intrinsics would not pass.\n\nBug: 64382372\nBug: 72430785\nBug: 78230396\nTest: cts-tradefed run cts --module CtsHiddenApiDiscoveryTestCases\nMerged-In: I080313dd91bbee2d7d98b00c02e224974b344c01\nChange-Id: I080313dd91bbee2d7d98b00c02e224974b344c01\n(cherry picked from commit 14c212a44ac9a3ad12025ebf30836129669fa949)\n"
    },
    {
      "commit": "a92f51bc0cb959a9c54d998ef0e7a08d740df8db",
      "tree": "3ec1a51ab807a735f0994a3e64f6429e1be9aea4",
      "parents": [
        "d637fdac0ea396780b12052c7ab9de61744bcd4b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 01 11:50:33 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 02 19:40:19 2018 -0700"
      },
      "message": "ART: Follow-up changes to DexFileVerifier\n\nAddress comments.\n\nBug: 78568168\nTest: m test-art-host\nChange-Id: I9649f4342986995bf2aeb83e89c1ea74a9d9b74b\n"
    },
    {
      "commit": "d5f8de8bc61160bb2cecdcc0f5aa54d151b6176a",
      "tree": "efecd6d3dffd3a1d768b87a111d9e60335d9108c",
      "parents": [
        "9417b6b81393253a56b1b9bb4c7d8a2a2966707e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 27 14:12:03 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 01 16:23:42 2018 -0700"
      },
      "message": "Add CommonArtTest\n\nAdd a test framework that does not start up a Runtime object.\n\nBug: 78651010\nTest: make -j 40 test-art-host\nChange-Id: I6c8af384af5fe1289c6cf137635e94934ac3795d\n"
    },
    {
      "commit": "0e4e814e09bea5c3c169c73122e8ebd53a8d04f4",
      "tree": "ba56aa1c181c59eef8c1090e89fcbe14ee2988fc",
      "parents": [
        "56189d23563610a63064b9ef97e5851f21bcadc8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 25 12:19:34 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 30 13:57:32 2018 -0700"
      },
      "message": "ART: Find and cache indices for method names\n\nCache the range of string indices starting with \u0027\u003c,\u0027 especially the\nwell-defined \"\u003cclinit\u003e\" and \"\u003cinit\u003e,\" to optimize the constructor-flags\ncheck.\n\nSaves about .2% of instructions.\n\nBug: 78568168\nTest: m test-art-host\nChange-Id: I9ed26bb0382a169d945bcec4067c0166c200e227\n"
    },
    {
      "commit": "0b9b1c6d5bb8b10aac7bd686fe5e4b947fdfaccc",
      "tree": "79d4ad69b73ff5237c554638e59335c5d1f69469",
      "parents": [
        "c0147ed51f4e4d6ecfc9fe71e8d7619d79bf1d6a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 25 13:20:30 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 27 09:34:45 2018 -0700"
      },
      "message": "ART: Improve bit-test function\n\nImprove the test for single-bit-set by using POPCOUNT. Saves about\n.1% of instructions.\n\nBug: 78568168\nTest: m test-art-host\nChange-Id: Ifaa5987f1ca9e7507ac6c57dac7da5fae6dcef8d\n"
    },
    {
      "commit": "c0147ed51f4e4d6ecfc9fe71e8d7619d79bf1d6a",
      "tree": "c9953d926d2aef1f9869cf8a0dd745ca34b14e73",
      "parents": [
        "3153915714c48a57fecb5e41ca10b7fb16df52f6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 25 13:40:09 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 27 09:04:29 2018 -0700"
      },
      "message": "ART: Templatize dex-file-verifier check code\n\nTemplatize by item type to avoid repeated checks. This saves about\n1.4% of instructions.\n\nBug: 78568168\nTest: m test-art-host\nChange-Id: I002c99ac1241a33ada85c1a991fb77ff06f76ebe\n"
    },
    {
      "commit": "3153915714c48a57fecb5e41ca10b7fb16df52f6",
      "tree": "9d259c272733c89475da3d202027d58d35015c55",
      "parents": [
        "a111ab1f5703ce839983a86caffae9bcad34c86f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 25 13:34:29 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 27 09:04:29 2018 -0700"
      },
      "message": "ART: Use alloca to avoid an expensive allocation\n\nAttempt to avoid a new[] for common cases.\n\nBug: 78568168\nTest: m test-art-host\nChange-Id: I393ecdeef58f885f6e7a6ffa216ed37a4726c227\n"
    },
    {
      "commit": "a111ab1f5703ce839983a86caffae9bcad34c86f",
      "tree": "38366c057cea39db660576c9c9c44b4353781853",
      "parents": [
        "0ecbdb32eb0f829614c25a54a165f43c3ad676f8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 25 11:41:13 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 27 09:04:29 2018 -0700"
      },
      "message": "ART: Refactor class-def retrieval\n\nPeel the first loop iteration to avoid excessive branches and loads.\n\nBug: 78568168\nTest: m test-art-host\nChange-Id: I22f403254b01d34837dde1decc05e2d00700ffeb\n"
    },
    {
      "commit": "8047d8477c5723ae8cc9411531d0c5d6444ed974",
      "tree": "8cd0fb7962e064060683581d0b53afac44c46481",
      "parents": [
        "189ee81f9768f4ffbd3ffa52997a229c81ac0c7e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 25 08:40:42 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 25 10:12:39 2018 -0700"
      },
      "message": "ART: Change direct-method overlap detection\n\nAvoid allocations in a hash set when trying to ensure that there are no\nmethod-ids denoting both direct and virtual methods. Instead use a copy\nof the item iterator, as the methods are guaranteed to be sorted.\n\nSaves 1% of instructions for a compiler-filter\u003dextract compact-dex-level\u003dnone\ncompile:\n\n                 Before             After\nSmall app      545,345,563       540,654,732\nLarge app    8,040,713,801     7,956,413,657\n\nBug: 78568168\nTest: m test-art-host\nChange-Id: Ia2a0fbb82dad5d9fa781cbab46fe543d1dd0645e\n"
    },
    {
      "commit": "4a68b66f468e1df989cc6f1526dadd1618e4f793",
      "tree": "ec1dc5e0f60a6a6d1c8ec7d91842f98bbdc704f0",
      "parents": [
        "a90cc8715f31f3f082cb113129f05ec21ebd14ca"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Fri Apr 20 12:16:36 2018 -0700"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Fri Apr 20 19:18:36 2018 +0000"
      },
      "message": "Remove unnecessary definition of \u0027art::Split\u0027\n\nBug: http://b/78352390\n\nFix duplicate symbol warning found with lld\n\nTest: build with\nhttps://android-review.googlesource.com/c/platform/art/+/669149 and\nverify that the duplicate symbol warning is no longer generated.\n\nChange-Id: Ie77d1bfaa84ec034ef9bc39dd63422d859e0f7c5\n"
    },
    {
      "commit": "9c4a015cf01989597fd899011dba310b704dacaa",
      "tree": "17101dd177beb28c1d28c8eddab645bc7d1af984",
      "parents": [
        "6485701497edf2fd4e5296c3715929ad44ea9752"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 05 12:23:54 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Apr 09 23:30:08 2018 +0000"
      },
      "message": "Move more runtime code to libartbase, libdexfile\n\nMove some code that logically belongs to libartbase or libdexfile to\nthose places respectively.\n\nBug: 22322814\nTest: make -j 50 checkbuild\nChange-Id: Idfded5d24b40d8587011681e6235b6672846da19\n"
    },
    {
      "commit": "dffcbe9d8686bc2010695c95c3a6573596af34fe",
      "tree": "0009e320164629b6cff4a2e1ea06bab0a43e38e3",
      "parents": [
        "faa7b29f1e0c311e42ab5a265cb1b17036ca5a10"
      ],
      "author": {
        "name": "John Stuart",
        "email": "johnstuart@google.com",
        "time": "Fri Apr 06 16:31:43 2018 -0700"
      },
      "committer": {
        "name": "John Stuart",
        "email": "johnstuart@google.com",
        "time": "Fri Apr 06 16:31:43 2018 -0700"
      },
      "message": "Remove unused DexFile UTF-16-based string lookup\n\nDexFile has 2 methods for finding a string ID given an input string:\n- MUTF-8 (C null-terminated)\n- UTF-16\n\nOnly the first one is used in ART.\n\nBug: 77725588\nTest: test-art-host\nChange-Id: I2bdaecf4914aa346b77c9a0f6ad17f96abbead9d\n"
    },
    {
      "commit": "11ed0275c48ad9a6301d914d3344a27467fcaf0c",
      "tree": "ad3995e2cc5ba7c1ac269e10712cd979a00de6f5",
      "parents": [
        "dd43fe71d956ca16aecf3a12d12a02dde72cfe82"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 28 18:18:48 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 29 13:59:43 2018 +0100"
      },
      "message": "[veridex] Detect reflection uses.\n\nAdd HiddenApiFinder to walk over the code item of\napp dex files, and find static linking uses and potential\nreflection uses.\n\nbug: 64382372\nTest: m\n\nChange-Id: I35f0b276703504f2e27a80007d410625ba7c9af3\n"
    },
    {
      "commit": "8e1a7cb303d7c8f763dfb99ae311b820996b1ab4",
      "tree": "ea952245e2b907c44d5c0fcadf90f00a1fe31913",
      "parents": [
        "10c4390a7d63775b1c7e6f6a291e9aade388d733"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 27 08:14:25 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 27 18:15:21 2018 +0100"
      },
      "message": "Revert \"Revert \"Allow hidden API access from system libraries\"\"\n\nLibraries like RemoteDisplay provide an APK that an app loads into\nits process and which accesses internal APIs on the app\u0027s behalf,\nwithout exposing the internals to the app. These libraries are\nconsidered part of the platform, but were not exempt from hidden API\nchecks because they are not loaded with the boot strap class loader.\n\nThis patch adds a new flag to DexFile class which the constructor\nsets to true of the canonical location of the newly loaded dex file\nstarts with \"${ANDROID_ROOT}/framework/\". Hidden API enforcement\nthen checks this flag when determining whether the caller of\na hidden class member is allowed to access it or not.\n\nThis reverts commit 0127b71a2588efcd1a53c192c5c267157878b010.\n\nPrevious CL saw two issues:\n- buildbots would set non-existent ANDROID_ROOT for host-side builds\n- calling realpath on unquickened dex files would overflow the stack\n\nBug: 64382372\nBug: 76138670\nBug: 76165623\nBug: 76112393\nBug: 76452688\nBug: 76429651\nTest: art/test.py --target -r -b -t 674-hiddenapi\nTest: SystemUI APCT test\nChange-Id: Ie07a088509002593353965d3d24bf7362b643f40\n"
    },
    {
      "commit": "0127b71a2588efcd1a53c192c5c267157878b010",
      "tree": "cfe89ca742bed927e67d9cf926937fe5e6f89347",
      "parents": [
        "eefabd28c21e6ae02ca05e97bd22f9e23cbf98a5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 26 19:31:41 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 26 19:31:41 2018 +0000"
      },
      "message": "Revert \"Allow hidden API access from system libraries\"\n\nBug: 64382372\nBug: 76138670\nBug: 76165623\nBug: 76112393\n\nSeems to cause run-test issues.\n\nThis reverts commit eefabd28c21e6ae02ca05e97bd22f9e23cbf98a5.\n\nChange-Id: Ia9b3d946742dbfde4fb56cf14413fde0600c8252\n"
    },
    {
      "commit": "eefabd28c21e6ae02ca05e97bd22f9e23cbf98a5",
      "tree": "58e4c2635e0d5682c3385bed639664ccfdd44f6a",
      "parents": [
        "e8a4e378c5a928d5de07bee6db99150a57dabcd8"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 22 16:27:18 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 26 08:05:33 2018 +0000"
      },
      "message": "Allow hidden API access from system libraries\n\nLibraries like RemoteDisplay provide an APK that an app loads into\nits process and which accesses internal APIs on the app\u0027s behalf,\nwithout exposing the internals to the app. These libraries are\nconsidered part of the platform, but were not exempt from hidden API\nchecks because they are not loaded with the boot strap class loader.\n\nThis patch adds a new flag to DexFile class which the constructor\nsets to true of the canonical location of the newly loaded dex file\nstarts with \"${ANDROID_ROOT}/framework/\". Hidden API enforcement\nthen checks this flag when determining whether the caller of\na hidden class member is allowed to access it or not.\n\nBug: 64382372\nBug: 76138670\nBug: 76165623\nBug: 76112393\nTest: art_dex_file_loader_test gtest\nTest: art/test.py --gtest\nChange-Id: If062bd668d7ba494bbb7b828e40932748d173b9a\n"
    },
    {
      "commit": "d45863a976c2fd10cf179d8ff42926a7a37c70f0",
      "tree": "5c75cee282e815780c56127e13fb420a0851b54e",
      "parents": [
        "9ec1e24ebc683b15bb9c6db5554ac2ff9458adae"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 21 18:16:36 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 21 18:28:28 2018 -0700"
      },
      "message": "Run dex verifier for OOB + compact-dex-level combination\n\nPreviously, there was logic to not run the dex verifier if\ncompact-dex-level was not \"none\". The idea was that the dex writing\nwould have run the verifier. This caused issues for OOB APKs since\nthese don\u0027t write out the DEX. This CL moves the dex verifier\navoidance logic to the dex loader for the compact dex input case.\n\nBug: 75970654\nTest: test-art-host\nChange-Id: Ic7af6857edb8f7d8e449fee6a544f184aad79b3a\n"
    },
    {
      "commit": "312f3b2fd0094c028a7d243b116947a35a745806",
      "tree": "3d7ec049ded98c489098c87250c75e3f711f8290",
      "parents": [
        "0a3d5eb2ff9e70fa5785638da938439835d0337e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 19 08:39:26 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 19 11:02:48 2018 -0700"
      },
      "message": "Move some remaining dex utilities\n\nThere were several utilities related to building/walking/testing dex\nfiles that were not in libdexfile.  This change consolidates these.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Id76e9179d03b8ec7d67f7e0f267121f54f0ec2e0\n"
    },
    {
      "commit": "c17b7d80652765750fa7f2baf236061014b23f93",
      "tree": "1be2a3330aab9d6b216bd90685e0133ce5bd597e",
      "parents": [
        "2a66809d28c9ee1cbabe52991dbf526095c96c04"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 14 14:00:04 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 15 09:27:08 2018 -0700"
      },
      "message": "Add owned section for CompactDex\n\nThe owned section is the part of the shared data section owned by\na given dex file. This enables efficiently attributing an offset to\na dex file.\n\nBug: 74443371\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I2de9a281e18b02a20c3dcf5f484eacb591220cdc\n"
    },
    {
      "commit": "281fee0dd44a4349fec38fd6f6348ca381c80218",
      "tree": "e82420586df1049df822cec0e33ac52df35e62e9",
      "parents": [
        "8ba5641ddc43fc13cdb0158bd9f3237c4a90a356"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 05 12:59:30 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 08 10:36:56 2018 -0800"
      },
      "message": "ART: Remove static libbase\n\nExcept for static binaries, do not include a static copy of libbase.\n\nBug: 34867873\nTest: mmma art\nChange-Id: I6ed37b45c01c9dac33c4fc3bb71ee416138c2cb8\n"
    },
    {
      "commit": "c431b9dc4b23cc950eb313695258df5d89f53b22",
      "tree": "422273559c3ae52caff0c6b1cf1a62a8312f0e26",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 02 12:01:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 05 13:58:20 2018 -0800"
      },
      "message": "Move most of runtime/base to libartbase/base\n\nEnforce the layering that code in runtime/base should not depend on\nruntime by separating it into libartbase.  Some of the code in\nruntime/base depends on the Runtime class, so it cannot be moved yet.\nAlso, some of the tests depend on CommonRuntimeTest, which itself needs\nto be factored (in a subsequent CL).\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host\n\nChange-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2\n"
    },
    {
      "commit": "67bf42e89592c3a1c648f927f2ce3ccb189a1161",
      "tree": "054d5b7adf7cc62d4d2a2118a70c0fbdd1751610",
      "parents": [
        "d961043ff1dd6fddb68aa90c1f939cfafec24219"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Feb 26 16:43:04 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 28 15:08:21 2018 -0800"
      },
      "message": "Header library to remove dependence on runtime/\n\nAdd a new header library to remove libdexfile and others\u0027 dependence on\nruntime (typically runtime/base) includes in libdexfile.  Also a small step\nto tease dexlayout and profman away from relying on these as well.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n\nChange-Id: I38e2fe399a75f4bc6318c77a71954c00ea73ec2b\n"
    },
    {
      "commit": "66ff8a8b82ff103d48d40e8dad01342c2d6f6d0d",
      "tree": "f1e177b7276d0387bc109fa12e6bd4cde060d5e9",
      "parents": [
        "878124c13b794900b0f5c437f52ac0f61538ab55"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 28 13:27:55 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 28 13:31:13 2018 +0000"
      },
      "message": "Revert \"Revert \"Full-stack integrity: check vdex contents.\"\"\n\nbug: 30972906\n\nInitial revert due to \u0027check\u0027 file of the test needing updating for target tests.\n\nThis reverts commit a19b7649faf8780737be7ce3ec48a12d81c6d69f.\n\nChange-Id: I455780bd88cd89ff80c9084d399e2beeb819b95f\n"
    },
    {
      "commit": "cc4e7b7c7b37d9f7bd6e2bfe22e36308150dddad",
      "tree": "a9320d2f496ca2795e521e73181f8bd126c81724",
      "parents": [
        "6dfaa0c6dc4a6906bd8522a9d9189be378695e0f",
        "a19b7649faf8780737be7ce3ec48a12d81c6d69f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 17:26:27 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 27 17:26:27 2018 +0000"
      },
      "message": "Merge \"Revert \"Full-stack integrity: check vdex contents.\"\""
    },
    {
      "commit": "a19b7649faf8780737be7ce3ec48a12d81c6d69f",
      "tree": "a96372834531ab26b0fae78ce9ef4fecac3ef2c1",
      "parents": [
        "d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 17:26:11 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 17:26:11 2018 +0000"
      },
      "message": "Revert \"Full-stack integrity: check vdex contents.\"\n\nbug: 30972906\n\nTest fails on device.\n\nThis reverts commit d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb.\n\nChange-Id: I53902b0d6d4dbe8237f61bf01542acf538229c71\n"
    },
    {
      "commit": "7b5e244b9920de20807487b0bffee7ebb7f24ce4",
      "tree": "32d895616958a521bb11aab4d9434df8b843adc9",
      "parents": [
        "c57b3ae06f78b7386b6866a1ea265b3c790026dc",
        "d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 27 12:24:54 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 27 12:24:54 2018 +0000"
      },
      "message": "Merge \"Full-stack integrity: check vdex contents.\""
    },
    {
      "commit": "d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb",
      "tree": "596ef15de83798868d8e6c6cb6cbcb9a45e203e8",
      "parents": [
        "b81dedbf4eae5c5a7e65836d3b6d3b6d541b6fa9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 15 13:56:50 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 10:40:05 2018 +0000"
      },
      "message": "Full-stack integrity: check vdex contents.\n\nFor priv-apps, if a vdex on /data has dex code, it must\nbe because the APK has compressed dex code.\n\nFall back to APK if not.\n\nFor test convenience, update --copy-dex-files to also\ntake a \"always\" variant.\n\nbug: 30972906\nTest: 677-fsi\n\nChange-Id: I49f0eab46650145316a86de2971a3b9c140bcff7\n"
    },
    {
      "commit": "2daa13448d5caeb7eb4f7fd3981c0d430264c7c3",
      "tree": "547222519fc7627a99eae914fbaa39eb294a82c6",
      "parents": [
        "b2f1edc3d1f162bd9007f10bc66009eac5b2daab"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 20 16:19:28 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 22 10:37:31 2018 -0800"
      },
      "message": "Fix unquickening logic for quickened input dexes\n\nIn the case where an input dex is already quickened (i.e.\nobfuscation), do not attempt to unquicken it. This is done by\nswitching the quicken info table to the compact offset table (used by\ncdex debug infos).\n\nAdded test.\n\nPosssible to get a bit of extra savings by deleting the quicken info\nnum entries field.\n\nQuicken filter size regression average on golem: -0.14%.\n\nBug: 72608794\nBug: 63756964\nTest: test-art-host-gtest-dex2oat_test -j64\nChange-Id: I5534a7509b4c718a9b959fa43b82bde857e0b59e\n"
    },
    {
      "commit": "b2f1edc3d1f162bd9007f10bc66009eac5b2daab",
      "tree": "f4c196b5f313167737835a33227778eaf62ac774",
      "parents": [
        "b81dedbf4eae5c5a7e65836d3b6d3b6d541b6fa9",
        "b2ec9f5c128673c43f776cbe12c8eeb0a6884ebb"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 22 16:20:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 22 16:20:17 2018 +0000"
      },
      "message": "Merge \"Remove duplication, split tests\""
    },
    {
      "commit": "b81dedbf4eae5c5a7e65836d3b6d3b6d541b6fa9",
      "tree": "a96372834531ab26b0fae78ce9ef4fecac3ef2c1",
      "parents": [
        "8ccef7e84280f63723588c1ad6194af0910e24d6",
        "b8b9387c0d7420b463a9ca11bf18ae86f3ed0a65"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 22 14:49:12 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 22 14:49:12 2018 +0000"
      },
      "message": "Merge \"ART: Support for VarHandle invokers\""
    },
    {
      "commit": "b8b9387c0d7420b463a9ca11bf18ae86f3ed0a65",
      "tree": "d7fba6a12a1d074d8d0c1a80d1eae0fd9a41b5ed",
      "parents": [
        "ae3c5cc582442e3493aa23155f2ee2f6b4613923"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jan 30 07:51:10 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Feb 22 12:45:02 2018 +0000"
      },
      "message": "ART: Support for VarHandle invokers\n\nEnables VarHandles to invoked by a MethodHandle.\n\nBug: b/65872996\nTest: art/test/run-test --host 713\n\nChange-Id: I4672dd50654396c2b45bd212a523698cf22879eb\n"
    },
    {
      "commit": "1c128fa54eee5405be816402ac7fb0b299e9106d",
      "tree": "f0fd0cf305bfa5907a44f4ebf7290f007478c25f",
      "parents": [
        "5b3628898b84f6fb0e9deefff1e551946edcd596",
        "ccb0019c9c60617dcd420c6c92a931e1d82c4920"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 22 03:00:54 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 22 03:00:54 2018 +0000"
      },
      "message": "Merge \"Fix a memory leak\""
    },
    {
      "commit": "5b3628898b84f6fb0e9deefff1e551946edcd596",
      "tree": "6f0e0b482f23a9a1fdb4cf3699132e87fc3379be",
      "parents": [
        "8f6dc914758848c91a7d8a0a6733c8e24b9fa384",
        "b69d2d3c3af7a7a62efb38d04dec878ea9b0b43c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 22 02:29:08 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 22 02:29:08 2018 +0000"
      },
      "message": "Merge \"Remove generate-operator-out.py symlinks\""
    },
    {
      "commit": "b69d2d3c3af7a7a62efb38d04dec878ea9b0b43c",
      "tree": "4220e5b7475b5c53b19609ef46d1d081bf8357cb",
      "parents": [
        "c758875461cca47d1b342c3c56a218a704b04365"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 21 13:37:17 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 21 22:42:13 2018 +0000"
      },
      "message": "Remove generate-operator-out.py symlinks\n\nRewrite the operator out step to use a python_host_binary instead.\nTest: mma -j50\n\nChange-Id: I1503ad9851bf6d7bae8964f7cb91ba7f19b660ca\n"
    },
    {
      "commit": "b2ec9f5c128673c43f776cbe12c8eeb0a6884ebb",
      "tree": "724022162a4f3de021cebab32ee5ac67ec860f32",
      "parents": [
        "f13343eb8b2738e2812fd7bd9d5592f529e93c21"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 21 13:20:31 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 21 13:51:15 2018 -0800"
      },
      "message": "Remove duplication, split tests\n\nThe code move to libdexfile/dex/descriptors_names.cc apparently did not\nremove the original code from runtime/utils.cc.  Fix that duplication\nand all the header mentions needed.  Also, split the test files to go\nalong with the new locations for the code to be tested.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n      flash \u0026 boot marlin\n\nChange-Id: Ie734672c4bca2c647d8016291f910b5608674545\n"
    },
    {
      "commit": "5e3cfa295a44d4f1a0eb26134c6f866b27245a9f",
      "tree": "fa079fd6d865b1270a88248cd9919902ab387f46",
      "parents": [
        "1efb431b478bbae9d959fad6a58863a4c1b0b47f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 20 16:53:37 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 20 18:17:21 2018 -0800"
      },
      "message": "Generalize CompactDexDebugInfo offset table\n\nRenamed the class to CompactOffsetTable.\n\nMotivation: Use this table for quicken info offsets too.\n\nBug: 72608794\nBug: 63756964\nTest: test-art-host-gtest\nChange-Id: Idcb5355d8a5e4354bc3694152a7270047bed9d0a\n"
    },
    {
      "commit": "ccb0019c9c60617dcd420c6c92a931e1d82c4920",
      "tree": "2933beeccfa8ea7f51d51d65f996b5f475ccf867",
      "parents": [
        "b2a9999a6d1bb804f06902404879bdbe55ed0ec3"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Sat Feb 17 23:16:39 2018 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Sun Feb 18 21:57:10 2018 -0800"
      },
      "message": "Fix a memory leak\n\ndex_file is meant to take ownership of `container`. There\u0027s at least\none path (`error_msg \u003d \"Invalid or truncated dex file\";`) where\n`container` never gets passed along to a dex_file.\n\nCaught by the static analyzer:\nart/runtime/dex/dex_file_loader.cc:406:45: warning: Potential memory\nleak\n\nBug: None\nTest: Reran the analyzer. Memory leak complaints are gone.\nChange-Id: Ib57008e444d32b366bb2beabec8e39b8e84fd9db\n"
    },
    {
      "commit": "b09289548f89b56b36c03d3dc698568ccf298edd",
      "tree": "99d8efa0096d1c436e88bed3b64c8d75b6d2081b",
      "parents": [
        "cabc6df1eaa0d15f552033a1d8e62505fbef607a",
        "999646d7f3b2ced25a995c020d19a55caf3c18d5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Feb 17 00:40:50 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Feb 17 00:40:50 2018 +0000"
      },
      "message": "Merge \"Dex header cleanup and windows simplification\""
    },
    {
      "commit": "999646d7f3b2ced25a995c020d19a55caf3c18d5",
      "tree": "870d9d5d33bca66f4891f66a0b53505508ebe009",
      "parents": [
        "0694a5527862fc76056458622759976fa41d4da6"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Feb 16 10:22:33 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Feb 16 14:45:23 2018 -0800"
      },
      "message": "Dex header cleanup and windows simplification\n\nRemove a few unnecessary inclusions, move one missed header to\nlibdexfile.  Also use android-base utilities for file loading in\ndexdump2 and dexlist.  (The utilities seem to work on Windows, where\nmmap did not.)\n\nBug: 22322814\nTest: make -j 50 test-art-host-gtest\nChange-Id: I6e6de1895921f664a2280451b01e367649436200\n"
    },
    {
      "commit": "c88a008aacd123ac99ca0742533cf50521d9761b",
      "tree": "1cd3d55f1bf37c51adce92573ada44425351a062",
      "parents": [
        "d937c49b19a6005cf94e23d464415be47e995d9b"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 15 17:08:29 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 16 10:04:52 2018 -0800"
      },
      "message": "Ensure that apis are unhidden even if there is no vdex\n\nWe were relying on the vdex to unhide apis during dequickening for\nJVMTI. This meant that hiddenapi flags could get through if there is\nno vdex file. We fixed this by making sure to get rid of hiddenapi\nflags even without vdex.\n\nBug: 73177368\nTest: ./test/run-test --dev --host --interpreter 674-hiddenapi;\n      # Examine output for slicer crashes.\nChange-Id: I8530afe11de8c5132470591564a089ca073efaca\n"
    },
    {
      "commit": "fcbe15ce26930c0c4bb33998fc2abbe4f8770dbe",
      "tree": "6513a2eaf1251e93578916b5171dc42984de7da3",
      "parents": [
        "b40fa7c33075292beeb6840ac679ffd08fd1f719"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 15 09:41:13 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 15 15:15:13 2018 -0800"
      },
      "message": "Build debug library libdexfiled\n\nAdd a debug version of libdexfile for use when CHECKs, etc., are\nenabled.\n\nBug: 22322814\nTest: make -j 50 checkbuild\nChange-Id: I263138611bcdde9dbc8f619bcb2a0a6d3a09fbf6\n"
    },
    {
      "commit": "334b9d73482fba9c335d9b758041fc0865ef74d4",
      "tree": "1e0d2050065110c37ee03ee8010ec24c8d31f32e",
      "parents": [
        "db8d9091bbab41060584ab80882b60df20337da7"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Feb 12 18:27:56 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 14 10:57:05 2018 -0800"
      },
      "message": "Move libdexfile out of runtime\n\nMove the files out of runtime, leaving unfortunate dependences still\nthere on runtime/base (for the moment).  Also separates the build logic\ninto two Android.bp files.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ib0a1cda833b29ecfa4c8c50f23fab89ba666f491\n"
    }
  ]
}
