)]}'
{
  "log": [
    {
      "commit": "e9cd81c14609fa9dae2125e96ec4d86ca959117f",
      "tree": "e261a0445fc6a8bbd1c21cda9c012b3392e606fe",
      "parents": [
        "a70b683cd796f7e5bb50d8d282f72c50c89af250",
        "9e57abacecc683f50dd6c9870a32ee075eaf86a8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 16 13:30:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 16 13:30:24 2017 +0000"
      },
      "message": "Merge \"Fix String::DoReplace() using obsolete `this`.\""
    },
    {
      "commit": "9e57abacecc683f50dd6c9870a32ee075eaf86a8",
      "tree": "27ef93c87f3ce9f09414620f77b35f6d0949fb22",
      "parents": [
        "26ec3cad4968ae32ce9d04c3046f766df46d9bd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 16 10:45:40 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 16 10:55:24 2017 +0000"
      },
      "message": "Fix String::DoReplace() using obsolete `this`.\n\nChange it to a static function taking a Handle\u003c\u003e.\n\nTest: testrunner.py --host --interp-ac --gcstress -t 021-string2\nBug: 36335996\nChange-Id: I5ab3e7adc59d6a9095290e57d5ce5d46b79f089b\n"
    },
    {
      "commit": "f44d36c8423f81cbb5e9f55d8813e26ffa1a7f3b",
      "tree": "324b41485ce6c414c1a006c72cbcc5ed9f466138",
      "parents": [
        "8d6768d47b66a688d35399d524ad5a5450e9d9d4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 14:18:46 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 19:03:20 2017 +0000"
      },
      "message": "Revert^2 \"Hash-based DexCache field array.\"\n\nTest: testrunner.py --host --interpreter\nBug: 30627598\n\nThis reverts commit 6374c58f2ea403b3a05fb27376110fe4d0fc8e3f.\n\nChange-Id: I275508e288a85d3aa08f7405a1a4f362af43b775\n"
    },
    {
      "commit": "8d6768d47b66a688d35399d524ad5a5450e9d9d4",
      "tree": "0b8733baef378d9e060c8e74319a3846489590b2",
      "parents": [
        "fbe1516b91f2117bb9c7282aaea5537572f62dd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 10:13:21 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 13:55:13 2017 +0000"
      },
      "message": "Revert^6 \"Hash-based dex cache type array.\"\n\nFixed ImageWriter to write class table also if it contains\nonly boot class loader classes. Added a regression test and\nadded extra checks for debug-build to verify that dex cache\ntypes from app image are also in the class table. Removed\nsome unnecessary debug output.\n\nTest: 158-app-image-class-table\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 0b66d6174bf1f6023f9d36dda8538490b79c2e9f.\n\nChange-Id: I6a747904940c6ebc297f4946feef99dc0adf930c\n"
    },
    {
      "commit": "0b66d6174bf1f6023f9d36dda8538490b79c2e9f",
      "tree": "1cc4d2ae868745a65fd0489a6fb2f5f2fc9e880f",
      "parents": [
        "6374c58f2ea403b3a05fb27376110fe4d0fc8e3f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:50:04 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 16:08:01 2017 +0000"
      },
      "message": "Revert^5 \"Hash-based dex cache type array.\"\n\nFor app images, ImageWriter does not add boot image\nclasses to the app image class table even though it\nkeeps them in the dex caches. The reason for that is\nunknown, the code looks OK.\n\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nAlso reverts \"Improve debugging output for a crash.\"\n\nThis reverts commits\n    bfb80d25eaeb7a604d5dd25a370e3869e96a33ab,\n    8dd56fcb3196f466ecaffd445397cb11ef85f89f.\n\nTest: testrunner.py --host\nChange-Id: Ic8db128207c07588c7f11563208ae1e85c8b0e84\n"
    },
    {
      "commit": "6374c58f2ea403b3a05fb27376110fe4d0fc8e3f",
      "tree": "0aacaaf1f193e96b55e0b203b678ae724c0fb6f5",
      "parents": [
        "8f323e09e692ff4f95f40300391fe41fb96a6c49"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:51:19 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:52:17 2017 +0000"
      },
      "message": "Revert \"Hash-based DexCache field array.\"\n\nReverting to allow rebasing the revert\n    https://android-review.googlesource.com/351689\nwithout too many conflicts.\n\nBug: 30627598\n\nThis reverts commit 1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64.\n\nChange-Id: I4af65e9f41c8bad8106c028947eca7c5a9534c53\n"
    },
    {
      "commit": "1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64",
      "tree": "94cbab7c3097ce7d3a1feb1a69f28406644af085",
      "parents": [
        "d1d4530ffa97729aa8944932a7ac2009ae51c7e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 08 11:39:42 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 10 12:59:37 2017 +0000"
      },
      "message": "Hash-based DexCache field array.\n\nTest: m test-art-host, both AOT and interpreter\nTest: m test-art-target, both AOT and interpreter\nTest: m valgrind-test-art-host\nBug: 30627598\nChange-Id: If992f091aadd862d17b09928d21659573dd285a0\n"
    },
    {
      "commit": "7ec0fde07816df30b5ab58d1a7a18aa4b68a374e",
      "tree": "e24f2d5ed8edb5600ca7fa02d52a12581a21b9fe",
      "parents": [
        "335f644f617d9837bc44219c70a2943f36c3f496"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Mar 08 12:43:30 2017 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Mar 08 13:25:14 2017 +0000"
      },
      "message": "Track libcore change 2c0c8889ff415431e3c2d6d5ac95748f8b284384.\n\nUpdate the size of Class\u0027 vtable.\n\nTest: make test-art-host\nChange-Id: I6613a3f1924a2347e0e4f9c4db31d126ab4deacc\n"
    },
    {
      "commit": "7cc3ae5705416bd8fc4b7096904e2871aa761e73",
      "tree": "7828e0346d1961b1454a56fa7759b72c13e1b67a",
      "parents": [
        "a86b359441f349d9057d05c32c88c375d794cf86"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 07 14:33:37 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 07 17:44:43 2017 +0000"
      },
      "message": "Return the right value in VerifyClass.\n\nWe used to return kNoFailure when a class was already processed.\nBut it could have had soft failures.\n\nAlso remove IsCompileTimeVerified to avoid future confusions and\nintroduce ShouldVerifyAtRuntime.\n\nAdd some more checks to make sure we record the right things in\nthe vdex file.\n\nbug: 33845394\ntest: verifier_deps_test test-art-host\nChange-Id: Iff11a96e825c85db416083413761981515f405b7\n"
    },
    {
      "commit": "bcf716f3e0c72aa8bb75b15e5b273a813658fdb5",
      "tree": "92d55371dc3859f4be6c05eb3fcd2b4670057b47",
      "parents": [
        "09c8235da86ce1d01b4dfb38a5af1481d13efe80"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 23 10:43:09 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 24 11:07:53 2017 +0000"
      },
      "message": "Revert^2 \"Enable String compression.\"\n\nTest: m test-art-host (interpreter, JIT, AOT)\nTest: m test-art-target on Nexus 6P (interpreter, JIT, AOT)\nTest: Nexus 6P boots\nTest: m ahat-test\nBug: 31040547\n\nThis reverts commit afcb365b2d3ae152989826c2afb0d98a9cf3f6be.\n\nChange-Id: Id7e27d717c8e36d3c7abdde59ca2c8fd4fc221c9\n"
    },
    {
      "commit": "c73cb64585f301c8bb3b03a0684f6baead99b7ac",
      "tree": "a11cf45d631116afbee446956defe80406cff082",
      "parents": [
        "fc5d8c28e5265634aeeb2f255dc8d5747e2919ee"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 22 10:11:30 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 22 10:11:30 2017 -0800"
      },
      "message": "ART: Remove ObjPtr kPoison template parameter\n\nMove to a global constexpr, so that object pointer poisoning can\nbe explicitly turned off for lower debug build overhead.\n\nBug: 35644797\nTest: m\nTest: m test-art-host\nChange-Id: I2412b67cbec144f2aee206fb48591abe581fd00a\n"
    },
    {
      "commit": "92907f3f7af106a9eeb341caba17f3770203f7fb",
      "tree": "c44f6b487c9ad078c044f19a4a6d72eaf4979d11",
      "parents": [
        "1b7ba9e15d9525eec7ea68e9ecf95e5777a46069"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 20 14:08:30 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 21 12:31:52 2017 +0000"
      },
      "message": "Remove String.setCharAt().\n\nThe internal API String.setCharAt() breaks the assumption\nthat strings are really immutable. That in turn breaks\nstring compression invariants - compressible strings must\nbe compressed. This CL removes the String.setCharAt() API.\n\nThe method was used only in String.replace(char, char)\nwhen we found a match, copying the string on first match.\nInstead, introduce a new native method that does the whole\nreplacement with a single call when we find the first match.\n\nStringReplaceBenchmark results on Nexus 6P, lower is better:\n  timeReplaceCharNonExistent/EMPTY   41.93 -\u003e   38.25 (-9%)\n  timeReplaceCharNonExistent/L_16   114.90 -\u003e   95.09 (-17%)\n  timeReplaceCharNonExistent/L_64   419.97 -\u003e  320.65 (-24%)\n  timeReplaceCharNonExistent/L_256 1667.01 -\u003e 1091.25 (-35%)\n  timeReplaceCharNonExistent/L_512 3253.50 -\u003e 2075.62 (-36%)\n  timeReplaceCharRepeated/EMPTY      41.93 -\u003e   39.58 (-6%)\n  timeReplaceCharRepeated/L_16      114.87 -\u003e   95.40 (-17%)\n  timeReplaceCharRepeated/L_64     1267.29 -\u003e  704.32 (-44%)\n  timeReplaceCharRepeated/L_256    5139.14 -\u003e 1361.80 (-74%)\n  timeReplaceCharRepeated/L_512   10787.81 -\u003e 2338.41 (-78%)\n  timeReplaceSingleChar/EMPTY        41.78 -\u003e   37.16 (-11%)\n  timeReplaceSingleChar/L_16        449.54 -\u003e  497.51 (+11%)\n  timeReplaceSingleChar/L_64        942.08 -\u003e  891.35 (-5%)\n  timeReplaceSingleChar/L_256      2756.18 -\u003e 2174.64 (-21%)\n  timeReplaceSingleChar/L_512      5489.91 -\u003e 3983.32 (-27%)\n\nTest: testrunner.py --host\nTest: run-libcore-tests.sh --mode\u003dhost\nTest: testrunner.py --host with string compression enabled.\nTest: run-libcore-tests.sh --mode\u003dhost with string compression enabled.\nBug: 31040547\nChange-Id: I9cf0d5457182f0a33ca8251c29931d3eb624ae07\n"
    },
    {
      "commit": "bfb80d25eaeb7a604d5dd25a370e3869e96a33ab",
      "tree": "96068dd9b9b3bc2e1bcc25d38bbd2420d5b0f1bb",
      "parents": [
        "7a49d93ee265b978ab29cae659e46d41da78459a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 14 14:08:12 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 20 14:13:14 2017 +0000"
      },
      "message": "Revert^4 \"Hash-based dex cache type array.\"\n\nAdded extra output to the abort message to collect more data\nwhen we hit the crash. Added extra check when loading an app\nimage to verify that the class table isn\u0027t already broken.\n\nTest: testrunner.py --host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 5812e20ff7cbc8efa0b8d7486ada2f58840a6ad5.\n\nChange-Id: I9bb442a184c236dcb75b3e42a095f39cd6bee59d\n"
    },
    {
      "commit": "8fd364e74d60a3bbcc6a58f1ee383a467f47c3b1",
      "tree": "933d368e4658b04e4485e8b3847932f0f951d5f1",
      "parents": [
        "1fed1dc7b1ea75b0465c0b2b3457718aab5a0f34"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Feb 17 12:47:28 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Feb 17 14:18:47 2017 +0000"
      },
      "message": "ART: fix method handle invocation of abstract \u0026 interface methods\n\nBug: 35422408\nTest: m test-art-host\nChange-Id: I1f60501a7d2e9d8c8b935709ae2d624af9f882ef\n"
    },
    {
      "commit": "95c867dcb9c7ec109eac099a259ad3e4cddfb8b0",
      "tree": "3b0348528ecd3e7dd32c90c75f8a04da9db0aa9a",
      "parents": [
        "07af6d0c7b9e40380dfaca024fe40adbf47515b2",
        "afcb365b2d3ae152989826c2afb0d98a9cf3f6be"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 16 21:47:44 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 16 21:47:45 2017 +0000"
      },
      "message": "Merge \"Revert \"Enable String compression.\"\""
    },
    {
      "commit": "afcb365b2d3ae152989826c2afb0d98a9cf3f6be",
      "tree": "abba45a6314d4b83a1e1d004019b5c9bc360b34d",
      "parents": [
        "24bbf98cec9f39a2592892adb245ce15d58cab19"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 16 21:46:27 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 16 21:46:27 2017 +0000"
      },
      "message": "Revert \"Enable String compression.\"\n\nThe internal API String.setCharAt() is broken\nwith string compression.\n\nBug: 31040547\n\nThis reverts commit 24bbf98cec9f39a2592892adb245ce15d58cab19.\n\nChange-Id: If2c2fa0eb42a8613994dfa5299febf7a5de2bf31\n"
    },
    {
      "commit": "53ea6a10bb34342b21572aa12d7172cb585e1c0f",
      "tree": "4fcb54f16cf42b9984d534622e5b84246f582ba8",
      "parents": [
        "c898aa8d2865197cbeefc63d8ec78d93c305c68e",
        "24bbf98cec9f39a2592892adb245ce15d58cab19"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 16 13:24:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 16 13:24:35 2017 +0000"
      },
      "message": "Merge \"Enable String compression.\""
    },
    {
      "commit": "fe35fe172a7d3469ebf1dae9cca7e1ac8aefcba7",
      "tree": "3bf964f7786227f8104eeba08fe2e1768109a764",
      "parents": [
        "a0637543dc82dfd54feda7c80da017bd39b1d2d5",
        "fa4333dcb481e564f54726b4e6f8153612df835e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 14 22:11:34 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 22:11:35 2017 +0000"
      },
      "message": "Merge \"ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\""
    },
    {
      "commit": "fa4333dcb481e564f54726b4e6f8153612df835e",
      "tree": "ae597c7587dc214434a180962c4373d3748f51ab",
      "parents": [
        "2d98ba68f13dc219c088a12f369c5778bf398f14"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:10:34 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:44:48 2017 -0800"
      },
      "message": "ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\n\nGet it in line with ObjPtr and prettify our code.\n\nTest: m\nChange-Id: I1322e2a9bc7a85d7f2441034a19bf4d807b81a0e\n"
    },
    {
      "commit": "2a46b682b8fd0276c62e82a56a1f2ac63b210a95",
      "tree": "fca44701850a648a243d496dc547bab0e3ef5cd0",
      "parents": [
        "2d98ba68f13dc219c088a12f369c5778bf398f14",
        "c069a30d42aefd902c20e8bc09dfad1683f07ded"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 14 16:02:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 16:02:33 2017 +0000"
      },
      "message": "Merge \"ART: invoke-custom support\""
    },
    {
      "commit": "c069a30d42aefd902c20e8bc09dfad1683f07ded",
      "tree": "8bbf72bea7ea5d243b57f8e0ab64b687a9f60e4b",
      "parents": [
        "3f38398380b80d1ded078ebed1211b7e4f51460f"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 18 09:23:12 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 14 14:04:33 2017 +0000"
      },
      "message": "ART: invoke-custom support\n\nAdds invoke-custom instruction to the interpreter.\n\nBug: 33191717,30550796\nTest: art/test/run-test --host 952\nChange-Id: I3b754128649a8b3a00ade79ba2518d0e377f3a1e\n"
    },
    {
      "commit": "e39f14ff4e0d7c70016874cff24863b912d40bf1",
      "tree": "57588025e96e01ac2998cbdcf0ff12a822fdcd4e",
      "parents": [
        "4e4b62e21672dbacf5d5abb688a126aabad29269"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 10 15:44:25 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 14 13:25:05 2017 +0000"
      },
      "message": "ARM64: Improve String.equals() intrinsic for const strings.\n\nAnd add additional tests to 021-string2.\n\naosp_angler-userdebug:\n  before:\n    arm64 boot*.oat: 43324664\n    arm64 boot*.oat/string compression: 43411112\n  after:\n    arm64 boot*.oat: 43300136 (-24528)\n    arm64 boot*.oat/string compression: 43345464 (-65648)\n\nThe string compression code size difference drops from\n86448 to 45328.\n\nTest: m test-art-target on Nexus 6P\nTest: m test-art-target on Nexus 6P with string compression enabled.\nBug: 31040547\nChange-Id: I99a3777b91b248da2b0ac25abd260f9e5abb2c09\n"
    },
    {
      "commit": "5812e20ff7cbc8efa0b8d7486ada2f58840a6ad5",
      "tree": "be0e9fdeb90bcbad76b17b3aae4e746d977d80ee",
      "parents": [
        "518f373324f355f8e58440dfbc3f5a1f2244bde7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 13 18:32:04 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 13 19:34:54 2017 -0800"
      },
      "message": "Revert^3 \"Hash-based dex cache type array.\"\n\nAssert failing for \"earchbox:search\":\nF zygote64: class_linker.cc:4612] Check failed: handle_scope_iface.Get() !\u003d nullptr\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 85c0f2ac03417f5125bc2ff1dab8109859c67d5c.\n\nChange-Id: I39846c20295af5875b0f945be7035c73ded23135\n"
    },
    {
      "commit": "71953d82e802d8e8e1619562aea26ed3204bafd7",
      "tree": "2e06989273e3a8e98ccf6c3a40b431d5e05f20f8",
      "parents": [
        "ab58a629d6cfe75f0ed34326c2ca6364b2203885",
        "85c0f2ac03417f5125bc2ff1dab8109859c67d5c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 13 16:53:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 13 16:53:04 2017 +0000"
      },
      "message": "Merge \"Revert^2 \"Hash-based dex cache type array.\"\""
    },
    {
      "commit": "24bbf98cec9f39a2592892adb245ce15d58cab19",
      "tree": "176def9d02c8bb1d995b69e9b23f845aeeb96c15",
      "parents": [
        "ab58a629d6cfe75f0ed34326c2ca6364b2203885"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 02 17:48:20 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 13 13:31:04 2017 +0000"
      },
      "message": "Enable String compression.\n\nTest: m test-art-host (interpreter, JIT, AOT)\nTest: m test-art-target on Nexus 6P (interpreter, JIT, AOT)\nTest: Nexus 6P boots\nTest: m ahat-test\nBug: 31040547\nChange-Id: I2c2f74ca147b3ea98ef06f9c64553737d17d42fd\n"
    },
    {
      "commit": "85c0f2ac03417f5125bc2ff1dab8109859c67d5c",
      "tree": "844952d237e35faa5c5a2357ab037366c8397115",
      "parents": [
        "8d4b1189639f0d8982bde681ccbdd7c03fe6ddbf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 02 16:42:38 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 10 11:23:11 2017 +0000"
      },
      "message": "Revert^2 \"Hash-based dex cache type array.\"\n\nThe reason for the revert was fixed by\n    https://android-review.googlesource.com/332666 .\nWe now enable clearing dex cache types in test 155 from that\nCL. Also avoid an unnecessary store in LookupResolvedTypes()\nand prevent verifier from messing up the dex cache types.\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit d16363a93053de0f32252c7897d839a46aff14ae.\n\nChange-Id: Ie8603cfa772e78e648d005b0b6eae59062ae729d\n"
    },
    {
      "commit": "595beb3ff0e8e9bc6ca9c3be453187a4a41ad7dc",
      "tree": "26480b97ebaf37f174416869552c96492b29e0cc",
      "parents": [
        "f8512f8515f7568984e1ca209929262ea88e4b59"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 06 14:11:54 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 09 15:50:27 2017 +0000"
      },
      "message": "Fix hprof/ahat for string compression.\n\nTest: m test-art-host\nTest: m ahat-test\nTest: m test-art-host with string compression enabled\nTest: m ahat-test with string compression enabled\nBug: 31040547\nChange-Id: I660e39c586d23f4a95686d484ca108466e52d249\n"
    },
    {
      "commit": "f85fc6bd9d65ef4689d6af797adb889da8cf15e3",
      "tree": "8fe8d622e30a550eb3a336bc12f925eb40828e6b",
      "parents": [
        "fe076a51b0498c2771341cc09a77db15b437328f",
        "8ca4e4e7a55f7a7079ec1f95a3188d9df434704b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Feb 06 10:13:08 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 06 10:13:09 2017 +0000"
      },
      "message": "Merge \"Clean up art::mirror::Class::SetSuperClass.\""
    },
    {
      "commit": "90b936ddda63139ff46a6755c3b83ad6e4ab4ac5",
      "tree": "c7ce2c3004eecc16ab41ed7cde105c3019638d4b",
      "parents": [
        "b78a8af993e877d74c5938f65f95feaf2fa01321"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 31 08:58:55 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 03 10:03:52 2017 -0800"
      },
      "message": "ART: Refactor verify_object.h\n\nMove the actual VerifyObject check into a new cc file, as we\ncommonly don\u0027t enable the check at all. This allows to cut the\n-inl include from almost all current users.\n\nThis also exposes missing -inl includes. Also fix up some of our old\nmess where .h defined functions require -inl.h defined functions.\n\nTest: m\n\nChange-Id: I3dd821bbe2015564a29bf1ed9be00f7a7276ad61\n"
    },
    {
      "commit": "8ca4e4e7a55f7a7079ec1f95a3188d9df434704b",
      "tree": "e8bb240938fdadcbe363ac00598ea43621c2c7a8",
      "parents": [
        "6058b682234060120c4407a1afad1182fa5a1baf"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Feb 03 15:12:38 2017 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Feb 03 17:35:54 2017 +0000"
      },
      "message": "Clean up art::mirror::Class::SetSuperClass.\n\n- Move its definition from runtime/mirror/class.h to\n  runtime/mirror/class-inl.h.\n- Prevent debug code from running in non-debug mode.\n\nTest: test-art-host\nChange-Id: I981cb9aa5c59c75c6a1c4d2145185cf8b147e2db\n"
    },
    {
      "commit": "d16363a93053de0f32252c7897d839a46aff14ae",
      "tree": "8823c6dd4641eae333aa7001203460757a515010",
      "parents": [
        "ac240396125911b52437a460a400c8b38be43a96"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 01 14:09:13 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 01 15:27:37 2017 +0000"
      },
      "message": "Revert \"Hash-based dex cache type array.\"\n\nReverting to work around some programs crashing with\n    Check failed: handle_scope_iface.Get() !\u003d nullptr.\nthough the reason for the failure not yet understood.\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\nBug: 30419309\n\nThis reverts commit ec7862283dd49f5a58d0ac45960ce27c2f7671b8.\n\nChange-Id: Ifded663633082f1e59e5b6ff2e026dc559bd6b82\n"
    },
    {
      "commit": "ec7862283dd49f5a58d0ac45960ce27c2f7671b8",
      "tree": "26d6dcc1d5ed4f0ba5ac15f17ef7377215684bf6",
      "parents": [
        "c01d49091f4588777db5bf45345f388058caa99f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 20 16:24:13 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 10:21:16 2017 +0000"
      },
      "message": "Hash-based dex cache type array.\n\nTest: m test-art-host (Interpreter, Optimizing, JIT)\nTest: m test-art-target on Nexus 6P (Interpreter, Optimizing, JIT)\nTest: Nexus 6P boots\nTest: m valgrind-test-art-host\nBug: 30627598\nBug: 34659969\nBug: 30419309\nChange-Id: Ic00eda89e58088a3573fc9ec0ad04c0e69e161d1\n"
    },
    {
      "commit": "66866e2b5710cf8135674d11c6912a6f023de186",
      "tree": "cfbfd895ac3c71aa3eae50e649866369b95ed987",
      "parents": [
        "dee81ab18f6be61add94256fbec90a913d09cc1a",
        "137cdfa1e8a3810fb86d3298ec10036c0491d13f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 27 19:11:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 27 19:11:32 2017 +0000"
      },
      "message": "Merge \"Avoid read barriers for ArtMethod::GetDexFile\""
    },
    {
      "commit": "bd2fed5a813b68fa42fe941b07325ba4ff3190b0",
      "tree": "2e8ce7221f842133a1b7b8e6fc4793acbf4ed8f6",
      "parents": [
        "ca21dc47adeed92a15a9d3fd090bdd0e6654679c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Jan 25 10:46:54 2017 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Jan 27 13:47:50 2017 +0000"
      },
      "message": "MethodHandles: Support and tests for revealDirect / reflectAs.\n\nWe need runtime support to materialize a Constructor, Field or\nMethod object from a MethodHandle and its associated ArtField\nor ArtMethod pointer.\n\nAn alternate approach might be to have all handles hold a reference\nto their associated Field or Method object (in addition to the\nraw ArtField or ArtMethod) but that seems unnecessary given that\nthese APIs are not expected to be called often.\n\nTest: test-art-host\n\nChange-Id: I9450706b9c30359edebf2e8a7afbc8d89bd68b26\n"
    },
    {
      "commit": "137cdfa1e8a3810fb86d3298ec10036c0491d13f",
      "tree": "db568fce8feec0ae6910ff1150cf46f08fe7e3e5",
      "parents": [
        "fbf47ea64a9f797a82030e919fa4f085c9eb5b28"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 26 14:03:11 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 26 17:04:55 2017 -0800"
      },
      "message": "Avoid read barriers for ArtMethod::GetDexFile\n\nShows up in pmd benchmark from Class::FindDeclaredDirectMethod and\nClass::FindDeclaredVirtualMethod. There are still calls to\nIsProxyMethod that could probably be eliminated.\n\nReadBarrier::Mark goes from 12.39% to 3.45% according to perf.\n\nTest: test-art-host\n\nChange-Id: I6a4f2fa2d68bf5f393f83b9b70e8d6fcc9dbdaa2\n"
    },
    {
      "commit": "440b5d9bffafa46366f58599414e0cff35ea3a6a",
      "tree": "033967c68fff98790ba2ef6f84e31bcea36acbf0",
      "parents": [
        "f34077c96af3389e8eae65252d4c5d51cf630039"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 24 15:32:25 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 25 09:58:30 2017 -0800"
      },
      "message": "Implement class-pre-define time redefinition.\n\nThis allows one to redefine classes as they are being loaded without\nrestriction as to the types of transformations that may be included.\nFor example one is allowed to add additional methods or fields to the\nclass being defined.\n\nBug: 31684920\nTest: mma -j40 test-art-host\nChange-Id: I671ee13444c05f28424e727fd80d9d46c78ca287\n"
    },
    {
      "commit": "8116003cc9dd1e74fac1682eec547b8bb0afb061",
      "tree": "08958e46edf93d7e13578d5b0362b8839b28d6dd",
      "parents": [
        "931cf54cce1212ee314741d14f9b9008ab593872",
        "c5889ce65ef7d31d4f0fe7be8f7f7f45948c5b5b"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Jan 25 10:45:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 25 10:45:31 2017 +0000"
      },
      "message": "Merge \"MethodHandles: Support and tests for invokeWithArguments.\""
    },
    {
      "commit": "c5889ce65ef7d31d4f0fe7be8f7f7f45948c5b5b",
      "tree": "5ae5f194ed3f8aa8eb6cec23f3262d5c2b3807fa",
      "parents": [
        "d8981ee26340c46b608fdff2cdf294b2f7d4afce"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Jan 19 20:42:23 2017 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 24 17:15:01 2017 +0000"
      },
      "message": "MethodHandles: Support and tests for invokeWithArguments.\n\nTracks libcore change a8cf0bffdb9e9cf031efd0d3c8b5645d45963562.\n\nTest: make test-art-host\nChange-Id: I65fbf3a82b629585324c477bdce6dabd63ae408e\n"
    },
    {
      "commit": "72ab684871f870aead76b23cb67deb046107b380",
      "tree": "d4bb40cab65df449246b35ae582234238676b7bb",
      "parents": [
        "e36c51aee58e61e9fc89851b767379c587f050e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 20 19:32:50 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 24 12:05:02 2017 +0000"
      },
      "message": "Add class status for resolved erroneous classes.\n\nSplit the old ambiguous status mirror::Class::kStatusError\ninto kStatusErrorUnresolved and kStatusErrorResolved. Once\na class has been resolved, IsResolved() shall return true\neven if the class later becomes erroneous. Allow returning\nerroneous class from ClassLinker::EnsureResolved() if it has\nbeen previously resolved. This allows consistent behavior\nfor retrieving classes, immune to multi-threaded races and\nmulti-dex weirdness. It also allows JVMTI to properly report\n\"prepared\" (i.e. resolved) classes that are also erroneous.\n\nThe new behavior is consistent with the RI.\n\nAdd regression tests to 008-exceptions for inconsistent\nbehavior for multi-dex retrieval of erroneous resolved class\n(wrapping or not wrapping the old exception based on which\ndex file is used for lookup) and for a CHECK(IsResolved())\ncrash in ClassLinker::LoadSuperAndInterfaces() (without any\ntests for similar checks that could have previously failed\nonly due to extremely unlikely race conditions; these should\nnow also be fixed).\n\nInconsistency still remains for class verification as shown\nby the new exceptionsForSuperClassInitFailure() test in\n008-exceptions, where interpreter and Optimizing still\ncause different exceptions to be thrown.\n\nNote: This is partially changing behavior implemented for\nbug 28787733. Since we allow the class loader to retrieve an\nerroneous resolved class, the ExceptionInInitializerError is\nnot thrown at all from VMClassLoader_findLoadedClass(), so\nthere is nothing to wrap in ClassNotFoundException.\n\nTest: m test-art-host\nBug: 30627598\nBug: 28787733\nChange-Id: I86cdca00f35a0d6221d2559e3026ac0428a3613c\n"
    },
    {
      "commit": "a7e38d8aaacfca85b40b5df654f85c0979968672",
      "tree": "34322c79fc328a608fc17303453c8ec1f38b9eaa",
      "parents": [
        "05778764cb11162b6f3ff72386135ed45a07af33"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 19 14:57:28 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 20 11:32:03 2017 -0800"
      },
      "message": "Use original dex file for retransformation.\n\nThe spec requires us to pass the dex file as it appeared before any\nretransformation-capable agents had modified it to the\nClassFileLoadHooks when RetransformClasses is called. We do this by\nsaving the initial dex file bytes into the class as a byte[].\n\nBug: 32369916\nTest: mma -j40 test-art-host\n\nChange-Id: Ic6af3738cd2a831e91ba1144f502fa58b3c333e4\n"
    },
    {
      "commit": "39cee66a8ddf0254626c9591662cf87e4a1cedc4",
      "tree": "be25df71e51ce03a8847c23934322b8f282a291b",
      "parents": [
        "a3974581751cd73a896f7c4fcab71beb17c4f9dc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 13 16:04:53 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 18 11:12:33 2017 +0000"
      },
      "message": "Entrypoints cleanup.\n\nRemove unused ones to facilitate the transition to compressed\ndex caches.\n\ntest: test-art-host, test-art-target\nChange-Id: I1d1cb0daffa86dd9dda2eaa3c1ea3650a5c8d9d0\n"
    },
    {
      "commit": "9320675cb21a53b3dd59d80d440a96e04c84f28d",
      "tree": "4ed1f60e2d0a39a554e1f7b38d0adbf7beb8282b",
      "parents": [
        "8bd59a0fd46db83616785168231e09fb95ed2ead"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 17 13:20:55 2017 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 17 17:05:12 2017 +0000"
      },
      "message": "MethodHandles: Remove experimental flag.\n\nRuntime::IsMethodHandlesEnabled now always returns true.\nThis change also removes the (now unnecessary) run scripts\nfor method handle tests.\n\nNote that the --experimental\u003dmethod-handles flag is left in\nplace for the test build steps (etc/default-build) because it\u0027s still a\nconvenient way to supply arguments to jack / smali.\n\nTest: make test-art-host\n\nChange-Id: I8475c7b8ac2615ac382a06ce54be39dce3cc7713\n"
    },
    {
      "commit": "b79bbd817317bfec60de7957d405a7de0d9e75c1",
      "tree": "afe0f4002b97b08b82c8e4e4ce1540a0f26025be",
      "parents": [
        "4cddd03950bb21e950afd72cad87e963bc53ea10"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Jan 16 17:48:28 2017 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Jan 16 17:48:28 2017 +0000"
      },
      "message": "MethodHandles: Implement invoker / exactInvoker.\n\nAccompanies libcore commit 0a72753297b45d08ca33cf7e87888f5fee87f69e.\n\n- Adds callsiteType field to mirror::EmulatedStackFrame.\n- Adds unit tests for MethodHandles.invoker /\n  MethodHandles.exactInvoker.\n\nTest: art/test/run-test --host 957\nChange-Id: Ia27742c80de560a5b38f792bfa97664678cec8ae\n"
    },
    {
      "commit": "9e68f5043323eaf4543ebf3b6f496145d8ae77a2",
      "tree": "bc6b03ddb6a20697709d92151a188c1f17458a25",
      "parents": [
        "7620a3b58a9286fae376f4705b602310e5fd464a",
        "65f5f247a367af9d6b9ac63767b69ecf3ab079bc"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jan 12 18:58:38 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 12 18:58:39 2017 +0000"
      },
      "message": "Merge \"Fix race condition btw DelayReferenceRefernent vs Reference.clear().\""
    },
    {
      "commit": "811bd5ff0189122d34e8a1b8ccda889bbba4c0d1",
      "tree": "278b128c15dc32657e06fd38b7111407edef552f",
      "parents": [
        "b51edffe1c0b331a4d4d5298938c7c1b31ebaf6a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Dec 07 11:35:37 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 06 08:49:07 2017 +0000"
      },
      "message": "ART: Make method handle runtime code callable from compiler.\n\nMost of this change is moving the existing method handles code, but it\nalso introduces a new header file, common_dex_operations.h, that has\nsome operations taken from interpreter_common.{h,cc} that are also used\nby method handles (perform call, set field, get field).\n\nBug: 30550796\nTest: m test-art-host\nChange-Id: I2235e13770a5562950f2767f65a25ca273479150\n"
    },
    {
      "commit": "8ba654956553d79a2478f6d050044c5a963a3512",
      "tree": "8310b0d081c85cb6b5ebf93a50dd3f807be4eb74",
      "parents": [
        "8a26281ead6ccbc2e280545ac36d7c44415e0f26",
        "b3da36c182329f228b8c78d306a57fa11a6004ea"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Jan 05 22:15:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 05 22:15:30 2017 +0000"
      },
      "message": "Merge \"Reduce the number of fences needed for monitors\""
    },
    {
      "commit": "b3da36c182329f228b8c78d306a57fa11a6004ea",
      "tree": "707233fdaf345eb0b8068cfde5a1bff4e16aab53",
      "parents": [
        "1e33d05866bd5f146e2341712a1c06037e9d07a2"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Dec 15 13:12:59 2016 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Jan 04 15:18:22 2017 -0800"
      },
      "message": "Reduce the number of fences needed for monitors\n\nAdd the necessary CasWeakAcquire primitives for LockWords.\n\nHave MonitorEnter initially read the lockword using a\nmemory_order_relaxed operation. In the unlikely case we need more,\ncompensate with an explicit fence.\n\nIn the uncontended case, install the thin lock with Acquire,\nrather than SequentiallyConsistent semantics.\n\nHave MonitorExit use a Release instead of SequentiallyConsistent\nCAS in the ReadBarrier case. Add TODO for the other case.\n\nTogether, these should usually eliminate 3 fences (or acq/rel)\nper critical section.\n\nHave Install() only use Release ordering.\n\nAdd TODO for inflation spinning, which looks to me like it could be\nimproved appreciably.\n\nDrive-by fix:\n\nGetMaxSpinsBeforeThinLockInflation spelling\n\nTest: Build for several targets, boot, m art-test-host art-test-target\n\nChange-Id: I2cab09723252065f6365e4234ee3249c69ece888\n"
    },
    {
      "commit": "dba61481035b7944173181ec9ee02aea41dd0e29",
      "tree": "8629775e657cc8968e2f8fa2af6256c7a58c7dd4",
      "parents": [
        "cb2ce333ee2d1053919fe0acc390369bea3ad77e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 21 08:20:29 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 21 11:43:14 2016 -0800"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Basic obsolete methods support\"\"\"\"\n\nA GetDeclaringClass()-\u003eGetDexCache() got inserted during the\nmerge/review process meaning that we would try to access incorrect\ndex-cache in obsolete methods in some situations.\n\nAlso when using tracing we would loop forever (or at least until an\nOOM error) in test 916 due to tracing forcing InterpretOnly mode\nmeaning methods would never be jitted.\n\nBug: 32369913\nBug: 33630159\n\nTest: ART_TEST_TRACE\u003dtrue \\\n      ART_TEST_JIT\u003dtrue   \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\n\nThis reverts commit f6abcda293b115a9d7d8a26376ea2dcf2d1dc510.\n\nChange-Id: I0773bfcba52e3cd51a83be815c6a50c189558f48\n"
    },
    {
      "commit": "f6abcda293b115a9d7d8a26376ea2dcf2d1dc510",
      "tree": "a30ce596848d14c95a73449dbf2bfccf26a510b9",
      "parents": [
        "ce77fc0e7f60a15354bb20c356537cbf8b53b722"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 09:26:18 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 09:26:18 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Basic obsolete methods support\"\"\"\n\nFails in tracing mode\n\nBug: 32369913\nBug: 33630159\n\nThis reverts commit ce77fc0e7f60a15354bb20c356537cbf8b53b722.\n\nChange-Id: I1bdcf6ad467f2e31f9c5d0c3c987b90a4f5efc69\n"
    },
    {
      "commit": "ce77fc0e7f60a15354bb20c356537cbf8b53b722",
      "tree": "b4301967c423ab190a4274409d99a3d6e23f0e8a",
      "parents": [
        "d54f43ca39dfa92f08c2d760123f185f0f65fb86"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 01:05:52 2016 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 19 14:26:18 2016 -0800"
      },
      "message": "Revert \"Revert \"Basic obsolete methods support\"\"\n\nThis reverts commit b81a9840b44480bfeacd74b8d9f51e06f295411d.\n\nThere were 2 issues with the original CL\u0027s test 916-obsolete-jit that\ncaused it to sporadically fail.\n\nFirst, when checking if we had jitted the function under test in\n916-obsolete-jit we failed to check to see if the function \u0027doCall\u0027,\nwhich is used to work-around bugs in our deoptimization \u0026 compilation\nsystems, had also been jitted.\n\nIn the case where the \u0027sayHi\u0027 function had been jitted but the\n\u0027doCall\u0027 function had not we would (correctly) fail to redefine the\n\u0027Transform\u0027 class since we would not be able to deoptimize the \u0027sayHi\u0027\nfunction since it is under a quick_to_interpreter_bridge (runtime)\nframe.\n\nSecondly, the function Main.isInterpretedFunction was incorrect and\nwould always return false, regardless of the actual state of the\nfunction. This would cause the test to fail as the\nquick_to_interpreter_bridge frame prevented deoptimization of the\nobsoleted function. Usually the warm-up period was enough to make sure\nthe methods were jitted anyway but this was not guaranteed.\n\nBoth of these problems become more likely to occur on systems with\nmore cpu contention such as the buildbots.\n\nTest: stress --cpu 60 \u0026; while ./test/run-test --host --jit 916; do ; done\n\nReason for revert: Fixed bug in test that was causing failures.\n\nOriginal Tests:\n\nTest: ./test/run-test --host 914\nTest: ./test/run-test --host 915\nTest: ./test/run-test --host 916\nTest: mma -j40 test-art-host\nTest: ART_TEST_JIT\u003dtrue \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --no-jit\n\nBug: 32369913\nBug: 33630159\n\nChange-Id: If1a92e47b90965a7dc21c5826185debe62bd1554\n"
    },
    {
      "commit": "65f5f247a367af9d6b9ac63767b69ecf3ab079bc",
      "tree": "bff631b0efd7e8fe77be9c445ea9224e2b67433b",
      "parents": [
        "5b32b91d731d6187ada4c6fc804041b7b3b6903c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Dec 19 11:44:47 2016 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Dec 19 11:44:47 2016 -0800"
      },
      "message": "Fix race condition btw DelayReferenceRefernent vs Reference.clear().\n\nRename IsMarkedHeapReference to IsNullOrMarkedHeapReference.\n\nMove the null check from the caller of IsMarkedHeapReference into\nIsNullOrMarkedHeapReference.\n\nMake sure that the referent is only loaded once between the null\ncheck and the IsMarked call.\n\nUse a CAS in ConcurrentCopying::IsNullOrMarkedHeapReference when\ncalled from DelayReferenceRefernent.\n\nBug: 33389022\nTest: test-art-host without and with CC.\n\nChange-Id: I20edab4dac2a4bb02dbb72af0f09de77b55ac08e\n"
    },
    {
      "commit": "913e6e6f36f6feb1d11e7c095dbbc9cea7ab01be",
      "tree": "d1e74a07e3b801ff81eaefe5569a1262cc922976",
      "parents": [
        "4c1667fd521f6e11367fd262f9bd6474f48fb3e7",
        "f9bf250cc642c4e3e0c6904550fe922d3359a737"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 16 09:32:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 16 09:32:23 2016 +0000"
      },
      "message": "Merge \"Remove dex cache string from mirror::Class.\""
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "f9bf250cc642c4e3e0c6904550fe922d3359a737",
      "tree": "953351c7e13b45e9246625ad81bce708788d96f9",
      "parents": [
        "b73e659be3fb6474ff3a993cd25ecbfa1cc4715c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 14 14:59:04 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 15 14:52:22 2016 +0000"
      },
      "message": "Remove dex cache string from mirror::Class.\n\nThe compiled code does not need it anymore.\n\nTest: test-art-host test-art-target\nChange-Id: I71c08ce12d450ab2b2cd018330d42a8b8c9e3da2\n"
    },
    {
      "commit": "b7cc593a34896e230aab6d9718239b4f85c2dc63",
      "tree": "fdad7132bcdf125e8c2a499bf794bc6bcbba76d3",
      "parents": [
        "bdca0a27eb034152afba52f1d499d773b81908df",
        "b81a9840b44480bfeacd74b8d9f51e06f295411d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 01:04:03 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 15 01:04:03 2016 +0000"
      },
      "message": "Merge \"Revert \"Basic obsolete methods support\"\""
    },
    {
      "commit": "b81a9840b44480bfeacd74b8d9f51e06f295411d",
      "tree": "d79a3567b272b6eb4fb94d66a537cf92bef455db",
      "parents": [
        "d8936da27b792d1ca02e59c92456a1a53c7b9905"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 00:59:05 2016 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 00:59:05 2016 +0000"
      },
      "message": "Revert \"Basic obsolete methods support\"\n\nThis reverts commit d8936da27b792d1ca02e59c92456a1a53c7b9905.\n\nReason for revert: Some sort of race in JIT\n\nChange-Id: Ibb4e520bb0721d6d7aa2c841a52eb5baff07740e\n"
    },
    {
      "commit": "6d736d8edb0692ac70044c18045e2fcb3d14c1e5",
      "tree": "7b7c9973a04d9231af44fc967ebe49f1c835a861",
      "parents": [
        "7a8e16c827efc866d01b5cbca835b18fe29a83ab",
        "d8936da27b792d1ca02e59c92456a1a53c7b9905"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 14 22:21:27 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 14 22:21:28 2016 +0000"
      },
      "message": "Merge \"Basic obsolete methods support\""
    },
    {
      "commit": "d8936da27b792d1ca02e59c92456a1a53c7b9905",
      "tree": "6a593dd426e7f4a15c651dd3b872f22fb64f09ce",
      "parents": [
        "7c73bf3518eea7544406eadfed6946411c54a267"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 28 16:24:32 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 14 13:01:27 2016 -0800"
      },
      "message": "Basic obsolete methods support\n\nAdd support for executing obsolete methods following redefinitions.\nThis support includes methods that have been jitted. This does not add\nany additional validity checks to our redefinition functions.\n\nNote using work-arounds to ensure 916 works pending some fixes to the\ncompiler, deoptimizer, or both.\n\nTest: ./test/run-test --host 914\nTest: ./test/run-test --host 915\nTest: ./test/run-test --host 916\nTest: mma -j40 test-art-host\nTest: ART_TEST_JIT\u003dtrue \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --no-jit\n\nBug: 32369913\nBug: 33630159\n\nChange-Id: I78ef95f484146f1fb93c37fc50f56575bdab2432\n"
    },
    {
      "commit": "017c55c120a40612364448826692cc7d402eb913",
      "tree": "9f415cad52a8b34e2f3af49195b9a4a531ab4d58",
      "parents": [
        "319261e13a6825c1c8f97d46c40b4e2bd0b4e1aa",
        "db70ce5e788404f36cb5dbb137c6a8f79f34a2a0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 13 19:55:45 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 13 19:55:46 2016 +0000"
      },
      "message": "Merge \"Address some review comments\""
    },
    {
      "commit": "db70ce5e788404f36cb5dbb137c6a8f79f34a2a0",
      "tree": "b291c40e1b6c44f3744404f085706f4b07cbb73c",
      "parents": [
        "7d785fca4fd6cf3507aaa807681b3d73ed586c9b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 12 11:06:59 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 13 10:12:07 2016 -0800"
      },
      "message": "Address some review comments\n\nAddressed comments in dex cache and class table. Added class table\ntest.\n\nTest: mm test-art-host-gtest-class_table_test -j20\n\nChange-Id: I3ec0282247187acb1ec7af25b309501f001a1c3e\n"
    },
    {
      "commit": "16850aecd661375533404099cbc679aba7377ba4",
      "tree": "5e0f77ed1955df91935837cd086c02360ad52bb6",
      "parents": [
        "fb678bfaad7f432861d26bde8343d53fadd68c07"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 09 14:01:02 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 13 10:24:09 2016 +0000"
      },
      "message": "Fix string compression for embedded zero chars.\n\nTreat embedded zero character as non-ASCII.\n\nTest: m test-art-host\nTest: m test-art-host with string compression enabled.\nBug: 31040547\nChange-Id: Iea6e92f89d424953814953ba27f1c7a991589c65\n"
    },
    {
      "commit": "5df32d376713499722c5cf17d7d94543295953dc",
      "tree": "f8687d5cfcc606a9b2ad02e809917513c978add9",
      "parents": [
        "57096b723193486ab0a6acfdfb535d90b20f6073"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 06 16:02:27 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 09 15:25:20 2016 -0800"
      },
      "message": "Use store release for resolved types\n\nFor DefineClass, use a release store for SetResolvedType. This is\ndone to prevent other threads from seeing a class but not necessarily\nseeing the loaded members like the static fields array.\n\nIt is theorized that a load acquire is not required since obtaining\nthe resolved class will always have an address depedency or a lock.\n\nBug: 32075261\n\nTest: test-art-host\n\nChange-Id: I8ab18edc2cc7c9eb4a30897903d5cf1c7f9eb24e\n"
    },
    {
      "commit": "19a4d374738da4dc668a078f92dbe887ff9f00d9",
      "tree": "a210638e93d80cf0a297de07f4c9cdc60784ce50",
      "parents": [
        "aea9ffece7eb32f3884a4ad0553e1df4d90fd9e4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 08 14:41:46 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 09 13:30:00 2016 +0000"
      },
      "message": "Clean up Class::GetDirectInterface().\n\nOnce the `klass` has been resolved, this function should not\nneed to resolve interface types anymore. Drop the type\nresolution from this function and pass the Class as ObjPtr\u003c\u003e\ninstead of Handle\u003c\u003e. Make callers that expect non-null\nresult DCHECK() that assumption. For the callers that may\nactually need to resolve these interface classes, introduce\na new function ResolveDirectInterface().\n\nAlso improve ObjPtr\u003c\u003e constructors and assignment operator\nto improve overload resolution. For example, if we have\nfoo(ObjPtr\u003cT1\u003e) and foo(ObjPtr\u003cT2\u003e), calling foo(.) with\na T1* would have previously been ambiguous even if T1 is\nnot a base of T2.\n\nTest: m test-art-host\nChange-Id: Iff44a7285f68f0af4507fc9ba37343865422fe84\n"
    },
    {
      "commit": "e4cdd4dbcbc75e373917d22214cd431643cd3610",
      "tree": "c4b467a9fed50f51fcfbffff85f893d3b1643282",
      "parents": [
        "ab1b1c06a782f18d9594e6a4ff4b2c4b895ecee6",
        "0b772575fcf3b93896a71ceb524329f867899c75"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 05 21:08:20 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 05 21:08:20 2016 +0000"
      },
      "message": "Merge \"Address comments I missed on a previous CL\""
    },
    {
      "commit": "0b772575fcf3b93896a71ceb524329f867899c75",
      "tree": "90630dac067ed92fe1b2169af627c1d1df44c2b9",
      "parents": [
        "0fd9a7d67878d1d88a74895c0d02c556b5de8e72"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 02 17:27:31 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 05 08:57:54 2016 -0800"
      },
      "message": "Address comments I missed on a previous CL\n\nI accidentally missed some comments on\nandroid-review.googlesource.com/c/305518 when I submitted it. This\naddresses those comments.\n\nTest: mma -j40 test-art-host\nChange-Id: Icd8ff65dee1730d10489f25e75bddbd455c68413\n"
    },
    {
      "commit": "cc1b5357f83f0b787d51fbfde3fe870c8a2fa050",
      "tree": "253d23dba63e1003dc8e953002b994d01c97f181",
      "parents": [
        "5d0c3009fc56afdb4aeae5ee6dd98c3d1d2e7711"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 01 16:58:38 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 02 14:00:22 2016 -0800"
      },
      "message": "ART: Clean up ClassLinker\n\nTry to clean up and simplify ClassLinker.\n\nMove dex_lock to Locks. Remove dead code. Move single-use\ncode to user. Hide implementation details from header.\n\nTest: m test-art-host\nChange-Id: I58150fa9c2a9524f8304370270c2197d655cb3a8\n"
    },
    {
      "commit": "c571e73e21202cff0a8ec3bcfecb7d326e8648ef",
      "tree": "905cb5252b8bc8c335f569c869dfb8529301f40c",
      "parents": [
        "edcd7929e2bf521316fa5305109c330d563d87db",
        "cfa325e4ca65603fdb03a836a6cb394d23ed511f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 02 11:52:14 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 02 11:52:15 2016 +0000"
      },
      "message": "Merge \"ART: Add verifier support for invoke-polymorphic.\""
    },
    {
      "commit": "cfa325e4ca65603fdb03a836a6cb394d23ed511f",
      "tree": "f14e628cc90f7b03f8f227a30361993f3f594f11",
      "parents": [
        "35b6546b0a4fe423ed6f27d8c5b709d5191e99ef"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Oct 13 10:25:54 2016 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Dec 02 10:09:40 2016 +0000"
      },
      "message": "ART: Add verifier support for invoke-polymorphic.\n\nChange-Id: I1e1860cad80db46320c3ef5a9eaceb7529ea68d7\nBug: 30550796,33099829,33191712\nTest: make test-art-host\n"
    },
    {
      "commit": "063fc772b5b8aed7d769cd7cccb6ddc7619326ee",
      "tree": "bc165781989087a998721991504e589a7d5b0926",
      "parents": [
        "48d08a4233ee4450b0d5073d41445f9dd1f17191"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Aug 02 11:02:54 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Dec 01 11:15:47 2016 -0800"
      },
      "message": "Class Hierarchy Analysis (CHA)\n\nThe class linker now tracks whether a method has a single implementation\nand if so, the JIT compiler will try to devirtualize a virtual call for\nthe method into a direct call. If the single-implementation assumption\nis violated due to additional class linking, compiled code that makes the\nassumption is invalidated. Deoptimization is triggered for compiled code\nlive on stack. Instead of patching return pc\u0027s on stack, a CHA guard is\nadded which checks a hidden should_deoptimize flag for deoptimization.\nThis approach limits the number of deoptimization points.\n\nThis CL does not devirtualize abstract/interface method invocation.\n\nSlides on CHA:\nhttps://docs.google.com/a/google.com/presentation/d/1Ax6cabP1vM44aLOaJU3B26n5fTE9w5YU-1CRevIDsBc/edit?usp\u003dsharing\n\nChange-Id: I18bf716a601b6413b46312e925a6ad9e4008efa4\nTest: ART_TEST_JIT\u003dtrue m test-art-host/target-run-test test-art-host-gtest\n"
    },
    {
      "commit": "0fd9a7d67878d1d88a74895c0d02c556b5de8e72",
      "tree": "1e10e3ad67ae8477db93e7bc9c35aaaa4ee9fa77",
      "parents": [
        "07ab8831ff6025f91f927cc9e60c04801583666c",
        "a01de59eef990c07df9815376cd3c675e3acd481"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 30 23:01:31 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 23:01:32 2016 +0000"
      },
      "message": "Merge \"Infrastructure for obsolete methods\""
    },
    {
      "commit": "a01de59eef990c07df9815376cd3c675e3acd481",
      "tree": "86f6ef41c13de572dc134956c836dd94c35d9d64",
      "parents": [
        "424c03aac25835febbf5c695b943206bc40ef335"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 15 10:43:06 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 30 10:23:47 2016 -0800"
      },
      "message": "Infrastructure for obsolete methods\n\nThis adds some of the structures and functions needed to eventually\nsupport obsolete methods. Specifically this adds the code to create\nand iterate through the obsolete dex-cache maps of classes and\nre-organizes the redefinition code to be more sensible and extensible.\n\nBug: 32369913\nTest: ./test/run-test --host 902\nTest: mma -j40 test-art-host\n\nChange-Id: I93d60fa66e7512e8b059cdf42af8a56e93ef4bd7\n"
    },
    {
      "commit": "211fd802903c130ed1c47c18d1b87809d290aa69",
      "tree": "e049fbad2dd7fbf244d5163e084be339f02fc8d7",
      "parents": [
        "304f2d3a1d090846a7a55a0016efc9fc8eb14078",
        "8a0128a5ca0784f6d2b4ca27907e8967a74bc4c5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 30 18:21:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 18:21:22 2016 +0000"
      },
      "message": "Merge \"ART: Add dex::StringIndex\""
    },
    {
      "commit": "c9e2fc27c57d4c007d26081a8e60b244ecba8665",
      "tree": "cd59bdb099bf2342f4400c37cfbf6ea827a56632",
      "parents": [
        "9ebca690fdfb36fe1a689fd32c3d05d999497768",
        "e51ca8bfa8a193b64901ad214842f213adca92eb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 30 13:57:30 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 13:57:30 2016 +0000"
      },
      "message": "Merge \"Move inline caches GC handling in JitCodeCache.\""
    },
    {
      "commit": "e51ca8bfa8a193b64901ad214842f213adca92eb",
      "tree": "b07b2534edc592d68b5461a3bdb8a31241892d54",
      "parents": [
        "eb9c58e88f8e0f4a0a413efce04b49b183ad23e3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 14:49:31 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 29 21:05:51 2016 +0000"
      },
      "message": "Move inline caches GC handling in JitCodeCache.\n\nMake the classes they hold weak references and visit\nthem during SweepJitRoots.\n\nThis fixes the newly introduced deadlock:\n\nThread1:\n1) Lock JitCodeCache lock to create Profiling info for\n  ArtMethod m.\n2) m is a copied method, we need to track the actual holder,\n   needing to decode a weak reference.\n3) Weak references are not accessible due to GC.\n\nGC Thread:\n- Disallow weak reference access.\n- Wait for checkpoint.\n\nThread2:\n- Try to lock JitCodeCache lock\n- Deadlock, as Thread1 owns the JitCodeCache lock.\n\nTest: test-art-host\nbug: 31289185\nbug: 33198826\n\nChange-Id: I7ee17631015450ace8d2a0264415a81c5a902bb8\n"
    },
    {
      "commit": "8a0128a5ca0784f6d2b4ca27907e8967a74bc4c5",
      "tree": "0dec75200282ae5e49785395e97bd4e6459f1c09",
      "parents": [
        "60438b46090d22bb9b978196f5aa53fab3b89759"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 28 07:38:35 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 29 11:11:46 2016 -0800"
      },
      "message": "ART: Add dex::StringIndex\n\nAdd abstraction for uint32_t string index.\n\nTest: m test-art-host\nChange-Id: I917c2881702fe3df112c713f06980f2278ced7ed\n"
    },
    {
      "commit": "1c87878ca87b0c5dde08416ef75615632eace7ac",
      "tree": "2e5e16040024115d75baebdbf064987961e36e5f",
      "parents": [
        "5ee771615a7e7752abb8b0d53122ca44137c4286"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 15:46:49 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 17:04:20 2016 +0000"
      },
      "message": "Revert \"Revert \"Method Handles: Add VarargsCollector.\"\"\n\nThis reverts commit 12af7a41c224923fb55699305008214636a1a3da.\n\nTest: m test-art-host-run-test-956-methodhandles\nBug: 30550796\nChange-Id: Ia820093bab919667729daba5b14330de51a63f79\n"
    },
    {
      "commit": "12af7a41c224923fb55699305008214636a1a3da",
      "tree": "a93fcd7a973d0fd2b5dd7619858ca1e84a96408d",
      "parents": [
        "ab52ce1480d9c4701bfe3ff3530596ec0c5760ee"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 14:27:07 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 14:27:07 2016 +0000"
      },
      "message": "Revert \"Method Handles: Add VarargsCollector.\"\n\nThis reverts commit ab52ce1480d9c4701bfe3ff3530596ec0c5760ee.\n\nChange-Id: Idc6dd28b58a61cbd2c9ee72e8a0eeb07b2ca0edf\n"
    },
    {
      "commit": "ab52ce1480d9c4701bfe3ff3530596ec0c5760ee",
      "tree": "e1966edd05b7e7ca8e0e90ea2c2b90b3b9d10a32",
      "parents": [
        "bbf33111444f1c7665eb6ad21438f2ca97cd488e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 11 11:11:31 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 23 16:56:15 2016 +0000"
      },
      "message": "Method Handles: Add VarargsCollector.\n\nEnable support for methods with variable arity arguments.\n\nTest: m test-art-host-run-test-956-methodhandles\nBug: 30550796\n\nChange-Id: I205724ddacc6c9840e18093a3984c1ad6e54394a\n"
    },
    {
      "commit": "a598b869b255b4daeaa34d1dd0939222a3a791b7",
      "tree": "5af89e57aaa81cabbee54c924a9319814c39a81d",
      "parents": [
        "b2dc55149665fa288d44136642a6814a3a5a74a4",
        "a5b09a67034e57a6e10231dd4bd92f4cb50b824c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 21 21:17:32 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 21 21:17:32 2016 +0000"
      },
      "message": "Merge \"ART: Add dex::TypeIndex\""
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "cca340b452baae0eb1fe37959063b63256bbef3b",
      "tree": "7fe99930aff2899be156f1dfd7de48ef774ee5be",
      "parents": [
        "f8f36c246ee46522a7446e6f3a155e0fc5c7b859"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 18 17:43:05 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 19 14:58:02 2016 -0800"
      },
      "message": "ART: Fix line break in Throwable::Dump\n\nAdd line breaks for missing stack traces.\n\nTest: m test-art-host\nChange-Id: I0624ed19d6d025b7c00d6e6fb55827577bffc7b6\n"
    },
    {
      "commit": "ab39c210072fdb4d22bb11bba354653cdfc58f64",
      "tree": "2b100b05b2f4a2d8c864f110b20f41955ccb8891",
      "parents": [
        "96de579b8cb24e87ad0a0ec33b0507c95765a951",
        "6013f77af69cf6eb81195448777b3a646a3eee1a"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Nov 17 00:36:44 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 17 00:36:45 2016 +0000"
      },
      "message": "Merge \"Address comments from aog/303658.\""
    },
    {
      "commit": "6013f77af69cf6eb81195448777b3a646a3eee1a",
      "tree": "bbcdb4c10901a0b6649fe23a25860e9fd7f9625c",
      "parents": [
        "1b0adbf7b14973c3f110976de046d75a7d4ed934"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Nov 16 13:30:17 2016 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Nov 16 13:30:17 2016 -0800"
      },
      "message": "Address comments from aog/303658.\n\nBug: 12687968\nTest: test-art-host with CC.\nChange-Id: I87a3be336cb1c6b17acc515415c325464ffddc01\n"
    },
    {
      "commit": "6beced4c017826f7c449f12fac7fa42403657f2b",
      "tree": "f53614eeeaa92be9a7398e262d9440f59e3384a5",
      "parents": [
        "e89667815b9d0a1eacb91678fed2a7518bb07cc2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 15 15:51:31 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 16 10:41:40 2016 -0800"
      },
      "message": "Change iftable to never be null\n\nSimplifies code generation by removing a null check. The null case\nis rare.\n\nRitzperf code size: 13107624 -\u003e 13095336\n\nAlso addressed comments from previous CL.\n\nBug: 32577579\n\nTest: test-art-host, run ritzperf both with CC\n\nChange-Id: I2b31e800867112869d7f0643e16c08826296979e\n"
    },
    {
      "commit": "e43b80eda3fca4c99878e123abced1f48010ec7b",
      "tree": "6502dd303e3268ed0a2cf5f6ef2c405b381b2580",
      "parents": [
        "66ceada00fec4b52481a42120fb9d1b89f357390"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Nov 14 13:42:50 2016 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Nov 14 13:42:50 2016 -0800"
      },
      "message": "Optimize non-intrinsic object array copy for Baker.\n\nCheck the gray bit per array rather than per element.\n\nBug: 12687968\nTest: test-art-host with CC.\nChange-Id: I20b44e522e66f0b156644b93a2885a8e7f40f8db\n"
    },
    {
      "commit": "1a06f9f67a4e91610d2a050093b36de264904916",
      "tree": "fc1630bba8730f4ad3fdac447d14a3682fe35c03",
      "parents": [
        "b98115251ea963254fb55c0e48581d8b284c29e9"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 09 08:32:42 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Nov 10 19:53:57 2016 +0000"
      },
      "message": "MethodHandles: Enable return value conversions.\n\nEnables return values conversions and simplify the type conversion\nlogic. Ensures check for WrongMethodTypeExceptions before invoking a\nmethod handle.\n\nTest: m test-art-host-run-test-956-methodhandles\nBug: 30550796\n\nChange-Id: I8add3ad0a19b43010946b4fb9f1c0f0949287860\n"
    },
    {
      "commit": "fdaf0f45510374d3a122fdc85d68793e2431175e",
      "tree": "3315c82410fd42612bb501bed150df454dde0dde",
      "parents": [
        "b02b8d7df48ea3314cfcb3c08d84ac9556363833"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 13 19:29:53 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 09 11:08:31 2016 +0000"
      },
      "message": "Change string compression encoding.\n\nEncode the string compression flag as the least significant\nbit of the \"count\" field, with 0 meaning compressed and 1\nmeaning uncompressed.\n\nThe main vdex file is a tiny bit larger (+28B for prebuilt\nboot images, +32 for on-device built images) and the oat\nfile sizes change. Measured on Nexus 9, AOSP ToT, these\nchanges are insignificant when string compression is\ndisabled (-200B for the 32-bit boot*.oat for prebuilt boot\nimage, -4KiB when built on the device attributable to\nrounding, -16B for 64-bit boot*.oat for prebuilt boot image,\nno change when built on device) but with string compression\nenabled we get significant differences:\n  prebuilt multi-part boot image:\n    - 32-bit boot*.oat: -28KiB\n    - 64-bit boot*.oat: -24KiB\n  on-device built single boot image:\n    - 32-bit boot.oat: -32KiB\n    - 64-bit boot.oat: -28KiB\nThe boot image oat file overhead for string compression:\n  prebuilt multi-part boot image:\n    - 32-bit boot*.oat: before: ~80KiB after: ~52KiB\n    - 64-bit boot*.oat: before: ~116KiB after: ~92KiB\n  on-device built single boot image:\n    - 32-bit boot.oat: before: 92KiB after: 60KiB\n    - 64-bit boot.oat: before: 116KiB after: 92KiB\n\nThe differences in the SplitStringBenchmark seem to be lost\nin the noise.\n\nTest: Run ART test suite on host and Nexus 9 with Optimizing.\nTest: Run ART test suite on host and Nexus 9 with interpreter.\nTest: All of the above with string compression enabled.\nBug: 31040547\n\nChange-Id: I7570c2b700f1a31004a2d3c18b1cc30046d35a74\n"
    },
    {
      "commit": "ba28f9f62f9908e04be3097f900db4701dd3d392",
      "tree": "86e4807d97e144812495706f7f9d0d2cfab96540",
      "parents": [
        "689a331aded82340d2ab144d0adb9bbbbd4b53ff"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Oct 26 10:56:25 2016 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Nov 08 06:20:28 2016 +0000"
      },
      "message": "Argument conversions for setter/getter MethodHandles.\n\nTest: m test-art-host-run-test-959-invoke-polymorphic-accessors\nBug: 30550796\n\nChange-Id: I9898605fc9f9f8a80f47f9559f3ccb99b02b07c8\n"
    },
    {
      "commit": "e82809a2c8f26aee1e861724908f0257018cd064",
      "tree": "09eda3b77ebc26c80821778894b38345df85dd35",
      "parents": [
        "d4ede93561597f248cdd5687fcbf41a42ca4f824",
        "0a8485ef5cb81746625fe57acf8adfd8b2bb28c0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 04 11:48:47 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 04 11:48:48 2016 +0000"
      },
      "message": "Merge \"MethodHandles: Implement MethodHandle.asType.\""
    },
    {
      "commit": "38cea84b362a10859580e788e984324f36272817",
      "tree": "cf232431a9139116ea09b451aa9abbc98b8d8462",
      "parents": [
        "47b6bdb2a06cc4c296762c7461281f4390e17c2d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 03 13:06:25 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 03 14:07:56 2016 -0700"
      },
      "message": "ART: Make Handle trivially-copyable\n\nUse default copy constructor and copy assignment to make Handle\ntrivially copyable. Do the same for MutableHandle.\n\nFix up unused Handle warnings. Add asserts in the HandleScope\ntest.\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: I151f0bdbeeb131a6fc5c44610f345663ebe96c09\n"
    },
    {
      "commit": "878d1889f7273cbfd48035762b67ce634503d55e",
      "tree": "038df927b17a307596c7336f4b9683d3ca019c31",
      "parents": [
        "877bbedc8decb1236ba208311db75a9f29792eab",
        "0273ad1f702d7094b90ebb62c21c50b6a9568ab0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 03 18:53:38 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 03 18:53:38 2016 +0000"
      },
      "message": "Merge \"Remove lock from ClassExt installation procedure.\""
    },
    {
      "commit": "6a3be6d76860532d1a99e54b7d7cf2907680de96",
      "tree": "9422c51510ee89531d91dd6b65db86a08a483340",
      "parents": [
        "6f1b65d3b1f5037620f3d52cb703d20baf6e49dc",
        "12b58b23de974232e991c650405f929f8b0dcc9f"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Nov 03 17:36:23 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 03 17:36:24 2016 +0000"
      },
      "message": "Merge \"Clean up the runtime read barrier and fix fake address dependency.\""
    },
    {
      "commit": "0273ad1f702d7094b90ebb62c21c50b6a9568ab0",
      "tree": "759ae8b9f5bad5ee62e9e04d7dd5b35d307f627f",
      "parents": [
        "21b880ce80f63ddeeab7afaffe0de6934e602551"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 02 11:19:31 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Nov 03 09:17:50 2016 -0700"
      },
      "message": "Remove lock from ClassExt installation procedure.\n\nWe were using a lock on the class to ensure that we avoid races in\nsetting the ext_data_ field of a class object. We replace this with a\nCAS of the field in order to prevent deadlocks.\n\nTest: mma test-art-host\nChange-Id: Ie436ff9526f2c3b38a9af49c5606a7cee6d718f1\n"
    },
    {
      "commit": "0a8485ef5cb81746625fe57acf8adfd8b2bb28c0",
      "tree": "e0d5384ad9b9ffcb549c0332a177d650614a6d3d",
      "parents": [
        "e5eb574f4c5c5afb7deb0c49d7f9eca2062347f5"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Nov 02 18:47:11 2016 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Nov 03 15:13:00 2016 +0000"
      },
      "message": "MethodHandles: Implement MethodHandle.asType.\n\nTracks libcore change 16fa583fb5ee489.\n\nTest: make test-art-host\nBug: 30550796\n\nChange-Id: I2457b563f67a183c4eebf94ddbe74cc55f772ee0\n"
    },
    {
      "commit": "2ab98309c0fc7b3c7451205b2371db5c34b05d49",
      "tree": "9ad33fc4e6b165a28eec6a87a61f145765e9023e",
      "parents": [
        "de582c1d00b23afe239a9ed388e1ea0509b69d7f",
        "2cb856c47b884a08485e2f08e6a3ef6a5bbf773a"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Nov 03 13:04:40 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 03 13:04:40 2016 +0000"
      },
      "message": "Merge \"Address review comments from change 000e1885701c8f.\""
    },
    {
      "commit": "12b58b23de974232e991c650405f929f8b0dcc9f",
      "tree": "bc08011e3b9f4c132fc605dc54d1d5f50c932a29",
      "parents": [
        "b0b2080b4cea8365052d1be973e927f8ee85f609"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Nov 01 11:55:29 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Nov 02 16:31:04 2016 -0700"
      },
      "message": "Clean up the runtime read barrier and fix fake address dependency.\n\n- Rename GetReadBarrierPointer to GetReadBarrierState.\n- Change its return type to uint32_t.\n- Fix the runtime fake address dependency for arm/arm64 using inline\n  asm.\n- Drop ReadBarrier::black_ptr_ and some brooks code.\n\nBug: 12687968\nTest: test-art with CC, Ritz EAAC, libartd boot on N9.\nChange-Id: I595970db825db5be2e98ee1fcbd7696d5501af55\n"
    },
    {
      "commit": "d62515891b15e73bc8eebb55cc09cb4dec4fcf21",
      "tree": "20c485231c93fa83384312e428202d8140dfa09d",
      "parents": [
        "77a0e4541a29c26dba21ed8c1ed1c29ef8d0ce4c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 31 11:12:30 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 02 12:55:10 2016 -0700"
      },
      "message": "Add ClassExt mirror.\n\nWe add the ClassExt type to hold values in Class that are not always\nneeded without making the Class type larger. For the initial change we\nmove the verifyError field into this type. It is expected to grow as\ntime goes on.\n\nTest: mma test-art-host\n\nChange-Id: I1d97df2e1267203841ad47b2effcb66dd76ac12a\n"
    },
    {
      "commit": "2cb856c47b884a08485e2f08e6a3ef6a5bbf773a",
      "tree": "13ba1e1bcab2057670626243c79daef54a20249c",
      "parents": [
        "bcc17bd8bb1e6375e5f39c9ec3df84c7e6b9600e"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Nov 02 12:01:26 2016 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Nov 02 17:08:33 2016 +0000"
      },
      "message": "Address review comments from change 000e1885701c8f.\n\nStyle fixes, and better OOM handling.\n\nbug: 30550796\nTest: make test-art-host\nChange-Id: I2ab58e25bd08daace6609ba45d860994a354280f\n"
    },
    {
      "commit": "9f54896e96a363a5b1ddb2f1b34b58ad4f32ac10",
      "tree": "5ea316acc6fd641f9b9a70a0e7f83deb3fcd3c9b",
      "parents": [
        "dd7c25e5af5b88a1bc58ed7de076037e593b176d",
        "94bee022594187158e6fb2050d5198f973375336"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Nov 02 09:32:17 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 02 09:32:17 2016 +0000"
      },
      "message": "Merge \"MethodHandles: Track libcore change cc4ded.\""
    },
    {
      "commit": "8cefb64725f43977c64f7a45483699dce8b7eb8d",
      "tree": "56900580eb5f8bdc45fca206a1dd1d6d2ff29146",
      "parents": [
        "3a8360f0bcbe1547063678e572cc6fe8a55a0ca0",
        "6b4c28734f138a991b34e3292bfe64e729bd081c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 02 02:54:11 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 02 02:54:11 2016 +0000"
      },
      "message": "Merge \"Fix read barriers in VisitDexCachePairs\""
    }
  ],
  "next": "3a8360f0bcbe1547063678e572cc6fe8a55a0ca0"
}
