)]}'
{
  "log": [
    {
      "commit": "07830e11b718774c474d5f618ecfb29e238e47f7",
      "tree": "d09fee8d2915d5355aa367955610235c64269321",
      "parents": [
        "d1aa2912f3acdd9f47acd98e947818b09c2b349a",
        "ac50aab516a1ab0977fbc961f53f4edd29a891e5"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Dec 06 12:42:21 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 06 12:42:21 2016 +0000"
      },
      "message": "Merge \"Mterp/arm: Add CFI directives.\""
    },
    {
      "commit": "ac50aab516a1ab0977fbc961f53f4edd29a891e5",
      "tree": "329f7ea09c6e8a0ff655e12ac991a1b7ed7ca86d",
      "parents": [
        "6afaa42f50157095a3cdc742afdbc3d58b833eea"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Dec 01 14:03:05 2016 -0800"
      },
      "committer": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Dec 05 16:54:50 2016 +0000"
      },
      "message": "Mterp/arm: Add CFI directives.\n\nIncludes reworking of float_to_long and double_to_long to\nelminate frame (as suggested by vmarko).\n\nTest: m ART_TEST_INTERPRETER\u003dtrue test-art-target (in progress)\nBug: 31456348\nChange-Id: Ic4e985b977f76c4df926559b187d92d969206514\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": "4e1a19b2e2191c27c45cac373ad9db2d61ed7fc9",
      "tree": "4694e18e1ee50029a1506aae85630ee6d030efcd",
      "parents": [
        "903691455319f72219853a46340b59c9b89b7553",
        "112aa1088cf283d57c533be17d79c4b638665651"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 01 14:53:54 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 01 14:53:55 2016 +0000"
      },
      "message": "Merge \"Mterp/arm64: Add CFI directives.\""
    },
    {
      "commit": "112aa1088cf283d57c533be17d79c4b638665651",
      "tree": "7b6f8338d9f574efdacdeaf1144cd538306335c5",
      "parents": [
        "626b839f881f09a1481377a76712d08580c47a16"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 01 11:53:54 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 01 12:43:38 2016 +0000"
      },
      "message": "Mterp/arm64: Add CFI directives.\n\nAlso add two bug 31975598 workarounds to arm64 entrypoints.\n\nTest: m ART_TEST_INTERPRETER\u003dtrue test-art-target\nBug: 31456348\nBug: 31975598\nChange-Id: Ibf64160cf3b3f1ef644ff8f051ab7dc89643acf3\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": "35b6546b0a4fe423ed6f27d8c5b709d5191e99ef",
      "tree": "24c39209f4ae8340791965866ed847d9e65808c5",
      "parents": [
        "d162cfe794c9d4e6d9aa6b5f207db2ebd91a2113",
        "fef0664fa7b480032f17c60f767bcca43a659d8a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Nov 28 09:39:44 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 28 09:39:45 2016 +0000"
      },
      "message": "Merge \"ART: Throw InternalError rather than VirtualMachineError\""
    },
    {
      "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": "fef0664fa7b480032f17c60f767bcca43a659d8a",
      "tree": "5b1f812aef3e300b7bef0bd5ad5a2fa5a8d5c38a",
      "parents": [
        "5ee771615a7e7752abb8b0d53122ca44137c4286"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 16:07:11 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 16:07:11 2016 +0000"
      },
      "message": "ART: Throw InternalError rather than VirtualMachineError\n\nInstantiate InternalError instead of VirtualMachineError as the latter\nis abstract and not instantiable.\n\nChange-Id: I3e90b28a34bef02dd1c200c02cb832aa8dce10b3\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": "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": "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": "39ce7d2907edb978f1ab6cd75884be48ab11cd77",
      "tree": "7d2f0c56bd8a7dd483b5c1ede7047b623d0e35d7",
      "parents": [
        "5302bd999afee6db5b0cfd63e6a49b0fcbf92dd4",
        "3049324f4ef71b5d7a3de49bd77c75f07dbf8f3a"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Nov 11 18:44:44 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 11 18:44:44 2016 +0000"
      },
      "message": "Merge \"Make empty checkpoint work while weak ref access is disabled.\""
    },
    {
      "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": "16593ed1d3914308052f98542bb9bf38ed588d53",
      "tree": "783e1081ec6828731ef88df679193d0c4c2f5919",
      "parents": [
        "af0cac6ed7221303c8bd8a77f6c41f4af8045d60",
        "fdaf0f45510374d3a122fdc85d68793e2431175e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 10 13:58:34 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 10 13:58:34 2016 +0000"
      },
      "message": "Merge \"Change string compression encoding.\""
    },
    {
      "commit": "3049324f4ef71b5d7a3de49bd77c75f07dbf8f3a",
      "tree": "19e2d9d5e8476bf526dd5924ef05b1d727b75f8b",
      "parents": [
        "e7b46e22c7f4f6f503501b3b2ad99113289d142b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Nov 03 13:06:52 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Nov 09 18:14:08 2016 -0800"
      },
      "message": "Make empty checkpoint work while weak ref access is disabled.\n\nFix a potential race on PushOntoMarkStack for CC by running an empty\ncheckpoint (while weak ref access is disabled).\n\nBug: 32508093\nBug: 12687968\nTest: test-art-host with CC/CMS, libartd boot with N9, Ritz EAAC.\nChange-Id: I3749bb525e7734804307ee16262355f3fc730312\n"
    },
    {
      "commit": "751e2886f00eba428f5f9ef478befe712bb4ef4b",
      "tree": "58bbcfe2a231482b52465804b3a9ed0a49be4854",
      "parents": [
        "2a2f713717ace8a026cfe76c91165a5ed0d80182"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Nov 09 11:14:38 2016 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Nov 09 11:14:38 2016 +0000"
      },
      "message": "MethodHandles: Remove obsolete TODO.\n\nIt was addressed by change 0d781e6e17a3f6285736c590001b59d50879f13b.\n\nTest: make build-art-host\nChange-Id: Ifb3f7fa2ffc245e88c77ca41268c376be1611308\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": "0d781e6e17a3f6285736c590001b59d50879f13b",
      "tree": "3a72db36bdd1b521f4f07005aa426515aa78f08a",
      "parents": [
        "66e4d7102760ddc9aa8a3f8463252d69c88b9864"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 04 11:09:53 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Nov 08 14:45:40 2016 +0000"
      },
      "message": "MethodHandles: Constructor support\n\nTest: m test-art-host-run-test-956-methodhandles\nBug: 30550796\n\nChange-Id: Ied466d7e0f0f0b472e3a28909ca712dfdb99e422\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": "0c14d8b10e8528f8143d9ed7f45da812fcd86885",
      "tree": "b22bed0bb98829b8db622f07054e74e8105feff6",
      "parents": [
        "4b2cdf8608c36fbf4304065cd17328cf1e99b49b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Nov 03 12:01:24 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Nov 03 16:40:51 2016 +0000"
      },
      "message": "ART: Additional initialization for MethodHandle accessors.\n\nEnsure classes are initialized before static fields are touched by\nMethodHandle setters and getters.\n\nBug: 30550796\nTest: m test-art-host-run-test-979-invoke-polymorphic-accessors\nChange-Id: Ibac4372607ecbb4e6f7347b89cef6d280632c835\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": "261c0690accc76bedb45e7a5afe649c2de48dcd8",
      "tree": "787f09cca93dd8a0f2d0e0a17b4f4fc6ef505cf7",
      "parents": [
        "c4005c3e71e98edd4a5a91c75dbee3d97b7dcda1",
        "84603bf8535ba8390e0461b9d9c7917939e26312"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 03 10:21:28 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 03 10:21:29 2016 +0000"
      },
      "message": "Merge \"MIPS32: Improve and moderately clean up mterp.\""
    },
    {
      "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": "84603bf8535ba8390e0461b9d9c7917939e26312",
      "tree": "1f7e00083b966f5d3c3d2a8f9802ee6d3350dfdc",
      "parents": [
        "1458e0c09fe0a3b9fa5fd7beb9b6077d1fc46b1d"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Fri Oct 21 19:54:43 2016 -0700"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Tue Nov 01 13:57:36 2016 -0700"
      },
      "message": "MIPS32: Improve and moderately clean up mterp.\n\nImprovements:\n- use seb, seh, ins on R2+\n- use lsa, trunc.l.(s|d), cvt.(s|d).l, jic on R6\n- shorter float/double comparison\n- shorter float/double to int/long conversion\n- fewer memory reads in float/double to int/long conversion\n- remove unnecessary %break\u0027s and branches across breaks\n- use branch delay slots more efficiently on R2\n\nTest: booted MIPS32R2 in QEMU\nTest: test-art-target-run-test-interpreter (MIPS32R2) on CI20\nTest: booted MIPS64 (with 2nd arch MIPS32R6) in QEMU\nTest: test-art-target-run-test-interpreter (MIPS32R6) in QEMU\n\nChange-Id: I9959bec08e20c2423deae31f71b523ad36b4be9a\n"
    },
    {
      "commit": "3e0dce0ff7e28f756ec4b8a08259517e5fb3776d",
      "tree": "f27c7249d4319a174f31b95081f6670b6aa8446e",
      "parents": [
        "b24b0268b0f26af9d66ab0f163690d2b2164902b"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 31 13:55:55 2016 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 31 14:10:53 2016 +0000"
      },
      "message": "MethodHandles: Better detail message for WrongMethodTypeExceptions\n\nWe now include the type of the callee and the callsite.\n\nThis change also fixes a call to ThrowWrongMethodTypeException that\npassed arguments in the wrong order.\n\nTest: make test-art-host\n\nChange-Id: I3ced2e331cb49b616a8374f5a604dafa37330059\n"
    },
    {
      "commit": "6fcc5e8e0fb4298c83286ae5a5bcd0d06180f356",
      "tree": "57be97c726d69537350536413e4154733ed8aafa",
      "parents": [
        "bb04c9b9baa620d2664851f58f693e8aec0c0bc0"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 31 11:50:54 2016 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 31 11:50:54 2016 +0000"
      },
      "message": "Interpreter: fix build.\n\nDue to unfortunate commit timing.\n\nTest: make build-art-host\nChange-Id: Ie523399309b20836ab9f7a8a8224c5cb41bc79fc\n"
    },
    {
      "commit": "bb04c9b9baa620d2664851f58f693e8aec0c0bc0",
      "tree": "7fe7db598e203f73ce0930a62ca23309d2e0daef",
      "parents": [
        "be92d691dd044dfc94a1c8e8793056776d55e826",
        "3d617ac3d87f7fa98793406818e54b057bd701a1"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Oct 31 11:42:13 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 31 11:42:14 2016 +0000"
      },
      "message": "Merge \"Getter/Setter support for invoke-polymorphic of invokeExact().\""
    },
    {
      "commit": "3d617ac3d87f7fa98793406818e54b057bd701a1",
      "tree": "5230ceedfaf2928da0404fd71b64fa7f08439f21",
      "parents": [
        "b5cc1d1321e36d38cd48ae079438a8758b82edc1"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Oct 19 14:00:46 2016 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Oct 31 09:16:19 2016 +0000"
      },
      "message": "Getter/Setter support for invoke-polymorphic of invokeExact().\n\nTest: make test-art-host\nBug: 30550796\n\nChange-Id: I427a6e0afba88b223655ad1ba30843aaf255182b\n"
    },
    {
      "commit": "000e1885701c8fdad07a784e3771881fa9be1d8a",
      "tree": "77d11180fb1d93903fa6c6cd58383d91a82affc5",
      "parents": [
        "b5cc1d1321e36d38cd48ae079438a8758b82edc1"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 24 17:14:25 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Oct 28 14:11:45 2016 +0100"
      },
      "message": "method_handles: Complete support for emulated stack frames.\n\nMost of this change is a refactor that templatizes the code\nthat performs argument conversions. This allows us to copy arguments\nbetween two shadow frames, or an emulated stack frame and a shadow\nframe.\n\nTest: make test-art-host\nBug: 30550796\n\nChange-Id: I23e65735a2dbd28f3c7b7d1ccf9762e77e0cf1f1\n"
    },
    {
      "commit": "68e4f6b7db83241e0081787f9cdb4fa1465db313",
      "tree": "7e3fa108fe2884094a893abc5b587f4d2e11992a",
      "parents": [
        "c369f6b0cd132ab5bba3f127b162f128dd7d2599",
        "269cb43d6df76b52a42c1c7a9436c92bd0dcdad6"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Oct 28 11:49:26 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 28 11:49:26 2016 +0000"
      },
      "message": "Merge \"class_linker: Change allocation of MethodType dex_cache entries.\""
    },
    {
      "commit": "269cb43d6df76b52a42c1c7a9436c92bd0dcdad6",
      "tree": "6fb3dec2763ffdacdf1b31e4ed04c3f0c6cc5f81",
      "parents": [
        "d6435da102851e155acd12adc420e7df3db47903"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Oct 28 10:19:54 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Oct 28 11:48:49 2016 +0000"
      },
      "message": "class_linker: Change allocation of MethodType dex_cache entries.\n\nWe allocate them regardless of the value of the runtime flag to\navoid needing changes to the compiler etc. The memory hit can be\nmitigated in production systems that don\u0027t use MethodHandles by\nsetting kDexCacheMethodTypeCacheSize to 0.\n\nAlso, add DCHECKS in the interpreter to make sure the runtime\nnever executes an invoke-polymorphic instruction when method handles\nare disabled.\n\nTest: make test-art-host\nBug: 30550796\nChange-Id: Id4b2065d99dc13625a51037b7d1a9f0ac5ff6121\n"
    },
    {
      "commit": "c369f6b0cd132ab5bba3f127b162f128dd7d2599",
      "tree": "691b4ae4ca4da162d403d047095a82c18b5607bd",
      "parents": [
        "d6435da102851e155acd12adc420e7df3db47903",
        "a1aa3b1f40e496d6f8b3b305a4f956ddf2e425fc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Oct 28 10:09:33 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 28 10:09:34 2016 +0000"
      },
      "message": "Merge \"Add support for Baker read barriers in UnsafeCASObject intrinsics.\""
    },
    {
      "commit": "a314773a624f9f51391be91bda3472bbdbe0050e",
      "tree": "11cd3182265c3426b00a34acc5c36961b351408f",
      "parents": [
        "e22305b8a093a892a10029e905064776fd2082c5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 26 22:57:02 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 26 23:18:55 2016 -0700"
      },
      "message": "Add handle wrapper for interpreter iget/iput quick\n\nJDWP has thread suspension in instrumentation listeners. The fix is\nto use handle wrappers here. This change fixes JDWP tests.\n\nBug: 31113334\n\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX64\u0027 --debug\n\nChange-Id: Ic7dcb1201ec44946e8002547b2f7f5645b4dea48\n"
    },
    {
      "commit": "e22305b8a093a892a10029e905064776fd2082c5",
      "tree": "45a0dba3b890d376c4cc2570101b46b2c45de1ee",
      "parents": [
        "061148025e3f6d1eb2e3c50a7756ff5fa2071ea2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 26 21:04:58 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 26 21:06:14 2016 -0700"
      },
      "message": "Add handle wrapper for DoCallCommon\n\nPrevents potential moving GC bugs from thread suspension caused\nby GetTypeItem. Fixes build-art.\n\nBug: 31113334\n\nTest: clean-oat-host \u0026\u0026 build-art \u0026\u0026 test-art-host\n\nChange-Id: I9ef18b1d1dab61cc86a7468d535972eba51763f5\n"
    },
    {
      "commit": "ef41db7a3f322a1feb305fdb457410c4cea94d00",
      "tree": "c03152c091ef62ab70f5be0a2fe3a965b189132c",
      "parents": [
        "1458e0c09fe0a3b9fa5fd7beb9b6077d1fc46b1d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 25 15:08:01 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 26 15:25:40 2016 -0700"
      },
      "message": "Move interpreter to ObjPtr\n\nMoved most of interpreter, interpreter_common,\ninterpreter_switch_impl, and some of mterp to ObjPtr.\n\nBug: 31113334\n\nTest: test-art-host ART_TEST_INTERPRETER\u003dtrue\nTest: art/tools/run-libcore-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nChange-Id: I0935d18287e1332205c17c5a018aa167788ab897\n"
    },
    {
      "commit": "a1aa3b1f40e496d6f8b3b305a4f956ddf2e425fc",
      "tree": "efe3dd581dbe9fb33e615d1608f0571ec3984208",
      "parents": [
        "188edb3a3ec36ad5fc42373b1e1bed3a85b4f112"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 26 13:03:38 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 26 13:03:38 2016 +0100"
      },
      "message": "Add support for Baker read barriers in UnsafeCASObject intrinsics.\n\nPrior to doing the compare-and-swap operation, ensure the\nexpected reference stored in the holding object\u0027s field is\nin the to-space by loading it, emitting a read barrier and\nupdating that field with a strong compare-and-set operation\nwith relaxed memory synchronization ordering (if needed).\n\nTest: ART host and target tests and Nexus 5X boot test with Baker read barriers.\nBug: 29516905\nBug: 12687968\nChange-Id: I480f6a9b59547f11d0a04777406b9bfeb905bfd2\n"
    },
    {
      "commit": "c3b7f1a34667386a2e55f59db795082a9e2408fd",
      "tree": "6a454999907c9813d1d3c8e1ae4d3d50545fd4d2",
      "parents": [
        "75dccb7238714358fca9e5e993e4daabe24af085"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Oct 19 11:05:04 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Oct 26 09:53:40 2016 +0100"
      },
      "message": "Interpreter: Add support for method handle transforms [Part 1].\n\nMethod handle transformations are implemented in Java by\nsubclasses of java.lang.invoke.Transformers.Transformer. Transformer\nextends MethodHandle and provides a transformer method defined like so:\n\npublic static class TransformerImpl extends Transformer {\n    @Override\n    public void transform(EmulatedStackFrame emulatedStackFrame) throws Throwable {\n    }\n}\n\nAn EmulatedStackFrame is synthesized by the runtime based on the\ncaller stack frame and arguments specified by the instruction. It will\ncontain all input arguments to the method their associated types. It\nwill also exactly match the method type specified by the target handle\n(i.e, argument coversions are performed by the runtime).\n\nThe transformer method operates on supplied EmulatedStackFrame\nand other instance state to synthesize the transformation. In some\ncases, these transformations will end up calling other signature\npolymorphic methods. In those cases, the transformer can construct\nan EmulatedStackFrame and issue the invoke passing that through as\nthe single input argument. For e.g,\n\n  EmulatedStackFrame sf \u003d EmulatedStackFrame.newInstance();\n  sf.pushArgument(\"foo\", String.class);\n  sf.pushIntArgument(42);\n\n  // The callsite type for this polymorphic invoke is\n  // (Ldalvik/system/EmulatedStackFrame)V;\n  delegate.invoke(sf);\n\nThe runtime will treat such polymorphic invokes specially and unmarshal\nthis EmulatedStackFrame on to the callee stack frame based on the type\nand number of arguments contained in the EmulatedStackFrame and the\ndeclared type of the target method handle.\n\nIn this change :\n\nAdds the basic plumbing for transformer invokes. In particular, the code\nfor marshaling and unmarshaling emulated stack frames isn\u0027t implemented\nand will be added in a follow up method. This plumbing is sufficient to\nimplement a test case of a method handle transform that doesn\u0027t need any\ninput arguments, so is trivially implementable without proper\nEmulatedStackFrame support.\n\nbug: 30550796\nTest: make test-art-host\nChange-Id: Iafa29accaef26d0a33f8b83713bed5d929df547e\n"
    },
    {
      "commit": "da24650d142883ea9962eaedd479547bfe44bbf4",
      "tree": "74e7c0396a10bc8cdefab158414c56d407cf1ea6",
      "parents": [
        "dfe3ce6edaf65a11f35a0ba043fbc17fab7e0bad"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Oct 20 18:39:22 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 24 11:19:41 2016 +0100"
      },
      "message": "method_handles: Minor refactor of PerformArgumentConversions.\n\nSeparate out a method that can perform a single argument conversion.\nUseful for Field setters and also for future use in transforming handles\nwhere the input source will not be a stack frame.\n\nAlso remove unnecessary JValue* argument.\n\nbug: 30550796\nTest: make test-art-host\nChange-Id: I75a63800839dbf1016a2c362169e138c83f34e4c\n"
    },
    {
      "commit": "ec32b91cfa1061b2608838d41e6d7d70fdf681dc",
      "tree": "31d69c22423faf20aa72915f5c26fa7dc3213242",
      "parents": [
        "6c42676b466c4f08cfa6ca43da65bc74f48dc063"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Oct 21 14:47:26 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Oct 21 15:09:06 2016 +0100"
      },
      "message": "Remove read barrier in UnstartedUnsafeCompareAndSwapLong.\n\nart::interpreter::UnstartedRuntime::UnstartedUnsafeCompareAndSwapLong\nmanipulates a long field and does not need a read barrier\n(read barriers are only required when loading an object\nreference from the heap).\n\nTest: ART_USE_READ_BARRIER\u003dtrue make test-art-host\nBug: 12687968\nChange-Id: Ia46590e649a7bb46ca4b3c90bab03fb3a836563d\n"
    },
    {
      "commit": "a550ad9fe83872996eeeb59a3b01f008e326f0ba",
      "tree": "eed799c4db2df3548e666a5694a798f309f98c22",
      "parents": [
        "a8188191477b7b5b01a3c4426c51c48cd55f6678",
        "28d06c1f3d3613bfbe071161331a62446b3f67b1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 21 10:33:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 21 10:33:58 2016 +0000"
      },
      "message": "Merge \"MIPS32R6: Fix floating point compares in mterp.\""
    },
    {
      "commit": "28d06c1f3d3613bfbe071161331a62446b3f67b1",
      "tree": "dceb4932a482d58bec4247b816742a8ab8046abe",
      "parents": [
        "c6c5f6ce1c9cc44f859bbbc447478e4934be0fee"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Thu Oct 20 21:50:05 2016 -0700"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Thu Oct 20 22:19:18 2016 -0700"
      },
      "message": "MIPS32R6: Fix floating point compares in mterp.\n\nThis fixes failures in the following tests:\n003-omnibus-opcodes\n082-inline-execute\n083-compiler-regressions\n107-int-math2\n422-type-conversion\n570-checker-select\n\nTest: \u0027run-test --interpreter \u003ctests above\u003e\u0027\n      in QEMU for MIPS64R6/MIPS32R6\n\nChange-Id: I11b4f1df7c212932c92d41fbc98c00465d03e850\n"
    },
    {
      "commit": "9bdaeebe6aca491b11a44999f571f0122ad87499",
      "tree": "23ae0638ba1f82fa2b9e01a03307e2c596b29dce",
      "parents": [
        "d08e39b6f02368aaa668b5aae6b6077b3eb44d9c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Oct 20 10:57:45 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Oct 20 11:14:53 2016 +0100"
      },
      "message": "Revert \"Revert \"Interpreter: Add support for direct handle invokes on methods.\"\"\n\nThis reverts commit cfa61ad52077df66a448b84c360b12bc6f0e3f51.\n\nTest flakiness in 956-methodhandles is fixed by\nd08e39b6f02368aaa668b5aae6b6077b3eb44d9c.\n\nTest: make test-art-host\n\nChange-Id: I56e02e9a5bbc2b992cf746a92fd95ea77d32456c\n"
    },
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "bc5a795c0d486c84913d987cad5846ded840cea6",
      "tree": "90db29a97a21fa15f4cbc5ffbc1f6dd191add49c",
      "parents": [
        "38a4223fcc0493553d9ad324a1dc145869eb663a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 17 15:46:31 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 17 16:16:50 2016 -0700"
      },
      "message": "Move art/native to ObjPtr\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I67eb89cf042c762c6dcd5eb8b008b9a28e9b3319\n"
    },
    {
      "commit": "5d3f73aef1b778d81ba101ece41935adee259cf2",
      "tree": "fec0c2fdbb88df0a366e29b6470d1274aa6e2ec1",
      "parents": [
        "cfdff144f154df876987fefb340058a975c43381"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 14 14:28:47 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 14 14:38:43 2016 -0700"
      },
      "message": "Move reference processor and mirror::Reference to ObjPtr\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I2c7c3dfd88ebf12a0de271436f8a7781f997e061\n"
    },
    {
      "commit": "cfdff144f154df876987fefb340058a975c43381",
      "tree": "b411423c3a252315fba531d80d4ddbb0780c80c1",
      "parents": [
        "4aed412037e6e7bad2cf589645449df960b88200",
        "1a5337fff2cc6cb9d563c8b32aca75f485d23373"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 14 16:54:05 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 14 16:54:05 2016 +0000"
      },
      "message": "Merge \"Move mirror::ObjectArray to ObjPtr\""
    },
    {
      "commit": "a3031162de5ddb6842e352bef6cf97c1967cd9f4",
      "tree": "221ecb53b71364be6fbe4236970f268c74f71969",
      "parents": [
        "a497095b67c4ba2969d0b2a13f6959125c89d2bc",
        "208f857edf8361ddc4e85d82699935998e7179ac"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 14 10:19:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 14 10:19:58 2016 +0000"
      },
      "message": "Merge \"interpreter: support for non-exact invokes.\""
    },
    {
      "commit": "208f857edf8361ddc4e85d82699935998e7179ac",
      "tree": "5a4390b34132b6b77fac45a81f31a8191235fdfe",
      "parents": [
        "ac4804fb365fc05552419162cbd8a6b8c77fec4f"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 03 12:46:58 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Oct 14 09:39:33 2016 +0100"
      },
      "message": "interpreter: support for non-exact invokes.\n\nPerforms primitive argument conversions as well as boxing and unboxing\noperations. Support for return value conversions will be added in a\nfollow up change.\n\nTest: make test-art-host\n\nChange-Id: I2e3348ff64a5826e477f87c12a7d5c390eb3a653\n"
    },
    {
      "commit": "1a5337fff2cc6cb9d563c8b32aca75f485d23373",
      "tree": "03616e90a91c5c4c1bd7ff03c3d193c3b24bf0db",
      "parents": [
        "c8b722b3cebff245d614e95d1849de45ef7bdf06"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 13:48:23 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 17:37:56 2016 -0700"
      },
      "message": "Move mirror::ObjectArray to ObjPtr\n\nAlso reduce calls to ObjPtr::Ptr.\n\nBug: 31113334\n\nTest: test-art-host -j32\n\nChange-Id: I73e1b356972bb079b66332f00f7f07451601044e\n"
    },
    {
      "commit": "28bd2e4f151267b34b8e1eb19c489d8d547bbf5c",
      "tree": "d99ae3fe74ea63b83091898d830d3efe68cd479d",
      "parents": [
        "6e5fa09510c7280168e040382d27dd8b55760d9a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 13:54:57 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 10:59:28 2016 -0700"
      },
      "message": "Move mirror::Class to use ObjPtr\n\nLeave the return types as non ObjPtr for now. Fixed moving GC bugs\nin tests.\n\nTest: test-art-host\n\nBug: 31113334\n\nChange-Id: I5da1b5ac55dfbc5cc97a64be2c870ba9f512d9b0\n"
    },
    {
      "commit": "8a2871418e84595029058581104700dd43c313e1",
      "tree": "87572ad71b73f5c5aebb9f57e3390a4a9f085d22",
      "parents": [
        "0d7398fd5407938aba75c50bd323af27e83ccb9f"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Oct 07 12:56:32 2016 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Oct 07 13:24:20 2016 -0700"
      },
      "message": "mterp: Placeholder support for invoke-polymorphic\n\nForce the mterp assembly interpreters to fall back to the\nreference switch interpreter for invoke-polymorphic and\ninvoke-polymorphic-range while those new opcodes are under\ndevelopment.\n\nTest: test-art-host\n\nChange-Id: I6167432164bd869c91d0804521d5edc9549f622e\n"
    },
    {
      "commit": "c4f3925490a73da8dc74884a1deb965d4ecaf14e",
      "tree": "7fe566827f8ab903af1acb5697c86a6efe3187b3",
      "parents": [
        "18f7de841fee3ca6f0c04e7caa57c3ce76b36231"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 18:32:08 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 06 13:55:58 2016 -0700"
      },
      "message": "Move remaining jobject related functions to use ObjPtr\n\nAlso added ObjPtr::DownCast.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I59c253211dc435579ffdfd49f856861ab13d262c\n"
    },
    {
      "commit": "54aaba2420c4ee7c6580293b092b7f38f3b9438c",
      "tree": "888adc9dbd96978f9a7f06d659b871b2a89a109a",
      "parents": [
        "6e9854e4df95de62e9d7bea4be770603077faf22",
        "a10ae7865a140d45fc01e934a44ba5c8781b4a52"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Oct 06 17:19:17 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 06 17:19:18 2016 +0000"
      },
      "message": "Merge \"Temporarily add debug logging for b/31357497\""
    },
    {
      "commit": "a10ae7865a140d45fc01e934a44ba5c8781b4a52",
      "tree": "fd5408e5c9316dd199083361ab305a91f221cade",
      "parents": [
        "78c6fefdb9008cb6dc9f0014d4616b457009c6c8"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Oct 05 18:13:23 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Oct 05 18:16:21 2016 -0700"
      },
      "message": "Temporarily add debug logging for b/31357497\n\nNote the check can\u0027t be a DCHECK because 103-string-append runs with the\nnon-debug build (libart.so).\n\nBug: 31357497\nBug: 12687968\nTest: run-test 103-string-append on N9.\nChange-Id: I30ebe9111fa6c42796dcafa182ae066214805173\n"
    },
    {
      "commit": "8778c521de4f686118549ef7b20ae497e53b9e93",
      "tree": "18e82a5860cf7c7d388f314615ba66e9a3ac4521",
      "parents": [
        "2f61867045ffbd0c38a4ecec5f59632004f7efff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 19:06:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 13:02:53 2016 -0700"
      },
      "message": "Change indirect reference table to use ObjPtr\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I340fdf430897ebd790ea4e35f94bcee776e98445\n"
    },
    {
      "commit": "8ee0b085bed13105c2ecc9caeb025eb758bcb27d",
      "tree": "2e53573d42f50baa32fa63a23734ff4ed662023d",
      "parents": [
        "d3a9ce9d30a59587413310e66ea51c8f7adb0a1d",
        "9823e788ed3368ecf826c44bfa16ccabfcbe32f8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 05 12:19:30 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 05 12:19:30 2016 +0000"
      },
      "message": "Merge \"Basic implementation of invoke / invoke-polymorphic.\""
    },
    {
      "commit": "9823e788ed3368ecf826c44bfa16ccabfcbe32f8",
      "tree": "59dee92dfd7518a98905c8313bdcb0a2ca2946cb",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 03 12:46:58 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Oct 05 10:34:59 2016 +0100"
      },
      "message": "Basic implementation of invoke / invoke-polymorphic.\n\nBasic switch interpreter support for invoke-polymorphic. This change\nallows for virtual/interface and static invokes on method handles.\n\nSupport for direct invokes (including constructors) and field\ngetters and setters will be added in follow up changes.\n\nBug: 30550796\nTest: make test-art-host\n\nChange-Id: Ieb3a991d974060d930d56467908d5c7c11d0e38e\n"
    },
    {
      "commit": "1cc62e4ea24828fdb3f3da0b8603f0b107d09a04",
      "tree": "718e322f3d05ac095770d4dc2a68b824bf3974a7",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 18:01:28 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 10:46:16 2016 -0700"
      },
      "message": "Rename ObjPtr::Decode to ObjPtr::Ptr\n\nDone to prevent ambiguity with ScopedObjectAccess::Decode.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I07a2497cc9cf66386311798933547471987fc316\n"
    },
    {
      "commit": "370423d7b2ed357f79b704ff369008cef3ac4772",
      "tree": "9ff5fb25306941787b83c1da1b6fcd65ed4ed5f4",
      "parents": [
        "8c2983be6c276f5d5f9cf606f3a06c47f41da6d1"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 03 16:51:22 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Oct 04 08:35:00 2016 +0000"
      },
      "message": "interpreter: Remove unnecessary template arg from DoCallCommon.\n\nThe function was always called with a fixed size array so there\u0027s\nno real advantage in templatizing it this way.\n\nTest: make build-art-host\n\nChange-Id: I782e113225f1c97877f2bcb5afe8df9ae8efd26e\n"
    },
    {
      "commit": "0715c0b7c047053c54212ae247868675710fb29c",
      "tree": "c7557393f7f8cef7971d431a1af05e4cba07f5d1",
      "parents": [
        "5075b0e5e2cb942d3cb929a9fe7e1abe66beb562"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 22:49:46 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 22:51:00 2016 -0700"
      },
      "message": "Add handle wrapper for interpreter field get/set\n\nThe listeners have thread suspension for jdwp tests.\n\nBug: 31113334\n\nTest: tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --no-jit --debug\n\nChange-Id: I08f17432cc0c79ee9a0163eb88d4d6355f6851ca\n"
    },
    {
      "commit": "3398c7874e002beaa6c2b2fadf183e7d1ddad23a",
      "tree": "7db754b5b0c3a6c68bc1f91d7cb2477f534d2ad3",
      "parents": [
        "462e21cc8d28a4d48342cf0f634bd1ecc63647d7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 30 10:27:43 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 14:06:27 2016 -0700"
      },
      "message": "Move ArtField to ObjPtr\n\nAdded EXPECT_OBJ_PTR_EQ and variants to gtests.\n\nFixed moving GC bugs in:\nClassLinker::CreatePathClassLoader\nClassLinkerTest: StaticFields\n\nObjPtr Decode call sites: 186 -\u003e 181.\n\nSome tests fail due to ResolvedFieldAccessTest, will fix in follow\nup CL.\n\nBug: 31113334\n\nTest: test-art-host CC baker\n\nChange-Id: I8b266ad00f3c20c8cbe7cfdf280d175083df0b88\n"
    },
    {
      "commit": "b4cf427734c6839b46d0d6037e3189a5e8aa1bdb",
      "tree": "b5f5d310edebdb8563c32af8e9b7f9e02c2e8268",
      "parents": [
        "74a69eda053486e2d563f888a689586c5cfa7217",
        "c38a6f8e8d18b85113d1a585235e997779583c80"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 30 08:52:28 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 30 08:52:28 2016 +0000"
      },
      "message": "Merge \"dex_cache: rewrite StringDexCachePair as DexCachePair\u003cT\u003e\""
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "c38a6f8e8d18b85113d1a585235e997779583c80",
      "tree": "ce04e813a10e1edfdd0ad1bad520fc5f3f8b06f2",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Sep 29 17:07:20 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Sep 29 18:31:22 2016 +0100"
      },
      "message": "dex_cache: rewrite StringDexCachePair as DexCachePair\u003cT\u003e\n\n.. with [T \u003d mirror::String]. This is in preparation for introducing\na dex cache array for MethodTypes, which will be treated the same way.\n\nTest: make test-art-host\nbug: 30550796\nChange-Id: Ief4455b4c6e4c9dd897f2c40b14b843a57b1dc8e\n"
    },
    {
      "commit": "adc4e8297c9659125ae2a3d1a4b089312c2e2dd8",
      "tree": "7b28b33461294ec46df64af8bdd7a648c4f5de0d",
      "parents": [
        "fc916a6c9a2c0d3b63005cf7ae26cbf08bd89c7d",
        "da079bba8403733cac9bb7415b038ffd77e62403"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 27 09:31:33 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 27 09:31:33 2016 +0000"
      },
      "message": "Merge \"Cleanup String.\u003cinit\u003e handling.\""
    },
    {
      "commit": "da079bba8403733cac9bb7415b038ffd77e62403",
      "tree": "3bfed6ea39483bda20c0059763c30aee2e6e5791",
      "parents": [
        "a1d66b9050aeecd7e698c51155f0dbc0198a6822"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 26 17:56:07 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 27 10:30:34 2016 +0100"
      },
      "message": "Cleanup String.\u003cinit\u003e handling.\n\nMove everything to one place (currently well_known_classes.cc, but\nno strong preference) and define a macro to easily handle the list\nof affected methods.\n\ntest: m test-art-host\ntest: m test-art-target\nChange-Id: Ib8372d130d5458516a1f1ae31014afc76037fc34\n"
    },
    {
      "commit": "3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0",
      "tree": "f38d8d8aae51f53e7ee6b474f47597b784fc2316",
      "parents": [
        "0cfe19af3b7395658210ea6044a65c9811962a7a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 13 10:47:28 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 10:59:22 2016 -0700"
      },
      "message": "ART: Use libbase logging\n\nMove most of our logging infrastructure over to system/core/base.\nRetain VLOG.\n\nUsing unified Android infrastructure has two main advantages. First,\nit reduces the complexity/maintenance burden in ART. Second, it\nallows to detach logging for the cases where we do not want or need\na runtime, e.g., dexdump, the disassembler, etc. As a part of the\nlatter, libbase is also supported for all hosts (including Windows).\n\nFrom a developer viewpoint, there are minor behavior changes for the\nLOG statements (see above), but otherwise usage is the same. Explicit\nseverity enum items are in the android::base namespace now.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: I5abcb2f45f5b03d49951874c48544f72a283a91b\n"
    },
    {
      "commit": "26ead4975e1752e8ae2f5ed6fda73876c4f9ff59",
      "tree": "2ce1b047f54bfb4287483de8eaf79cd12f6058b6",
      "parents": [
        "79f6d706185714dccf80aca20d9f3261337473ae",
        "268764da8022cafa5661c5b514eaa343c5257e57"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 14 16:55:56 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 14 16:55:56 2016 +0000"
      },
      "message": "Merge \"Make ScopedAssertNoThreadSuspension no overhead for non-debug\""
    },
    {
      "commit": "9323e6e44060545d6c4f925139572868f65b7fe3",
      "tree": "65f3f380605d75f34d49aec49fca494bec26ef5b",
      "parents": [
        "58735fbfbb2da0c0a19b3239da07c2353c40767d"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Sep 13 08:58:35 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Sep 14 08:01:39 2016 -0700"
      },
      "message": "Separate annotations from dexfile reading.\n\nBug: 22322814\nChange-Id: I867d66da407dd80394a10d19903ebbc1ec3986ff\nTest: test-art\n"
    },
    {
      "commit": "268764da8022cafa5661c5b514eaa343c5257e57",
      "tree": "7c4b46847a6dcfac7a1492edd79b434fb1a0d6ea",
      "parents": [
        "f9decf915f6fa5b33fceba7c10c119e4cad481e5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 13 12:09:38 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 13 15:18:29 2016 -0700"
      },
      "message": "Make ScopedAssertNoThreadSuspension no overhead for non-debug\n\nPreviously it required Thread::Current() which may not be free.\nThe plan is to add a lot more ScopedAssertNoThreadSuspension in\nthe codebase.\n\nAlso cleaned up callers.\n\nBug: 31458474\nChange-Id: I5a1621a5435476504d22266cc01a9bf26aab7568\n"
    },
    {
      "commit": "f61df9b450f8734b84584671ad22fa4f29d386e4",
      "tree": "a97f593b18e8f03fb01c0bf23703cf0fc7638f5d",
      "parents": [
        "9d185da3bef8caf015d3dbf4ad79c520af7ce3b1"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 07 07:12:29 2016 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 07 07:42:27 2016 -0700"
      },
      "message": "ART: Remove computed-goto interpreter\n\nART currently has 3 interpreters: a baseline switch-statement based\ninterpreter, a C++ computed goto interpreter and a fast assembly\ninterpreter (mterp).\n\nThe C++ computed goto interpreter was intended to get some of the\nbenefits of the old Dalvik mterp interpreter - which it did.  However,\nwe now have the faster assembly interpreter, so it is no longer\nneeded.\n\nTest: m test-art-host\nTest: m ART_TEST_INTERPRETER\u003dtrue test-art-host\nChange-Id: I0e8f139ab6bc48d0568951af1f83e2b1c00835f8\n"
    },
    {
      "commit": "89171e45a18fdc88f166fdcb296a91aa84f2b5e8",
      "tree": "a392b3f33de9273dcd96899b7bda9e577b401a5c",
      "parents": [
        "433b738f89df79ca1350799f3a1c475686d1ea5a",
        "4b7870653d6c6ee779ccaf21b3cb28b3d7a4863d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 01 12:40:03 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 01 12:40:03 2016 +0000"
      },
      "message": "Merge \"[MIPS] Fix a mips64 mterp bug.\""
    },
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "4b7870653d6c6ee779ccaf21b3cb28b3d7a4863d",
      "tree": "c19a2176dc26690c872ef853e1be3942e6f34638",
      "parents": [
        "de35bb7ecedb5341e04ca2492c8080d6c1f27de4"
      ],
      "author": {
        "name": "Douglas Leung",
        "email": "douglas.leung@imgtec.com",
        "time": "Fri Aug 26 15:25:31 2016 -0700"
      },
      "committer": {
        "name": "Douglas Leung",
        "email": "douglas.leung@imgtec.com",
        "time": "Mon Aug 29 15:21:13 2016 -0700"
      },
      "message": "[MIPS] Fix a mips64 mterp bug.\n\nThe bug was causing adb install to get a java exception for Mips64.\n\nChange-Id: Ia1b9f11a5896e4018db80fc68381adfedf9e7c00\n"
    },
    {
      "commit": "8aea8dbca646074cc02d839be28ba3fd9863b0b8",
      "tree": "3cffbb3f1913302afeee21d6c45577073fb774e9",
      "parents": [
        "7c95b4e22897a6f14ef79ec6e547e2eed686814a",
        "9231f4e55d6e79e37880071e222c28141bf65f49"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 24 17:09:42 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 24 17:09:43 2016 +0000"
      },
      "message": "Merge \"ART: Remove vestiges of GCC\""
    },
    {
      "commit": "9231f4e55d6e79e37880071e222c28141bf65f49",
      "tree": "929c75752d7dd5d667b5f2cdaa044ad83d0522eb",
      "parents": [
        "e99331f7a430b0b72142dd0b8b0689421489dcf6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 23 17:35:19 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 23 18:20:12 2016 -0700"
      },
      "message": "ART: Remove vestiges of GCC\n\nWe no longer support GCC.\n\nChange-Id: I869ac6e5dcb166747e45236a0d313c7672bbf2de\nTest: m test-art-host\n"
    },
    {
      "commit": "51a0c4fe2dabeb21525d377047b68031b6fe0186",
      "tree": "83a02e40cd106e6decbf100870b2e931232820db",
      "parents": [
        "e99331f7a430b0b72142dd0b8b0689421489dcf6",
        "3aaa37bba53d6df0265793de48b4b0b57327e57a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 24 00:50:38 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 24 00:50:39 2016 +0000"
      },
      "message": "Merge \"creating workflow for mirror::String compression\""
    },
    {
      "commit": "3aaa37bba53d6df0265793de48b4b0b57327e57a",
      "tree": "ce795803f0f10003eb3d96d9348da620937675b3",
      "parents": [
        "792c98bb773c8c2390f9cbf774f85be9d9a75332"
      ],
      "author": {
        "name": "jessicahandojo",
        "email": "jessicahandojo@google.com",
        "time": "Fri Jul 29 14:46:37 2016 -0700"
      },
      "committer": {
        "name": "jessicahandojo",
        "email": "jessicahandojo@google.com",
        "time": "Tue Aug 23 15:12:26 2016 -0700"
      },
      "message": "creating workflow for mirror::String compression\n\nAll-ASCII String characters are stored in 8-bit blocks\ninstead of 16-bit. The compression has not taken place, but all\nworkflow are in the code already (changing kUseStringCompression in\nstring.h file to TRUE will enable the feature)\n\nNotes: Feature works on interpreter only without optimizing\n\nTest art: m ART_TEST_INTERPRETER\u003dtrue ART_TEST_OPTIMIZING\u003dfalse\n          test-art-host\n\nAlso tested with String tests from libcore/:\n1. libcore.java.lang.StringTest\n2. libcore.java.lang.StringBufferTest\n3. libcore.java.lang.StringBuilderTest\n4. libcore.java.lang.OldStringTest\n5. libcore.java.lang.OldStringBufferTest\n\nMemory improvement is 33% (from 6.03% to 4.03%, total String memory\nfrom all apps per total memory of all apps) measured on Angler\nwith Hprof tools\n\nBug: 31040547\nChange-Id: I9cc92c265ebf1305fc06b5fc33efd83797660cce\n"
    },
    {
      "commit": "5e26eb1dc8ea89b2ebf4ce4b40cbe18542758fbd",
      "tree": "ac8eaad8db47f667e3290e63f52f6e1c06f9fbad",
      "parents": [
        "cf834d00de838272cf28f2382ffc26fe716aae5c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 22 17:54:17 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 22 21:30:40 2016 -0700"
      },
      "message": "ART: Clean up interpreter includes\n\nMove goto-interpreter special-cased Clang declarations to goto\nimplementation file. Separate out declarations into their own\nheaders. Tag the declarations with thread safety annotations.\n\nMinor compile-time impact when running with -j1.\n\nChange-Id: I03664d4e7dc6361b2510a8c9beb693d23a657c9d\nTest: m test-art-host\nTest: m ART_TEST_INTERPRETER\u003dtrue test-art-host\n"
    },
    {
      "commit": "bf44e0e5281de91f2e38a9378b94ef8c50ad9b23",
      "tree": "bb6e65a3434806dc58f286ee75ad3b78ba9d6c36",
      "parents": [
        "d99565069c64fefc069005286de04599dc2619b8"
      ],
      "author": {
        "name": "Christina Wadsworth",
        "email": "cwadsworth@google.com",
        "time": "Thu Aug 18 10:37:42 2016 -0700"
      },
      "committer": {
        "name": "Christina Wadsworth",
        "email": "cwadsworth@google.com",
        "time": "Thu Aug 18 16:18:36 2016 -0700"
      },
      "message": "ART: Implement a fixed size string dex cache\n\nPreviously, the string dex cache was dex_file-\u003eNumStringIds() size, and\n@ruhler found that only ~1% of that cache was ever getting filled. Since\nmany of these string dex caches were previously 100,000+ indices in\nlength, we\u0027re wasting a few hundred KB per app by storing null pointers.\nThe intent of this project was to reduce the space the string dex cache\nis using, while not regressing on time that much. This is the first of a\nfew CLs, which implements the new fixed size array and disables the\ncompiled code so it always goes slow path. In four other CLs, I\nimplemented a \"medium path\" that regresses from the previous \"fast path\"\nonly a bit in assembly in the entrypoints. @vmarko will introduce new\ncompiled code in the future so that we ultimately won\u0027t be regressing on\ntime at all. Overall, space savings have been confirmed as on the order\nof 100 KB per application.\n\nA 4-5% slow down in art-opt on Golem, and no noticeable slow down in the\ninterpreter. The opt slow down should be diminished once the new\ncompiled code is introduced.\n\nTest: m test-art-host\n\nBug: 20323084\n\nChange-Id: Ic654a1fb9c1ae127dde59290bf36a23edb55ca8e\n"
    },
    {
      "commit": "8ec3bd2b31ccbc9027b8e9b1949dd1804bb6d30f",
      "tree": "6cc457a060c7faade49229010bfe3119e55b254d",
      "parents": [
        "c218427ab96e521e0c4e9a3ffeb87e6c57eea0a5"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 03 12:46:23 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 10 14:00:16 2016 +0100"
      },
      "message": "Instruction: Add new formats 45cc and 4rcc.\n\nThese are new 4 byte formats with the following properties.\n\n- The first three (16 bit) words of these instructions have the same\n  format as 35c and 3rc respectively.\n- The fourth 16 bit word encodes an additional constant index reference.\n\nThis change includes placeholder opcodes for invoke-polymorphic and\ninvoke-polymorphic/range which will be the first dex instructions that\nuse this new format. In addition to a method_idx that gives the invoked\nmethod, these instructions also provide a proto_idx which gives the\n(static) type signature of the call site.\n\nThe only reason these are included in this change is because we need\nan instruction with a given format to write a unit_test using the Instruction\nAPI.\n\nbug: 30550796\ntest: make test-art-host\n\nChange-Id: I02612ddee47169757175a8079d82f811f6545945\n"
    },
    {
      "commit": "c218427ab96e521e0c4e9a3ffeb87e6c57eea0a5",
      "tree": "af38070b0fad716033c005a673a4ae0f7ccd27cc",
      "parents": [
        "45b17187699a938af2cf67fe11848951f2501087",
        "14832efeb92334c562ebedef34e920d30e3cee69"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 10 10:20:49 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 10 10:20:50 2016 +0000"
      },
      "message": "Merge \"Revert experimental lambda feature.\""
    },
    {
      "commit": "14832efeb92334c562ebedef34e920d30e3cee69",
      "tree": "57d10c24966a46ae1c01861ee579ac6000326c45",
      "parents": [
        "c984725d0035e1925371757c38fed339b409e525"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Aug 05 11:44:32 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Aug 09 13:47:49 2016 +0100"
      },
      "message": "Revert experimental lambda feature.\n\nThis is a revert of the following changes :\n\n30c475a2046951a81769c2db0b2dad66cd71e189.\nlambda: Minor capture-variable/liberate-variable clean-up after post-merge reviews.\n\n6918bf13eb855b3aa8ccdddda2d27ae8c60cec56.\nlambda: Experimental support for capture-variable and liberate-variable\n\nfc1ccd740b7c8e96dfac675cfc580122cd1b40a6.\nlambda: Infrastructure to support capture/liberate-variable dex opcodes\n\ne2facc5b18cd756a8b5500fb3d90da69c9ee0fb7.\nruntime: Add lambda box/unbox object equality\n\n2ee54e249ad21c74f29a161e248bebe7d22fddf1.\nruntime: Partially implement box-lambda and unbox-lambda experimental opcodes\n\n158f35c98e2ec0d40d2c032b8cdce5fb60944a7f.\ninterpreter: Add experimental lambda opcodes for invoke/create-lambda\n\na3bb72036f5454e410467f7151dc89f725ae1151.\nAdded format 25x to dexdump(2).\n\nPlus surrounding cleanups.\n\nTest: make test-art\nChange-Id: Ic6f999ad17385ef933f763641049cf721510b202\n"
    },
    {
      "commit": "fbcc83049fb2574830328f778544e0455ca2f66f",
      "tree": "fb09240e9fe843eb06c2c52429c3335ac39d6e4c",
      "parents": [
        "51616fb233df2760fd6002a02dce692f24b93fb6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 08 12:08:06 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 08 13:04:53 2016 +0100"
      },
      "message": "ARM/ARM64: Improve Mterp */lit8 assembly.\n\nEmbed shifts in operations when possible. Use UBFX for shift\ndistance extraction - for ARM this saves an instruction, for\nARM64 this just improves readability as the reader doesn\u0027t\nneed to know that the higher bits are unused by shifts.\n\nTest: Run ART test suite on Nexus 9.\nChange-Id: I5666f3eaded618d3f6cb754c4a431fd9548e746d\n"
    },
    {
      "commit": "bd48b3490a35480ad54586a4d8c7529e0a9a8c84",
      "tree": "22f88d55fda3f363590bfc04d225840e7f4480fe",
      "parents": [
        "ba65cc4a71273904294245cb37ce70e5bce797e3"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Aug 01 17:32:37 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Aug 02 08:09:19 2016 +0000"
      },
      "message": "dex_instruction: remove unused parameter from instruction definitions.\n\nbug: 30550796\ntest: make test-art-host\nChange-Id: Ib80a2d5c548578cefb0552b597e1d50b813ce8ef\n"
    },
    {
      "commit": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    },
    {
      "commit": "c416502aa801213e3e4f3d863f85f0cdb01b5bd1",
      "tree": "fc55a38361a96f5827cc862d3202c2fd196d08eb",
      "parents": [
        "f9136b631a42531353544791fb79cc9e4c0b321b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 28 14:04:18 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 28 14:09:30 2016 +0100"
      },
      "message": "ARM64: Add comment to mterp int-to-long.\n\nTest: Build for Nexus 9.\nChange-Id: I649e71fc1cdc2a4a103159bf72ceeb005231e66f\n"
    },
    {
      "commit": "20421b91d98b14a630fe49911afdb7512d19965f",
      "tree": "94ef42dc8ed79d61d20e3a28c4bc8a777df1f8dd",
      "parents": [
        "93afc5f20a23ece78d6d6e506ed75775b8ef2113"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 26 16:38:11 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 27 19:21:19 2016 +0100"
      },
      "message": "ARM64: More mterp improvements.\n\nSeveral simple improvements:\n  - use EOR for neg-float and neg-double,\n  - use SBFX instead of LSL+ASR for const/4,\n  - handle long-to-int as move,\n  - use LDRSW for int-to-long,\n  - remove bogus CMP from iput-quick,\n  - use indexed load/store for iget/iput-wide-quick,\n  - use CBZ, CBNZ, TBZ, TBNZ for if-eqz, if-nez, if-gez and\n    if-ltz, respectively. (The short range of TBZ/TBNZ\n    requires emitting the footer before alternate stubs.)\n\nTest: Run ART test suite on Nexus 9 with the interpreter.\nChange-Id: I2e65a7cee3d3e2128b870d98cf6157c21f57d607\n"
    },
    {
      "commit": "e01e3644205c3644546889237c20185391a0092e",
      "tree": "413fcf279b415a305605a601297e3856f13a2948",
      "parents": [
        "de4cf16f467b531373560ca6eb785f0f36606aae"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 25 13:06:04 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 25 13:09:41 2016 -0700"
      },
      "message": "ART: Add pointer-size template to some reflection functions\n\nThe unstarted runtime may run code for a different pointer size,\neven when no transaction is active (e.g., during startup). To\nretain performance when the runtime is up and executing under\nnormal conditions, add a template parameter and use sizeof(void*)\nin places where it is adequate.\n\nFor maintainability, it is necessary to drop the default for\nthe transaction template parameter. Implicit conversions from\nbool to size_t may lead to incorrect code and hard to diagnose\nproblems. So instead ensure that all callers must give all\ntemplate parameter values.\n\nTest: m test-art-host\nChange-Id: I3076883422c8553ede4de5642409c5684a5a9aa8\n"
    },
    {
      "commit": "d9ad357ca598996f7c44727bf6772b74e50e74e9",
      "tree": "8c123c8ae6341357f64e7f423f23fae9027a5cb6",
      "parents": [
        "41c7e2e6ac0a59da2f3e066e20630b295fbe4661"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 22 10:52:24 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 22 13:36:21 2016 +0100"
      },
      "message": "ARM64/x86-64: Fix mterp fill-array-data-payload pointer calculation.\n\nFix the pointer calculation to sign-extend the offset\ninstead of zero-extending it, just like we do for the switch\ntable pointer calculation. Clean up comments for the switch.\n\nTest: Additional test in 412-new-array.\nChange-Id: Ibb1d2d3fcb109f59280aca08de21e42edc4ce66b\n"
    },
    {
      "commit": "fb6db3f575c0079f0f5444d16945cb9275c02f6b",
      "tree": "1fe423cd3d340763532735ab3a23f86ee610ab80",
      "parents": [
        "65ad9b3516c4f4bc4e7abf5c6e065a675cf024d8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 21 12:59:46 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 21 15:55:24 2016 +0100"
      },
      "message": "ARM64: Improve mterp cmpl/cmpg.\n\nUse CSET+CNEG instead of MOV+CNEG+CSEL. Prefer the\nCNEG/CSET alias over the CSNEG/CSINC for readability.\n\nTest: Run ART test suite on Nexus 9 with the interpreter.\nChange-Id: I5c4fb0cf2c053904253e8e82f3e7e05c774b0583\n"
    },
    {
      "commit": "e6220220cdd20d81da336528d9b1642edf65655a",
      "tree": "d48c146e42e3ee0967a1ee3744df26b2591096bb",
      "parents": [
        "5733e98d4889b7a94e4e647fa4033239038e07e8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 20 14:25:30 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 20 19:05:07 2016 +0100"
      },
      "message": "ARM64: Improve Mterp.\n\nSeveral straight-forward optimizations:\n  - use ubfx instead of SHR+AND,\n  - do not mask shifting distance,\n  - use 64-bit LDRSH to avoid subsequent sign extension,\n  - use CBNZ instead of CMP+BNE for null checks,\n  - style: use SXTW alias instead of explicit SBFM.\n\nTest: Run ART test suite on Nexus 9 with the interpreter.\nChange-Id: Ibcc11ce7f455432ecb789f727da21f269f8370f0\n"
    },
    {
      "commit": "5733e98d4889b7a94e4e647fa4033239038e07e8",
      "tree": "6e7790cc1c4030fe9d7526097b9847fa6fcd91b7",
      "parents": [
        "360b4b0137ce5f0bb771e2ddbfd4735cae932565"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 20 17:52:51 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 20 18:19:45 2016 +0100"
      },
      "message": "ARM64: Fix mterp switch table pointer calculation.\n\nDo not mix 32-bit and 64-bit registers with\n    add     x0, xPC, w0, lsl #1\nthat ends up compiled as\n    add     x0, xPC, w0, uxtx #1\ninstead of the required sxtx. Just sing-extend the offset\ncorrectly in previous instructions.\n\nTest: Additional test in 501-regression-packed-switch.\nChange-Id: I9867dc1180743e98f9707a312241d2f5b726ca8c\n"
    },
    {
      "commit": "6740997e6934bbca27d5830a32352d82aabbd38b",
      "tree": "684ab2e46ddeaaf251fb6919bf64295810e46afa",
      "parents": [
        "dc4f4d42aa1712a7ac2e4c24c0aebe58b71ae2c0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 19 22:34:53 2016 -0700"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 20 11:44:25 2016 +0100"
      },
      "message": "ART: Change return types of field access entrypoints\n\nEnsure that return types guarantee full-width data as the compiled\ncode and mterp expect by using size_t and ssize_t.\n\nThis fixes Clang no longer sign-/zero-extending small return types.\n\nBug: 30232671\nTest: m ART_TEST_RUN_TEST_NDEBUG\u003dtrue ART_TEST_INTERPRETER\u003dtrue test-art-host-run-test\nChange-Id: Ic505befc6c94e2dccbc8abf2b13d4c2d662e68d1\n"
    },
    {
      "commit": "83e4903f9f966b52d758b52ac1d522e13fd43e60",
      "tree": "966df75b9d69f43bb18ece89b1ef16db6c546e45",
      "parents": [
        "dadc075149eb322bf28ba35a75a70157147c1c30",
        "a62cb9bb6cb2278cb41ab0664191623e178c6a4f"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Jul 08 20:06:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 08 20:06:58 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Optimize IMT\"\"\""
    }
  ],
  "next": "d47fd907c898e0b8d4a4e50742f9b2f3003b906f"
}
