)]}'
{
  "log": [
    {
      "commit": "7210108e6d930f9b8bcf5eac6b7a03ea29f92f84",
      "tree": "809a2477f11a98eeb5f258635489424841e6feba",
      "parents": [
        "2ef01100bb56b3f8ab5fbc886a7066d721290d74"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 05 16:16:30 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 14:05:17 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in art/runtime/.\n\nAnd in art/test/.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I14c7cddd7ba4fb2183c643d32a89b594008d8bd0\n"
    },
    {
      "commit": "4bcd65753c1e49ceba2c41983f26af81ae319670",
      "tree": "3fc7bd53d37448621726dc508f173490807af9c7",
      "parents": [
        "2da3cbb4af20a64108e474c0bbbe0cc5d3af2aa2"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Feb 02 20:08:44 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 04 15:00:20 2019 +0000"
      },
      "message": "Take hidden API into account during getDeclaredMethod()\n\nGenerics make it possible for two methods to have the same name and list\nof parameters but differ in their return type. Class.getDeclaredMethod()\ndoes not allow callers to specify the type, so either of the matching\nmethods can be returned (ART will prefer the non-synthetic one).\n\nHowever, Class::GetDeclaredMethodInternal() did not use to take hidden API\ninto account and could return a hidden method, despite a non-hidden one\nbeing available. The reflective call would then reject the method and\nthrow NoSuchMethodException.\n\nThis patch modifies Class:GetDeclaredMethodInternal() to consider:\n(a) hidden/non-hidden\n(b) virtual/direct\n(c) synthetic/non-synthetic\nin that decreasing order of importance and pick the best matching\nmethod. The hiddenness checks are performed with AccessMethod::kNone\nso as to not trigger warnings. A hidden method may still be returned and\nthe caller should do the access check again with the appropriate\nAccessMethod.\n\nBug: 122291025\nTest: art/test.py -r -t 690-hiddenapi-same-name-methods\nChange-Id: Iaee780c1e87f5587f51e24b517b2b37101c729e3\n"
    },
    {
      "commit": "e7681823f8259c8c04ce0c361746216606784e69",
      "tree": "8bd248fc6be126d7d4e55bb4072ed24b2851ebbd",
      "parents": [
        "90faceb71e25748172ba6369209f8a2a66735394"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Dec 14 16:25:33 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 21 10:22:27 2019 +0000"
      },
      "message": "hiddenapi: Print warnings for @CorePlatformApi violations\n\nWhen accessing a method/field at runtime, determine the context of both\nthe caller and the callee, and add new logic for the case\n\"platform -\u003e core-platform\" which used to be always allowed.\n\nIf the callee is marked with kAccCorePlatformApi, access is allowed.\nIf not, a warning is printed into logcat.\n\nBug: 119068555\nTest: 674-hiddenapi\nChange-Id: I64839596bf6eb06d7a169fd59b18fd82c140ce6e\n"
    },
    {
      "commit": "62629598f845c2efec0dff652e440e8fbcce4b8a",
      "tree": "7af96934e7ca5313787a9b328e85e6606645c4e5",
      "parents": [
        "d77abd9e128f60917f712b8da84bab46e3ed5870"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 16:08:31 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 16:09:07 2019 -0800"
      },
      "message": "ART: Some more IWYU in common headers\n\nForward-declare a few structs and classes. Remove unused includes.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I21215cee39269b373784d6a82577039322a4a950\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "ca7027d30aa8b1abf4ef76dda156dd893234ddca",
      "tree": "def9167e4686b07da887e0a51afb7558195d26dd",
      "parents": [
        "7201ef48fb42cc36824126a26f758f02c9200bad",
        "776a7c294f6356b314505369679bffc73f4a345e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 21 16:12:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 21 16:12:17 2018 +0000"
      },
      "message": "Merge \"ART: Add CRC32.updateByteBuffer intrinsic for ARM64\""
    },
    {
      "commit": "f05ad2a8d1e573c4d1aa0f3add9c721c0a8eb894",
      "tree": "8d26dcb9c406b9840586adfa62b4fdf0ec0a12b2",
      "parents": [
        "6c22540b2c21399285abd390fbef9f2ea1ea794f",
        "9fd68f6795eab7085986f80b1c4d00dc45a68485"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 01:14:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 21 01:14:21 2018 +0000"
      },
      "message": "Merge \"Revert \"Suspend the runtime when switching interpreters.\"\""
    },
    {
      "commit": "9fd68f6795eab7085986f80b1c4d00dc45a68485",
      "tree": "960357f9bc42471a0a97ba6e7da5b380aeb83f87",
      "parents": [
        "01e1d3217c9b6ad5b3f118a539bea6778ad6096c"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 00:33:46 2018 +0000"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 00:33:46 2018 +0000"
      },
      "message": "Revert \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 01e1d3217c9b6ad5b3f118a539bea6778ad6096c.\n\nReason for revert: JDWP JIT and Interpreter tests on hosts failing.\n\nChange-Id: I95bbda936c573983ff0c6041267bffaa73315cb7\n"
    },
    {
      "commit": "6c22540b2c21399285abd390fbef9f2ea1ea794f",
      "tree": "fd2d25c8d893aa2138280a2a0069b95aa4ebb4be",
      "parents": [
        "d88f3eba1a2c879b362ffdcb3ce0acfff4570db4",
        "e3fc2d1644fd788509b834b01b83a28595721c47"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 20 23:23:13 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 20 23:23:13 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"Reduce the number of calls to Jit::AddSamples.\"\""
    },
    {
      "commit": "b7e23dcd0c499bc00632666328810483f39aece6",
      "tree": "061b7987e0d01e9c5689c2f50d7898802d2d5c70",
      "parents": [
        "adf595900e6f6328c68a15b88f53529cb5e520f3",
        "01e1d3217c9b6ad5b3f118a539bea6778ad6096c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 20 16:18:32 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 20 16:18:32 2018 +0000"
      },
      "message": "Merge \"Suspend the runtime when switching interpreters.\""
    },
    {
      "commit": "776a7c294f6356b314505369679bffc73f4a345e",
      "tree": "ec1d678a0923d2c7ec869f806f5b4860e1a1a721",
      "parents": [
        "8ceeb2ede9a7280fab618dfcb55f424a79dc00ca"
      ],
      "author": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Mon Dec 17 11:40:34 2018 +0000"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Wed Dec 19 23:01:02 2018 +0000"
      },
      "message": "ART: Add CRC32.updateByteBuffer intrinsic for ARM64\n\nUse crc32 instructions for\njava.util.zip.CRC32.updateByteBuffer(int, long, int, int).\n\nNote that CRC32 is an optional feature in ARMv8, this intrinsic\nis only enabled for devices supporting the CRC32 instructions.\n\nThe performance of the intrinsic is the same as the performance of the\nCRC32.updateBytes intrinsic. However the intrinsic does not have a\nrestriction on the size of the byte buffer. For big input data\nthe intrinsic will be faster than CRC32.updateBytes.\n\nTest: m test-art-target-gtest\nTest: m test-art-host-gtest\nTest: art/test.py --target --optimizing\nTest: art/test.py --host --optimizing\nTest: 580-crc32\n\nChange-Id: I6b6160b56e829731402bd5fc56bcac59664f634d\n"
    },
    {
      "commit": "01e1d3217c9b6ad5b3f118a539bea6778ad6096c",
      "tree": "7fc2ff1a143a66990485ed36afd24f98f50de646",
      "parents": [
        "58431a7cf863b2eb7fe25eff6a28ec376f2f151d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 29 19:48:58 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 14 17:02:46 2018 +0000"
      },
      "message": "Suspend the runtime when switching interpreters.\n\nMake the interpreter switch more deterministic by suspending.\n\nThis also allows to remove some of the checks - for example,\nif we are in mterp the conditions must be favourable already.\n\nTest: ./art/test.py -b --host --64\nChange-Id: Ic5fa70592393c7e17decfb84565f3138659340fe\n"
    },
    {
      "commit": "e3fc2d1644fd788509b834b01b83a28595721c47",
      "tree": "ed18c7651b9968486ea91d7717f6e6bd1dbdb674",
      "parents": [
        "58431a7cf863b2eb7fe25eff6a28ec376f2f151d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 30 13:41:14 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 14 16:32:47 2018 +0000"
      },
      "message": "Revert^2 \"Reduce the number of calls to Jit::AddSamples.\"\n\nThe method is called for every invoke which is expensive.\nAdd samples, but don\u0027t check the consequences every time.\n\nThis reduces its cost from 3.5% to 1% (maps on device).\n\nThis reverts commit 0402f4b019c1d6c567b1c56589f1ea9170ab5dcc\nand fixes 667-jit-jni-stub which relied on being able to set\nthe sample count to exactly one below the compilation threshold,\nand then expected the compilation to happen on the next sample.\n\nTest: ./art/test.py -b --host -r --ndebug\nTest: ./art/test.py -b -r -t 570\nChange-Id: I99c6d03f565f17fe6539ed89632d8f8bbda68107\n"
    },
    {
      "commit": "81c61bf0ef90c1fd79694aab49758e16cd0dd044",
      "tree": "7af6bdf9457c4f10c654ec1975fc7b22a9c63cf1",
      "parents": [
        "c2f685a64f819193fb563d33924d233872b8970a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 11 18:57:39 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 13 10:52:08 2018 -0800"
      },
      "message": "ART: Add integrity check\n\nBoot classpath classes are expected to be fully verified. Check in\nthe interpreter that we are not running access-checks for the boot\nclasspath.\n\nBug: 115834172\nTest: m test-art-host\nChange-Id: I39a9313e9a3b99133115e764c0155f2303b65f10\n"
    },
    {
      "commit": "91f1032505cfaec3aef51fc0a3085b213813f0ed",
      "tree": "6469e772d9fb562d26dc1d22dd0b71844bbb743f",
      "parents": [
        "573b3877fac3c5a4a9703301502694fe7219b21c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 18:04:10 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 18:13:55 2018 +0000"
      },
      "message": "Revert^2 \"Pass boot class path to ImageSpace::LoadBootImage.\"\n\nThis reverts commit db4b1deebf425be5f1d0f597d1ef540f19908324.\n\nFixed JDWP tests, see \"Test:\" stanzas below.\n\nChange-Id: I6fb56ac990b78164cbd3f93c9f6df66e0dd9a813\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nTest: run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003ddevice --variant\u003dX64\nBug: 119868597\n"
    },
    {
      "commit": "db4b1deebf425be5f1d0f597d1ef540f19908324",
      "tree": "5851aab8a4d71b49dbd272b822bfd1ae2cbd08df",
      "parents": [
        "e3c6dfe2009d2fad6f8e4401cb17935bdd09ab9e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 17:18:07 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 17:23:26 2018 +0000"
      },
      "message": "Revert \"Pass boot class path to ImageSpace::LoadBootImage.\"\n\nThis reverts commit d19085141ad9c71eae1b0ff585999ac8e27dadd4.\n\nAlso squash a revert of\n    Fix oatdump tests on target.\n    (commit 77eea0898aca2881a87afd177a0422870c39a318)\n\nReason for revert: Broke JDWP tests.\nBug: 119868597\nChange-Id: I005097d2d96014c961e5a4c0b089e7675004febc\n"
    },
    {
      "commit": "a6dd280a61bdb09f608dd920d23394a5b6223ef4",
      "tree": "b1fad48bb4d4ed7ca39ec5c250d20d1238739028",
      "parents": [
        "17ed987eeebdebbd1b923c3c2a6887a233cb7517",
        "15c5b97d0093a804881acf3a53bda8b6b4c1521d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 10:19:34 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 07 10:19:34 2018 +0000"
      },
      "message": "Merge \"ART: Add CRC32.updateBytes intrinsic for ARM64\""
    },
    {
      "commit": "a9a0973ff03ce2c2d1ec65695ad0f4cd8ed170a7",
      "tree": "9f00efead2c694b2a590f8c4890a9052571bbcff",
      "parents": [
        "260a50cb43618dfdd325e7c89745d8bc38b20292",
        "d19085141ad9c71eae1b0ff585999ac8e27dadd4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 07:51:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 07 07:51:00 2018 +0000"
      },
      "message": "Merge \"Pass boot class path to ImageSpace::LoadBootImage.\""
    },
    {
      "commit": "15c5b97d0093a804881acf3a53bda8b6b4c1521d",
      "tree": "ad6befd10a3d6dee0f1667d254374e267ad89ce7",
      "parents": [
        "cfc4b3ac67b364d753d970d1adcf97668114e959"
      ],
      "author": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Tue Nov 20 13:41:40 2018 +0000"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Thu Dec 06 22:19:23 2018 +0000"
      },
      "message": "ART: Add CRC32.updateBytes intrinsic for ARM64\n\nUse crc32 instructions for\njava.util.zip.CRC32.updateBytes(int,byte[],int,int).\n\nThe intrinsic is used if a number of processed bytes is less or equal to\nkCRC32UpdateBytesThreshold. If it exceeds kCRC32UpdateBytesThreshold the\ncore library provided function is used.\n\nNote that CRC32 is an optional feature in ARMv8, this intrinsic\nis only enabled for devices supporting the CRC32 instructions.\n\nThe CL is based on code from tim.zhang@linaro.org.\n\nPerformance improvements - speedup:\narray size | Cortex-A53 | Cortex-A57\n------------------------------------\n128        | 14x        | 20x\n256        | 10x        | 14x\n512        | 8x         | 11x\n1024       | 7x         | 9x\n2048       | 6x         | 8x\n4096       | 5x         | 7x\n8192       | 5x         | 7x\n16384      | 5x         | 7x\n32768      | 5x         | 7x\n65536      | 5x         | 7x\n\nTest: m test-art-target-gtest\nTest: m test-art-host-gtest\nTest: art/test/testrunner/testrunner.py --target --optimizing --interpreter\nTest: art/test/testrunner/testrunner.py --target --jit\nTest: art/test/testrunner/testrunner.py --host --optimizing --interpreter\nTest: art/test/testrunner/testrunner.py --host --jit\nTest: 580-crc32\n\nChange-Id: I0054cea41b5fc3e712e18b0afc7e3eacbf41feb6\n"
    },
    {
      "commit": "7fbc4a59ba2e60d869313d7961662430df83b2cb",
      "tree": "59520285df8d2075412ddc566a0d4d96d4c7e109",
      "parents": [
        "7cc45fd1dbcf5704e442d0443e437aa2ae3fe21b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 28 08:26:47 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 06 11:37:19 2018 -0800"
      },
      "message": "ART: Move to using locks.h instead of mutex.h\n\nWhen only annotating lock requirements, use locks.h.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I1608b03254712feff0072ebad012c3af0cc3dda4\n"
    },
    {
      "commit": "d19085141ad9c71eae1b0ff585999ac8e27dadd4",
      "tree": "24284e84f5df4601bacc2a97c56af1bc5950c253",
      "parents": [
        "523940b40f9701504d6e007dd2af48f315038dc1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 22 14:57:28 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 06 14:43:07 2018 +0000"
      },
      "message": "Pass boot class path to ImageSpace::LoadBootImage.\n\nWhen loading the boot image by ImageSpace, do not rely on\nthe boot class path (BCP) recorded in the primary boot image\noat file. Instead, check the BCP from image against the BCP\nprovided by the Runtime, i.e. from -Xbootclasspath:_ or the\nenvironment variable BOOTCLASSPATH. For now, allow Runtime\nto extract the BCP from the primary boot image oat file when\nwe have -Ximage:_ but no BCP.\n\nAlso pass the boot class path components down to the OatFile\nso that we can open and use the original dex files when we\ndo not have copies in the vdex files. This allows compiling\napp prebuilts when the boot dex files are uncompressed and\naligned in the original jars.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nTest: run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\nTest: Manually create boot image jars with uncompressed and\n      aligned dex files, compile a boot image with dex files\n      not copied into vdex files and use this boot image for\n      compiling a prebuilt services.{art,vdex,odex}.\nBug: 119868597\nChange-Id: If9411ddbecf6bb90bfa9233040931c5e833f6aee\n"
    },
    {
      "commit": "f355ec703f519c3091853d85f61904be6dfb68aa",
      "tree": "82486a5104742260ab35382c0678165ebff85112",
      "parents": [
        "0e211e55fe51adbd6bab7278ff1ceabea21faf78",
        "c1896c9a0e15df3a1b9a3a19bcd2a933b654fe06"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 22:51:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 22:51:00 2018 +0000"
      },
      "message": "Merge \"C++17 compatibility: make WITH_TIDY\u003d1 happy again.\""
    },
    {
      "commit": "c1896c9a0e15df3a1b9a3a19bcd2a933b654fe06",
      "tree": "b68a5f5163f8da0da87d671a225addaa2a13095f",
      "parents": [
        "f2970cd870948a6ee1c8ecd30c9c3147d05aa0be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "message": "C++17 compatibility: make WITH_TIDY\u003d1 happy again.\n\nBug: http://b/111067277\nTest: builds\nChange-Id: I8b69ea3815e14bb6eb27f40c0dd01a85b340a355\n"
    },
    {
      "commit": "c89a28730fb8dff57c6cb5b18295fec45fe85d09",
      "tree": "5d596ced1f30cb59c86179c05f4fb2a947ba5253",
      "parents": [
        "f2970cd870948a6ee1c8ecd30c9c3147d05aa0be",
        "0402f4b019c1d6c567b1c56589f1ea9170ab5dcc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 29 19:19:10 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 19:19:10 2018 +0000"
      },
      "message": "Merge \"Revert \"Reduce the number of calls to Jit::AddSamples.\"\""
    },
    {
      "commit": "0402f4b019c1d6c567b1c56589f1ea9170ab5dcc",
      "tree": "fb0705380c3d1600a08c0e95ed581a967bdf0da0",
      "parents": [
        "db94f2be59e60bde11ac903c5bf30e63ead67992"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 29 19:18:46 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 29 19:18:46 2018 +0000"
      },
      "message": "Revert \"Reduce the number of calls to Jit::AddSamples.\"\n\nThis reverts commit db94f2be59e60bde11ac903c5bf30e63ead67992.\n\nReason for revert: Break 667-jit-jni-stub\n\nChange-Id: Ia84a78be8acb62e87f7cd93e43c2967efac8caab\n"
    },
    {
      "commit": "b2eeca05130c2bb9249850d83aad8281ddfcf5c5",
      "tree": "5a73aa2362725ef41140132d054abb08f313fb46",
      "parents": [
        "9a9f8f627ebcbf609813df548115fe9452556ebf",
        "db94f2be59e60bde11ac903c5bf30e63ead67992"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 29 14:50:36 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 14:50:36 2018 +0000"
      },
      "message": "Merge \"Reduce the number of calls to Jit::AddSamples.\""
    },
    {
      "commit": "9a9f8f627ebcbf609813df548115fe9452556ebf",
      "tree": "73d1d2a2cec915631be13b6dce6950901da54638",
      "parents": [
        "d8eb2f2f2d6ddca682b4aa0703f00bb34069e298",
        "68b926eaa1d907dc830afc8b3f2f0677d134833e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 29 13:44:47 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 13:44:47 2018 +0000"
      },
      "message": "Merge \"Check consistency of mterp vregs before every opcode for slow debug.\""
    },
    {
      "commit": "db94f2be59e60bde11ac903c5bf30e63ead67992",
      "tree": "95d66a33cefefac89f84534ac4f023e76ff096d9",
      "parents": [
        "076c9da66b606057109e5fb2902d28129d120b96"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 09 12:58:28 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 29 11:41:07 2018 +0000"
      },
      "message": "Reduce the number of calls to Jit::AddSamples.\n\nThe method is called for every invoke which is expensive.\nAdd samples, but don\u0027t check the consequences every time.\n\nThis reduces its cost from 3.5% to 1% (maps on device).\n\nTest: ./art/test.py -b -r --host --64\nChange-Id: Ie90da905d067b5d85a3c494c7c9af81b24dc8135\n"
    },
    {
      "commit": "68b926eaa1d907dc830afc8b3f2f0677d134833e",
      "tree": "b3ef5af3a02b282004780967adfc4bb8c3d75d4b",
      "parents": [
        "8f50b2c27f9b32726bbadfcebba910640b94036e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 28 17:43:42 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 28 18:23:02 2018 +0000"
      },
      "message": "Check consistency of mterp vregs before every opcode for slow debug.\n\nTest: ./art/test.py -b -r -t 525 --runtime-option\u003d-XX:SlowDebug\u003dtrue\nChange-Id: Ia156567fb454dc547191941a1bc999a289cd39ed\n"
    },
    {
      "commit": "124bb24394ca89bdc20ff12cafc0546beaf83615",
      "tree": "f9c83798f21a27094ff65d5338844f2fc3f213b5",
      "parents": [
        "8f50b2c27f9b32726bbadfcebba910640b94036e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 23 21:08:49 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 28 17:09:41 2018 +0000"
      },
      "message": "Mterp: Add missing shadow reg clear to op_long_to_double\n\nBug: 118647289\nTest: ./art/test.py -b -r --target --32 --interpreter --gcstress -t 525\n      with shadow_frame-\u003eCheckConsistentVRegs() added to MterpCheckBefore.\nChange-Id: I49c12e9f5c8250b7172e0e8fae7c932b2eb10f69\n"
    },
    {
      "commit": "a0ca79a603a0aecc1f3a723b25589aafb91943c7",
      "tree": "ad4e7325b3ecda008d40d621a31ca7bfdaad7214",
      "parents": [
        "08005628d20b862ea8b3a510a06cf5d6e0147328",
        "561303f94b5262bf939b91eb11feff5dc3a6aab9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 28 14:02:02 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 28 14:02:02 2018 +0000"
      },
      "message": "Merge \"Mterp: Always use macros for vreg reads/writes.\""
    },
    {
      "commit": "e36e7f2226e4e08b7a7094f78cb80bbe0e729c2b",
      "tree": "0787ae19a232728121a60791f3a18094529120f1",
      "parents": [
        "244470afafdb1c5aba17507ef793d316b9c4d038"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 14 14:21:23 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Nov 27 17:31:01 2018 +0000"
      },
      "message": "Store ImtIndex in ArtMethod.\n\nThis avoids recalculation and reduces pressure on the thread local cache.\n\nThis halves the time we spend hashing from 2% to 1% (maps on device).\n\nTest: ./art/test.py -b --host --64\nChange-Id: I2407bd9c222de4ddc6eea938908a1ac6d7abc35b\n"
    },
    {
      "commit": "561303f94b5262bf939b91eb11feff5dc3a6aab9",
      "tree": "818a142401e8e969848dec39867e7854dbb4380d",
      "parents": [
        "244470afafdb1c5aba17507ef793d316b9c4d038"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Nov 20 21:55:42 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Nov 25 14:31:56 2018 +0000"
      },
      "message": "Mterp: Always use macros for vreg reads/writes.\n\nThis makes is easier to find/modify the related code.\n\nTest: No change of the assembly instructions in libart.so\nChange-Id: Ia01a5cbda247bcb06fad4c1d1c903d8c53a56e93\n"
    },
    {
      "commit": "f50ac103426588d9f7c014ef2d2b9c766f8dc25e",
      "tree": "bac6537c3cd63cc382e24d9b94f0eb64f18ab0a4",
      "parents": [
        "b56e8353020acda1a8285daa11c69f57060cd015"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Oct 17 18:00:06 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Nov 14 16:49:40 2018 +0000"
      },
      "message": "Simplify hidden_api.h logic\n\nRefactor GetMemberAction to return a boolean whether access to a class\nmember should be denied. This also moves StrictMode consumer\nnotification into hidden_api.cc and removes notifications for toasts.\nTests are changed accordingly.\n\nTest: phone boots\nTest: m test-art\nMerged-In: I02902143de0ff91d402ba79c83f28226b1822a6f\nChange-Id: I02902143de0ff91d402ba79c83f28226b1822a6f\n(cherry picked from commit 51995f90adaa0e5047dee56d22f15e4225e70517)\n"
    },
    {
      "commit": "790ff518ad4d08ed4fb105f5c011c0ec47e092cd",
      "tree": "bf9def1c8a0567905bec3946ee67fe7410ca3715",
      "parents": [
        "4630f9a032575f75be317fe0d8dc054bbce5790a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 09 18:55:19 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 14 10:01:02 2018 +0000"
      },
      "message": "Add mterp checks after monitor entry/exit opcodes.\n\nCheck whether we are allowed to continue running in mterp.\n\nThis tries to enforce that we bail out of mterp after suspend point\nif needed (in particular, if debugger event switches interpreters).\n\nTest: ./art/test.py -b -r --interpreter\nChange-Id: If2d55e5ece22831ef864c181b7d6d5c70ca50e5d\n"
    },
    {
      "commit": "5f250014f4cc348a573798c4daa191ea1381078d",
      "tree": "ea7937619632fa1fa341563a5b8c443bcf77fd2f",
      "parents": [
        "fdf6401e1594e71a1e86d455d55333b939160bd9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 14:16:38 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 09 11:42:17 2018 +0000"
      },
      "message": "Make exception handling code in switch interpreter NO_INLINE.\n\nExceptions should be rare so the code can be shared.\nThe compiler needs a bit of help with optimization.\n\nIt saves 81k(arm32) and 150k(arm64) from libart.so.\n\nPerformance difference is within noise (golem using the switch).\n\nTest: \"./art/test.py -b -r --interpreter --host\" with switch interpreter.\nChange-Id: I08a5690ceaf6b3cae8c2a486ab809e5604b88e0a\n"
    },
    {
      "commit": "8ed45c876077771455d63dd7e315b439230812f8",
      "tree": "239cc6db092fa00908af0be433b80baff16b172e",
      "parents": [
        "a5de05da46e8a93436e68e7e0d242dce46269527"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 15:08:57 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 17:09:16 2018 +0000"
      },
      "message": "Add test configuration for the switch interpreter.\n\nBug: 31358597\nTest: ./art/test/testrunner/run_build_test_target.py art-interpreter-cxx\nChange-Id: Iebb7a3a5168a27654984f3749a7b86542422671b\n"
    },
    {
      "commit": "a4a96afd95e0819f4f35ece733e9a0731355d0d2",
      "tree": "60abbacda9fcbbdb56392e540aa5c683000812ff",
      "parents": [
        "d4c1c08773414451dda32a4228253c0f443313a2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 31 16:34:58 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 12:25:15 2018 +0000"
      },
      "message": "Share the preamble in switch interpreter.\n\nMove the preamble code to the main loop to avoid replicating it.\n\nThis halves per-file compile time to 0.5 min.\n\nIt saves 225k(arm32) and 348k(arm64) from libart.so.\n\nPerformance difference is within noise (golem using the switch).\n\nTest: \"test.py -b -r --interpreter --host\" with switch interpreter.\nChange-Id: I2615b3568eb79560d2d342ac3dd28f6269ee5e74\n"
    },
    {
      "commit": "47ad3763e0f0e74c6469e899af883a6c4d09d7bf",
      "tree": "d6e67f431a21ee8fbdfe6d2283e1e04587a8aeca",
      "parents": [
        "fe59955fc41e277bf1c60378202ba785abb1e4a8"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 31 12:43:40 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 10:30:21 2018 +0000"
      },
      "message": "Replace switch interpreter macros with C++ functions.\n\nC++ code is more maintainable than huge macros.\n\nThe \"return\" statement was used within the macros to skip the rest\nof the interpreted opcode.  This is slightly more tricky in functions.\nAll such use cases have been replaced with \"return false\", and the\ncalling functions always check the return value and propagate it up.\n\nPerformance difference is within noise (golem using the switch).\n\nThis halves per-file compile time to 1min.\n\nTest: \"test.py -b -r --interpreter --host\" with switch interpreter.\nChange-Id: I01d861dec1c4a7e95e412fd4b662e5a4d7bd55a8\n"
    },
    {
      "commit": "6da8247ebe2e063cc14a5e943fa8b3416edf936a",
      "tree": "2765ad9af2e9aa4132ca66218ee927b35943ec95",
      "parents": [
        "4fc843c4fc9f33c4ba49c1303d526d0e0e6a3788"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 23 14:03:08 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Nov 06 16:22:06 2018 +0000"
      },
      "message": "Split interpreter_switch_impl into smaller functions.\n\nSplit the uber switch statement into smaller functions.\nThose functions are still always inlined in the switch,\nso it makes little difference for the time being.\n\nHowever the separation should allow us to:\n - Remove the excessive use of macros in the interpreter.\n - Add helpers to handle similar opcodes.\n - Simplify the individual opcode handlers.\n - Simplify interactions with mterp.\n - Easily experiment (e.g. switch vs goto dispatch).\n\nPerformance difference is within noise (golem using the switch).\n\nTest: \"test.py -r --interpreter --host\" with switch interpreter.\nChange-Id: I6075b354e0439bf89061f492dd9b9cbe743145cb\n"
    },
    {
      "commit": "cb58b07d233c5f8e910e6e5946da8ac4ec3099f5",
      "tree": "bd19cb9a44555adf51e2d145c322a592c6cd3527",
      "parents": [
        "e2acc339ede3c620a476827880cf68d044dcd53e"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Fri Oct 13 12:06:56 2017 +0100"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Fri Nov 02 10:07:12 2018 +0000"
      },
      "message": "ART: Add CRC32.udate(int,int) intrinsic for ARM64\n\nUse crc32 instructions for java.util.zip.CRC32.update(int,int).\n\nNote that CRC32 is an optional feature on ARMv8, this intrinsic\nis only enabled for devices with CRC32 intruction support.\n\nOriginal author: tim.zhang@linaro.org\n\nPerformance improvements in CRC32Bench.UpdateInt:\nPixel 2: 22.8x\nNexus 6P:\n  little core: 28.3x\n  big core   : 21.6x\n\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing --jit --interpreter\nTest: 580-crc32\n\nChange-Id: I1a9bc2befd2934b04103a27ce05806e919874070\n"
    },
    {
      "commit": "9581e6176c78f3f2a8f40ff9d5a6c4d4029253fb",
      "tree": "e12f130a067566c9360b04e14714e8743c9e21ae",
      "parents": [
        "30890f6af9bae6ece7267c72e3c82e3c61da4d9e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 30 14:29:43 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 31 09:42:07 2018 +0000"
      },
      "message": "Cache whether we should use interpreter invoke fast-path.\n\nThere is many conditions to check on each invoke.  If they all pass,\ncache the result in the access flags of the called ArtMethod.\n\nThis speeds up arm64 golem interpreter benchmarks by 4%.\n\nTest: ./art/test.py -b -r --interpreter --host --64\nChange-Id: I86313dbdba84cbf8c707aae84e0ff05b6e034700\n"
    },
    {
      "commit": "30890f6af9bae6ece7267c72e3c82e3c61da4d9e",
      "tree": "88473f05ace3839eb8b0ea51b9d76d80d17e1c96",
      "parents": [
        "6b72b77e0823849fb75201461af80e69e1b4d803",
        "08cb7382573f122c70b84656370dfa9a18d833b1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 30 22:42:05 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 22:42:05 2018 +0000"
      },
      "message": "Merge \"Add invoke fast-path support for quickened invokes.\""
    },
    {
      "commit": "08cb7382573f122c70b84656370dfa9a18d833b1",
      "tree": "e583bbe955094ca081a0112549b46fd3708c4214",
      "parents": [
        "dc0156dd2e76d518bf1432ae95785ddff9144b78"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 30 09:27:59 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 30 22:40:56 2018 +0000"
      },
      "message": "Add invoke fast-path support for quickened invokes.\n\nQuickened invokes had their own handler implementation.\nMerge it into the generic DoInvoke which has the fast-path.\n\nThis speeds up arm64 golem interpreter benchmarks by 6%.\n\nTest: test.py -b -r --interpreter --host --64\nChange-Id: Icac9e073f61df67780242877179111ed7bee7154\n"
    },
    {
      "commit": "fd63bbf88147e19c32c21678b90d8cc450496fc3",
      "tree": "d78f12fbfd72bf29b16e13a7f3fabfca5f1d3f88",
      "parents": [
        "0ee508253edcdee41a80fcbf1511234ca176233d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 29 12:55:35 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 30 10:57:42 2018 -0700"
      },
      "message": "ART: Add string-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for string allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I68d3bcf2b3615d12231010940d0a24a1dbc03826\n"
    },
    {
      "commit": "dc0156dd2e76d518bf1432ae95785ddff9144b78",
      "tree": "52132517631d92c0bb67308749c1af5ef6832d8a",
      "parents": [
        "1023cf8be6da1b128ab9ec56aef3f1feda0ce2b6",
        "893147c57345481a41138bd7c9494a33d0aede8f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 30 08:43:55 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 08:43:55 2018 +0000"
      },
      "message": "Merge \"Clear registers in mterp floating point operations.\""
    },
    {
      "commit": "bec5b298422f681d67f8deee08a2f85c828e3f11",
      "tree": "9266c3f83e14c9153b706ddeda9e2c49b9fa04f7",
      "parents": [
        "72d3493a6b9fde2fc3c1abb9ee6afff4451ec291",
        "cb4f09e050ec2ef98b7b0b359f36fbb9d36a6e10"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 29 20:35:03 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 29 20:35:03 2018 +0000"
      },
      "message": "Merge \"Move some fast invoke checks to CanUseMterp\""
    },
    {
      "commit": "5ca1f47eb5d8a3eeab08e3f95341263239d6bb81",
      "tree": "1f8f767151dc5a2ee42421f9e591541c5acd82c1",
      "parents": [
        "4594c3207691bb6d7f9b11c2f13289f426398986",
        "30232c452f2397f9cff4a3a52c5a81770f06548b"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 29 19:03:27 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 29 19:03:27 2018 +0000"
      },
      "message": "Merge \"Fix HANDLE_PENDING_EXCEPTION in switch interpreter.\""
    },
    {
      "commit": "893147c57345481a41138bd7c9494a33d0aede8f",
      "tree": "016dc6c9ba25d103e517d41c083fa6774246ff9a",
      "parents": [
        "ce2a00daa92670a4fc01ef59fdbc3769a846f69c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 29 14:49:30 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 29 14:54:37 2018 +0000"
      },
      "message": "Clear registers in mterp floating point operations.\n\nAlso add a sanity check when pushing a shadow frame that its\nvregs/shadow_vregs match. We can do that check in other places if\nwe want to.\n\nTest: test.py --gcstress\nChange-Id: I272c3afac7b1df84ac373acd8a784f2d86fd6200\n"
    },
    {
      "commit": "cb4f09e050ec2ef98b7b0b359f36fbb9d36a6e10",
      "tree": "1057f31fea9bb05eaa35bc27f9c2b08b55043f80",
      "parents": [
        "ce2a00daa92670a4fc01ef59fdbc3769a846f69c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Oct 21 08:45:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 29 14:52:09 2018 +0000"
      },
      "message": "Move some fast invoke checks to CanUseMterp\n\nThis speeds up arm64 golem interpreter benchmarks by 1.5%.\n\nTest: test.py -b -r --interpreter --host\nChange-Id: Ia9d7c885cd488de56c6b726373072070b509bdf1\n"
    },
    {
      "commit": "30232c452f2397f9cff4a3a52c5a81770f06548b",
      "tree": "29c9a90e282f8fe384e329d6cffb5dc1d70a3b58",
      "parents": [
        "3070e9c98573f94f1ccc5997985a630ab5fbf21b"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Oct 26 18:56:01 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Oct 26 19:11:59 2018 +0100"
      },
      "message": "Fix HANDLE_PENDING_EXCEPTION in switch interpreter.\n\nEnsure that we immediately return to caller or jump to the handler.\n\nThere were cases where we executed the rest of the current opcode.\n\nTest: ./art/test.py -b -r --interpreter --host --64\nChange-Id: I3c82669fde2c77b8565d012286fd4bc609e15896\n"
    },
    {
      "commit": "70f5fd0770adbef645950895309a2a63c3bde7c0",
      "tree": "d9794484e83858cf7e33551eb8a108e07f46b18c",
      "parents": [
        "52ecb65ae9e1ad6fe7f58beecc88cdc08e08f0c4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 19:58:37 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 26 08:44:12 2018 -0700"
      },
      "message": "ART: Add class-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for class instance allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I32529f0221a836452c58687330a91ac0d5fde162\n"
    },
    {
      "commit": "52ecb65ae9e1ad6fe7f58beecc88cdc08e08f0c4",
      "tree": "7a8ee84cad0df34ab33bdcb0115fc0c79d6c83be",
      "parents": [
        "c2099b0b0c052dd61137b9cf5f9f8b30bab1a7a8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 15:18:21 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 26 08:44:12 2018 -0700"
      },
      "message": "ART: Add object-array-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for object array allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I0d7c40ed53708d4c759190961b40f0cac3fe696d\n"
    },
    {
      "commit": "8e0f04319c7c3ddee60c505376b31768533b0dd5",
      "tree": "b9d215de61b3a16895695e52ff4ee5ecbd985f14",
      "parents": [
        "88dbad33ae92167a89a5d5469f39f41624535dbf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 13:38:03 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 25 09:52:37 2018 -0700"
      },
      "message": "ART: Add array-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for array allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: Id3378f40c52fa7ef4297af08cb7509e0c04b94d1\n"
    },
    {
      "commit": "c58dca3941459b4375a53925f3471373584eab5e",
      "tree": "b6d2e6954a7966b296dce0f7ecdcd762e7b82c15",
      "parents": [
        "2d99da12261888accd440d265cfd8c6fa8ba6324",
        "960327bc77d523b56994714968861f73237248a6"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 25 13:08:55 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 25 13:08:55 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"Add fast path for interpreter to interpreter invokes.\"\""
    },
    {
      "commit": "960327bc77d523b56994714968861f73237248a6",
      "tree": "4f12409c85657177c14c22c3cfc7d9177efd13c0",
      "parents": [
        "ac355f967e64afb12dfc39167e9f2faf85887122"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 25 10:11:59 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 25 10:11:59 2018 +0000"
      },
      "message": "Revert^2 \"Add fast path for interpreter to interpreter invokes.\"\n\nThis reverts commit ac355f967e64afb12dfc39167e9f2faf85887122.\n\nThis speeds up arm64 golem interpreter benchmarks by 5%\non average with some invoke-heavy ones up to 40% faster.\n\nChange-Id: Ia7b544c1b7f72221c239a71f229b4973c3600a4c\n"
    },
    {
      "commit": "5314caec5a2c61fa96a2d6ee134706c085c18b11",
      "tree": "83e00a895e0340dc5a1afca4a37bec9c2aad26ac",
      "parents": [
        "0f454a5b66bcda2d2144bc4c89506e6457fac7ff",
        "ac355f967e64afb12dfc39167e9f2faf85887122"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 23:53:14 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 24 23:53:14 2018 +0000"
      },
      "message": "Merge \"Revert \"Add fast path for interpreter to interpreter invokes.\"\""
    },
    {
      "commit": "ac355f967e64afb12dfc39167e9f2faf85887122",
      "tree": "b5c01b99a0dd78abd9231348a660b41d35c2b1ac",
      "parents": [
        "7584333117e0d6f0529ddc72a43002ab812e73a1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 19:34:54 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 19:34:54 2018 +0000"
      },
      "message": "Revert \"Add fast path for interpreter to interpreter invokes.\"\n\nThis reverts commit 7584333117e0d6f0529ddc72a43002ab812e73a1.\n\nReason for revert: Breaks ASAN tests.\n\nChange-Id: Ia58cf361393f620ad30a3e3e05f37b758a060622\n"
    },
    {
      "commit": "2ee09ffc7a6aca354a958357801711688a7a4154",
      "tree": "dbd56e49b025d2a0695610cbfddb7b5bc6432c30",
      "parents": [
        "fd2aa2bf72563870c9261f248f992a20ac4837a8"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 24 13:24:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 24 17:11:57 2018 +0100"
      },
      "message": "Split interpreter_switch_impl.cc\n\nDue to regression in clang this file takes long to compile (\u003e10min).\nAs a quick fix, split the file - one per explicit instantiation.\n\nTest: Measure incremental build time - it halves the build time.\nChange-Id: I9d35d43c185deb19ef9cf32ed35328c433a837f2\n"
    },
    {
      "commit": "fd2aa2bf72563870c9261f248f992a20ac4837a8",
      "tree": "b31c1748dcd30a5bf76c2186b4c0124fb18b9dd6",
      "parents": [
        "cd98cde0642e664ae2396555c5d90c0a44c77ba7",
        "7584333117e0d6f0529ddc72a43002ab812e73a1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 24 10:44:37 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 24 10:44:37 2018 +0000"
      },
      "message": "Merge \"Add fast path for interpreter to interpreter invokes.\""
    },
    {
      "commit": "98ea9d9d82ab078ca10fa7f8e02eddda94cf1d98",
      "tree": "a848b7e41ff227a2d3d4d6795ec11089f39cb6ca",
      "parents": [
        "02338775e33b553be51d44ff60bb1ef8e527bd94"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 14:06:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 15:19:55 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles runtime.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibc0d5086809d647f0ce4df5452eb84442d27ecf0\n"
    },
    {
      "commit": "02338775e33b553be51d44ff60bb1ef8e527bd94",
      "tree": "e2a8ba2f5ed7fad15468d9a943e28c7bc34e5b7e",
      "parents": [
        "0a4510a7728e3aa2b13fe5e0c0dc4641f173a12c",
        "584771b5a85843700289ffcd36a46f3b187ca349"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 21:23:47 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 23 21:23:47 2018 +0000"
      },
      "message": "Merge \"ART: Fix tidy bugprone-macro-parentheses\""
    },
    {
      "commit": "7584333117e0d6f0529ddc72a43002ab812e73a1",
      "tree": "4f12409c85657177c14c22c3cfc7d9177efd13c0",
      "parents": [
        "1cb95b1f532e795fa7527328cae7cf46b879e426"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 26 16:23:09 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 23 13:36:15 2018 +0100"
      },
      "message": "Add fast path for interpreter to interpreter invokes.\n\nThis speeds up arm64 golem interpreter benchmarks by 5%\non average with some invoke-heavy ones up to 40% faster.\n\nTest: test.py --host -b\nChange-Id: I66069fd391488409b9e3e32127c88ee3d889b076\n"
    },
    {
      "commit": "28f6cff854b61e39f953e69ebf3646ee9826ec82",
      "tree": "a98e2bf1746d93079b7abe54e278ba87f0aef360",
      "parents": [
        "06ef9aa6a562a3a1f7c1f9b91aadda5018f8ba86"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 15:07:28 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 22 14:35:07 2018 +0100"
      },
      "message": "Cache the value of MterpShouldSwitchInterpreters()\n\nAdd field to the Thread object which stores the value instead (negated).\nExplicitly update the field when relevant state changes (which is rare).\n\nThis speeds up golem interpreter benchmarks by 3.5%\non average with some benchmarks up to 15% faster.\n\nTest: test.py -b -r --interpreter --host\nChange-Id: If2df0d3bf9e69ab50c30102b2648e997927c34d8\n"
    },
    {
      "commit": "584771b5a85843700289ffcd36a46f3b187ca349",
      "tree": "a88996e445a1a2aee66e15ee58b977891ddf9618",
      "parents": [
        "6bc39b1e080d574a0ed0c4dabe4d0895dd40456c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 18 13:22:23 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 12:14:10 2018 -0700"
      },
      "message": "ART: Fix tidy bugprone-macro-parentheses\n\nAdd parens where necessary, add NOLINT for the cases where it\u0027s wrong.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: If56ce51c078e9adf26b9469a01c95a857aac66a4\n"
    },
    {
      "commit": "6c444480dc55d4d0e3a99e441ce0804663bf05b4",
      "tree": "8c325d51710b558bd03c8f73434ffd46e787cdf4",
      "parents": [
        "f1d0b729552b22c9a36184bd497c0816dcf8ba63"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 17 15:15:19 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 18 14:48:46 2018 +0100"
      },
      "message": "Count transitions from interpreter to intrinsic.\n\nRemove the special cases for intrinsic, and copy the needed\ncounting from the slow path to the fast path as well.\n\nTest: test.py -b -r --host -t 638\nChange-Id: I68a867c0b84234ed79bd32de29238e65f5ffa200\n"
    },
    {
      "commit": "f1d0b729552b22c9a36184bd497c0816dcf8ba63",
      "tree": "5b145ad60fd69631c71de433a3ea1b8e463e036c",
      "parents": [
        "b71265dac216f0d9a78111c5b4c12be094af8266",
        "1f5ab4ecc6589a8d5a671ef56e6efcc3e40d7c5b"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 18 13:47:09 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 18 13:47:09 2018 +0000"
      },
      "message": "Merge \"Rename fast_invoke template argument of DoInvoke to is_mterp.\""
    },
    {
      "commit": "9f1893be10781eec8a1774e431084bb91b36c92c",
      "tree": "2854fb30501d40f4aa45f71af10d9d719171b4fb",
      "parents": [
        "f06ca50f0aff5167f767b09f624c60186290a623"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 17 17:54:58 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 18 12:19:44 2018 +0100"
      },
      "message": "Replace hard-coded vreg accesses in mterp with macros.\n\nIt will make it easier to change them in the future.\n\nTest: diff of libart.so disassembly\nChange-Id: I138f3d9b56b3a569a8181b3ad5cc12695cf897ef\n"
    },
    {
      "commit": "1f5ab4ecc6589a8d5a671ef56e6efcc3e40d7c5b",
      "tree": "a0912961631749e7bca17a527b1e106a10554185",
      "parents": [
        "21ff4ad92e8d74cfe8d95ec64b177d47084ec374"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 15 11:46:46 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 17 18:37:32 2018 +0000"
      },
      "message": "Rename fast_invoke template argument of DoInvoke to is_mterp.\n\nThis is more descriptive than \"fast\".\n\nTest: test.py -b --interpreter --host\nChange-Id: I107c59db2aa00dd6fd727fe08c739c940dd7899c\n"
    },
    {
      "commit": "74844fb5e2a76a5dddde00c1aa91980a7bb518aa",
      "tree": "d18394d609aaf65f0f31adecac1ef589936a3c4c",
      "parents": [
        "a52ac0cd739e6c5b33bdaf81a19370d3acf4eadf",
        "776f3f7bfa33e0449e4e2c5535bae1babfdbaf83"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 17 13:26:14 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 17 13:26:14 2018 +0000"
      },
      "message": "Merge \"Remove mterp \"alternate\" opcode handlers.\""
    },
    {
      "commit": "a52ac0cd739e6c5b33bdaf81a19370d3acf4eadf",
      "tree": "d5c63d0a7b05378d1cd1806c50dc38dd9548c609",
      "parents": [
        "905c1de6afd973a196dfc0c96339c928134e3ea9",
        "d88f5f7b22571511b93206f02806568648138a35"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 17 10:11:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 17 10:11:31 2018 +0000"
      },
      "message": "Merge \"Shrink couple of x86 mterp handlers.\""
    },
    {
      "commit": "776f3f7bfa33e0449e4e2c5535bae1babfdbaf83",
      "tree": "274d20979e48c772327258b7cbeab92b276df84e",
      "parents": [
        "d88f5f7b22571511b93206f02806568648138a35"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 15 18:03:55 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 15:13:44 2018 +0100"
      },
      "message": "Remove mterp \"alternate\" opcode handlers.\n\nThey are currently unused and I don\u0027t have plans to use them.\n\nThe alternate table made it possible to enable extra mterp checks.\nHowever, it is possible to move the debug checks to the main path.\n\nTest: test.py -b -r --interpreter -t 001-HelloWorld\nChange-Id: I45a39ec73abaefaecf5b8c636f3f9d519a0a8bb0\n"
    },
    {
      "commit": "d88f5f7b22571511b93206f02806568648138a35",
      "tree": "651f3e1954db1da94b2bb27f0393cb17bc3e89ab",
      "parents": [
        "e7019db7f0dce1bbad836396710c792fd39593fc"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 14:22:33 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 14:22:33 2018 +0100"
      },
      "message": "Shrink couple of x86 mterp handlers.\n\nUse helpers to make more room for the follow-up CL.\n\nRefactor the code so that it is possible to add\nnon-opcode specific helpers with custom name.\n\nTest: test.py -b -r --interpreter -t 001-HelloWorld\nChange-Id: I3714f83c10e1c16d3b26108e6eb475805482c785\n"
    },
    {
      "commit": "4c8d22fa559e248490544e2bd7309b4b1014e972",
      "tree": "0df5e9ddf0af5c6a846a636979e17cb78d37eb1c",
      "parents": [
        "6071d2d1cd94b3f2bfe422a3e567ca11a7e3438f",
        "6c2b86ea5347883564cf4450adbe79922bd8b458"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 11:42:33 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 16 11:42:33 2018 +0000"
      },
      "message": "Merge \"Cache the ImtTable index in the interpreter.\""
    },
    {
      "commit": "6c2b86ea5347883564cf4450adbe79922bd8b458",
      "tree": "f39d824d8cf0744303356874cf7d8e28e9a801ae",
      "parents": [
        "e7019db7f0dce1bbad836396710c792fd39593fc"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 15 12:57:20 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 15 22:40:56 2018 +0100"
      },
      "message": "Cache the ImtTable index in the interpreter.\n\nThe index is fairly expensive to calculate; cache it.\n\nThis makes the interpreter 1% faster on average (golem; arm64),\nwith some benchmarks being up to 15% faster.\n\nTest: test.py -b --interpreter --host\nChange-Id: If77340967148254c47974538c3ebf051a055d4b0\n"
    },
    {
      "commit": "8db807252e1d4d0bab7785be231e20a1e5fd8e74",
      "tree": "b3ab6a96ddc9ef3e0dfbbc2422321f73ef50c4c9",
      "parents": [
        "e7019db7f0dce1bbad836396710c792fd39593fc",
        "78baed5ec51a6e2d113e8b29aafa5c6203b46845"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 15 08:25:50 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 15 08:25:50 2018 +0000"
      },
      "message": "Merge \"ART: Use reinterpret_cast{32,64}\u003c\u003e when appropriate.\""
    },
    {
      "commit": "d55f6ee508a9a3c81bb1911bb203a22845bfab86",
      "tree": "38a8793c9d1c182771f89075c1218ec9d1c2da75",
      "parents": [
        "332c8e36356b21d65c4003612334a681150a5643",
        "0aa7a5a6a7bc350b79351f52e26c97747e927acf"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 12 17:58:18 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 12 17:58:18 2018 +0000"
      },
      "message": "Merge \"Revert^4 \"JVMTI PopFrame support\"\""
    },
    {
      "commit": "78baed5ec51a6e2d113e8b29aafa5c6203b46845",
      "tree": "57ca544020f309e3529e33300ad4867ca4579c1e",
      "parents": [
        "a48eb7e0690187618d2824a7d9b5601e7f5cdf80"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 11 10:44:58 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 12 17:53:50 2018 +0100"
      },
      "message": "ART: Use reinterpret_cast{32,64}\u003c\u003e when appropriate.\n\nAnd fix UnstartedRuntime checking for null arguments in all\nfunctions where we now use reinterpret_cast32\u003c\u003e.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/783607 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nBug: 117427174\nChange-Id: I58f8ad59f70e3fbb1d06aef419cd26555706fa65\n"
    },
    {
      "commit": "4cbfadc29b4ba89b32fa6eb55a287db78d12a45c",
      "tree": "70cd681c4326ab8cf034da6c0fb0fef222cd67b1",
      "parents": [
        "a48eb7e0690187618d2824a7d9b5601e7f5cdf80"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 16:09:43 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 12 10:07:41 2018 +0100"
      },
      "message": "Remove CHECK that GetThis() must always work.\n\nEnsures GetVReg of a reference on compiled code checks that the\nvalue is indeed a reference from the stack maps.\n\nbug: 116683601\nbug: 117452149\nTest: 686-get-this\nChange-Id: I3a370c45786a4892c7888491bec6d5ae64672f6c\n"
    },
    {
      "commit": "0aa7a5a6a7bc350b79351f52e26c97747e927acf",
      "tree": "a583889668d9703d16d37586d56421bd27c62661",
      "parents": [
        "e12575640dca5118bf96245f373acda276c22178"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Oct 10 15:58:14 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 11 16:41:54 2018 -0700"
      },
      "message": "Revert^4 \"JVMTI PopFrame support\"\n\nThis reverts commit 202b617acf477e8e8e11915f467120a0bd518e74.\nThis unreverts commit 202b617acf.\nThis unreverts commit 88a2a9d7a1.\n\nThere were several bugs with the implementation of pop-frame related\nto interactions between the jit, exception handling, class-loading,\nand deoptimization.\n\n- We were instrumenting the target thread stack in cases where it was\n  unnecessary which caused the exception handler to incorrectly\n  determine that a method was not deoptimizable. This caused the\n  pop-frame to be ignored.\n\n- We were incorrectly sending ExceptionCatch events if an exception\n  suppressed by pop-frame would have been caught in the current frame.\n\n- We were allowing pop-frame to be used on threads suspended in the\n  ClassLoad or ClassPrepare events despite having surprising semantics\n  in that situation (see b/117615146).\n\nNeeded to modify test 1953 slightly for inclusion in CTS. I needed to\nmake the CTS entrypoint not run the class-load tests (since the cts\nconfiguration means the classes are loaded by the verifier and not the\ninterpreter). I updated the expected.txt and check script to reflect\nthis.\n\nReason for revert: Fixed issue causing Exception events to sometimes\n                   eat PopFrame and other issues.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\n\nBug: 73255278\nBug: 111357976\nBug: 117533193\nBug: 117615146\n\nChange-Id: I655c4fe769938cf41d7589f931d6710cf2001506\n"
    },
    {
      "commit": "4ca6cc7ddcbd568b365c428371ea9675799775af",
      "tree": "a7f9ab0be56e4821526697fad43aa928740ddb9e",
      "parents": [
        "002feb914b397e7fbdeeb60ad300d1f1ec84edf3",
        "202b617acf477e8e8e11915f467120a0bd518e74"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 10:04:51 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 10 10:04:51 2018 +0000"
      },
      "message": "Merge \"Revert \"Revert^2 \"JVMTI PopFrame support\"\"\""
    },
    {
      "commit": "202b617acf477e8e8e11915f467120a0bd518e74",
      "tree": "4d1124b540984f970acaf494f4fd85cc347fbd57",
      "parents": [
        "1c7b1fcf0ff29d83d13d38d0451a54474ccf5964"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 07:47:58 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 07:47:58 2018 +0000"
      },
      "message": "Revert \"Revert^2 \"JVMTI PopFrame support\"\"\n\nThis reverts commit 1c7b1fcf0ff29d83d13d38d0451a54474ccf5964.\n\nBug: 73255278\nBug: 111357976\nbug: 117533193\n\nReason for revert: Test failures\n\nChange-Id: I9da863fd95264007c4efeb85539e704e83499dcf\n"
    },
    {
      "commit": "60f322223ce25384bbf70be950a660e94538ed57",
      "tree": "4bd42a9618a0dcf1d45741d70a48683e3f4b3155",
      "parents": [
        "1f0133bc00f96316224a7547bbe4ecc6b406c46e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 09 11:49:06 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 09 11:49:06 2018 -0700"
      },
      "message": "Avoid sign extending pointers in SetStringInitValueToAllAliases\n\nPrevent check failures when object pointers are in top 2GB of low 4GB\nrange.\n\nBug: 117427174\nTest: test-art-host\nChange-Id: I6abbe2505bea35248a0fb3095f47e33051d0a21e\n"
    },
    {
      "commit": "1c7b1fcf0ff29d83d13d38d0451a54474ccf5964",
      "tree": "b978817acd252f10bd4648d3582ac9459fc9a0f4",
      "parents": [
        "59b950f53152c169464ba8c63d44102eeba1e594"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:42:12 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 08 13:18:35 2018 -0700"
      },
      "message": "Revert^2 \"JVMTI PopFrame support\"\n\nThis reverts commit f67d0cbf2743b29aa6e1be7ae2f71762b8762785.\n\nRedefine-stress causes classes to be loaded at slightly different\nplaces due to the deep verification needed to redefine a class. This\nwould cause the parts of tests 1953 and 1954 to fail due to classes\nloading at unexpected times. We changed the test to skip these\ntest-cases when they cannot be correctly executed.\n\nReason for revert: Fixed issue causing tests to fail under\n                   redefine-stress\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./test/testrunner/testrunner.py --host --redefine-stress\nBug: 73255278\nBug: 111357976\nChange-Id: I46fb4aed878bcc9398f2b73ad5040d7c97aec3ef\n"
    },
    {
      "commit": "068a9bec8d637ce907f6c2829b772a99cae60611",
      "tree": "f099925c0269895935c9eea9a0caca8e8f801dce",
      "parents": [
        "bc550bbbf2fcd82b5b888683a4e3708a26d0efe6",
        "f67d0cbf2743b29aa6e1be7ae2f71762b8762785"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:41:16 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 05 23:41:16 2018 +0000"
      },
      "message": "Merge \"Revert \"JVMTI PopFrame support\"\""
    },
    {
      "commit": "f67d0cbf2743b29aa6e1be7ae2f71762b8762785",
      "tree": "b0b1b8a1908541791bfeb18c1117482d559ded38",
      "parents": [
        "88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:39:54 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:40:30 2018 +0000"
      },
      "message": "Revert \"JVMTI PopFrame support\"\n\nThis reverts commit 88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a.\n\nReason for revert: Fails class-load/prepare tests with jit-at-first-use.\nBug: 73255278\nBug: 111357976\nTest: None\nChange-Id: Id8dea6dcf124d56e3a8dfa19e6ed39cc70370c34\n"
    },
    {
      "commit": "bc550bbbf2fcd82b5b888683a4e3708a26d0efe6",
      "tree": "30f65424390be7e2b648f0e727bc555fc852aa88",
      "parents": [
        "0614de7055d009118e0687658687dcb55963de94",
        "6f22e06c0a4ca9bdcd1bb2df7352e3cca791a803"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:11:42 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 05 23:11:42 2018 +0000"
      },
      "message": "Merge \"Disable ASAN for ExecuteSwitchImplCpp\""
    },
    {
      "commit": "6f22e06c0a4ca9bdcd1bb2df7352e3cca791a803",
      "tree": "6b8dbe56697244f3ab18acbc9b9ce301d149c244",
      "parents": [
        "88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 15:05:12 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 15:46:24 2018 -0700"
      },
      "message": "Disable ASAN for ExecuteSwitchImplCpp\n\nASAN bloats this function enormously and causes it to overflow the\nWframe-larger-than size. This disables the ASAN checks in this\nfunction until we find a better way to fix this.\n\nTest: SANITIZE_HOST\u003daddress ASAN_OPTIONS\u003ddetect_leaks\u003d0 ./test.py --host\nBug: 73255278\nBug: 111357976\nBug: 117341496\nChange-Id: I724b805727514a512cf658759d4e90610f39cbfa\n"
    },
    {
      "commit": "dd0f77c4006544a58a82cb90088ee3d8dedb86e1",
      "tree": "9203806e4016928577872e5c1401b876a5d519d7",
      "parents": [
        "c6adcbdb278aa2e235c39e69e7b5421ad560d9f4",
        "88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 17:58:45 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 05 17:58:45 2018 +0000"
      },
      "message": "Merge \"JVMTI PopFrame support\""
    },
    {
      "commit": "c6adcbdb278aa2e235c39e69e7b5421ad560d9f4",
      "tree": "ce75080ca72a46135fecfa6c500e2c2bdc8a40f3",
      "parents": [
        "e0e835a4486a93904de7ebcc5891100e392ca536",
        "b1eff837902f3659268115faa8f92a7f3825caa8"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Oct 05 16:56:37 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 05 16:56:37 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"Add hand written assembly for mterp field reads.\"\""
    },
    {
      "commit": "e0e835a4486a93904de7ebcc5891100e392ca536",
      "tree": "1c198271f90d5d85ea4ece86eccb2ea61869e136",
      "parents": [
        "235c1790a24392ad2a990e9cb60dc268773a0328",
        "2b6eb71050b14c80ba72cc630804a5d6087d5f96"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Oct 05 15:35:09 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 05 15:35:09 2018 +0000"
      },
      "message": "Merge \"Make it easier to generate helpers for mterp opcodes.\""
    },
    {
      "commit": "b1eff837902f3659268115faa8f92a7f3825caa8",
      "tree": "e3426e6693a5d861d3141176cf48e61dba9e8821",
      "parents": [
        "2b6eb71050b14c80ba72cc630804a5d6087d5f96"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 04 11:31:10 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Oct 05 15:34:14 2018 +0100"
      },
      "message": "Revert^2 \"Add hand written assembly for mterp field reads.\"\n\nThis reverts commit bb502e58d8bea577fe25d82c0c1ca2a763131673.\n\nThis speeds up non-quickened code by 3% (measured on golem).\n\nTest: ART_HEAP_POISONING\u003dtrue test.py -b -r --target -t 998\nChange-Id: I7161ea5ba174e8a37fa41fd63ef34fd0ec57fc36\n"
    },
    {
      "commit": "2b6eb71050b14c80ba72cc630804a5d6087d5f96",
      "tree": "09dd68f5f9ecf38938c259e9665f854deca43ec7",
      "parents": [
        "c177c47c21203781165a1311c2600051d0156d36"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Oct 05 13:44:21 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Oct 05 13:48:19 2018 +0100"
      },
      "message": "Make it easier to generate helpers for mterp opcodes.\n\nCreate a global variable where helper snippets can be\nregistered and will then be appended after the opcodes.\n\nAlso add entries to symbol table for the helpers.\n\nTest: Manually compare the generated assembly\nChange-Id: Icc5eb98590243969dc47c59a65e39a3a406660f2\n"
    },
    {
      "commit": "88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a",
      "tree": "a19af813a97be817a76072534139a77b16f3ad87",
      "parents": [
        "fc7d33fc052d993eaa205337e6a805022d2cd822"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 14 14:44:29 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 04 11:04:49 2018 -0700"
      },
      "message": "JVMTI PopFrame support\n\nImplement support for the JVMTI can_pop_frames capability. This works\nby marking shadow-frames with a bit that forces it to be popped or an\ninstruction to be retried. When a PopFrame is requested the plugin\nwill deoptimize the targeted thread and force the interpreter to deal\nwith the frame pop. If the can_pop_frames capability is enabled the\nruntime will be forced to handle all exceptions through the\ninterpreter. This is required to support PopFrame during some\nexception events.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nBug: 73255278\nBug: 111357976\nChange-Id: I62d6b1f4ff387c794ba45093c3d6773aaf642067\n"
    },
    {
      "commit": "62f14c8b44c993b35df19d800f9ecefecd48590d",
      "tree": "a2aa5e0b7d73cbc612dff62809bbc57ca028464e",
      "parents": [
        "c177c47c21203781165a1311c2600051d0156d36",
        "99f97330a3c55e54ebba6fb0a668f445f34dc2d6"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 04 11:57:57 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 04 11:57:57 2018 +0000"
      },
      "message": "Merge \"Remove InvokeVirtualOrInterface event from instrumentation.\""
    },
    {
      "commit": "c177c47c21203781165a1311c2600051d0156d36",
      "tree": "30324c48d518ee18c30107302d470f989c730e69",
      "parents": [
        "12568e0279131c15d5b9a4dc1370b3365bc9635e",
        "c853eed83eb9670ba671b6f271f612e958f64d34"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 04 11:17:05 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 04 11:17:05 2018 +0000"
      },
      "message": "Merge \"Use the small thread-local cache for mterp invokes.\""
    },
    {
      "commit": "99f97330a3c55e54ebba6fb0a668f445f34dc2d6",
      "tree": "e5f8a9f3baf7bfc9e517289c8463b8089022d27b",
      "parents": [
        "ededf08e2f4a5df3401a5d4badb98ff3c8cb8fb9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 03 15:44:24 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 04 11:13:49 2018 +0100"
      },
      "message": "Remove InvokeVirtualOrInterface event from instrumentation.\n\nIt is no longer used.\n\nTest: test-art-host-gtest\nChange-Id: I4d5f574d972ad2943a27adcca1d326d5d82a1923\n"
    },
    {
      "commit": "55838e338f4d60815701363ce6c2c47dd488bfe2",
      "tree": "22abcaa9d042361fb64a7954392e22f08a9e2697",
      "parents": [
        "7caff33668f5a9fbd03de7abe7fb95f6417d9677",
        "56de89aaf2a224de8c436291e3c23a1a61315437"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 04 09:27:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 04 09:27:00 2018 +0000"
      },
      "message": "Merge \"Mark most *Offset helper functions as constexpr.\""
    },
    {
      "commit": "bb502e58d8bea577fe25d82c0c1ca2a763131673",
      "tree": "1a3c686b43b48692cc3230143d9e385f08f4ab37",
      "parents": [
        "07559e2cc6e149adfc9b73a933f6c2429ace11ce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 03 20:14:13 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 03 20:14:13 2018 +0000"
      },
      "message": "Revert \"Add hand written assembly for mterp field reads.\"\n\nThis reverts commit 07559e2cc6e149adfc9b73a933f6c2429ace11ce.\n\nReason for revert: Breaks poisoning + debuggable:\nhttps://build.chromium.org/p/client.art/builders/volantis-armv8-poison-ndebug/builds/2105/steps/test%20optimizing/logs/stdio\n\nChange-Id: I6bb9bd083ca723e347b6047eac7216667a2f771b\n"
    },
    {
      "commit": "56de89aaf2a224de8c436291e3c23a1a61315437",
      "tree": "397fafa3662d1abde6fecff49f24a559c2b0ab32",
      "parents": [
        "ededf08e2f4a5df3401a5d4badb98ff3c8cb8fb9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 01 15:32:20 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 03 14:38:59 2018 +0100"
      },
      "message": "Mark most *Offset helper functions as constexpr.\n\nMaking the values compile-time constants will help to\nclean up the cpp-define-generator.\n\nTest: test.py -b -g\nChange-Id: I612a19a54062784b501bfe4f41c6642d48e0dd21\n"
    }
  ],
  "next": "c853eed83eb9670ba671b6f271f612e958f64d34"
}
