)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "20eb58ef94db18de9aa3b0404aa65d958025f80b",
      "tree": "96394afcc45cbd72ccdcf5a1b7c02c164a24f5a9",
      "parents": [
        "3cb871ab1af47576959fd24a99d370381b8f193e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 01 15:50:54 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 01 17:09:59 2017 -0800"
      },
      "message": "Use dex cache for GetResolvedMethod\n\nUsing the dex cache is faster than going through the class linker.\nThis reverts to behavior from before aog/321573.\n\nSpeeds up pmd benchmark by ~50%.\n\nTest: test-art-host\n\nChange-Id: I58403aec03e2b7e7a3d3e108319cfb4c75a680cb\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": "e761bccf9f0d884cc4d4ec104568cef968296492",
      "tree": "05a2d20d61c0e91270df2747f0c242433b5ce62b",
      "parents": [
        "b0355130e38034db6b904783a00f74a3524e1881"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 08:59:37 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 09:32:17 2017 +0000"
      },
      "message": "Revert \"Revert \"Load the array class in the compiler for allocations.\"\"\n\nThis reverts commit fee255039e30c1c3dfc70c426c3d176221c3cdf9.\n\nChange-Id: I02b45f9a659d872feeb35df40b42c1be9878413a\n"
    },
    {
      "commit": "fee255039e30c1c3dfc70c426c3d176221c3cdf9",
      "tree": "8207b72cc76513fed9f7b3c01aaa32cd54a87f1c",
      "parents": [
        "cc99df230feb46ba717252f002d0cc2da6828421"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jan 19 02:11:15 2017 +0000"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jan 19 02:11:15 2017 +0000"
      },
      "message": "Revert \"Load the array class in the compiler for allocations.\"\n\nlibcore test fails.\n\nThis reverts commit cc99df230feb46ba717252f002d0cc2da6828421.\n\nChange-Id: I5bac595acd2b240886062e8c1f11f9095ff6a9ed\n"
    },
    {
      "commit": "cc99df230feb46ba717252f002d0cc2da6828421",
      "tree": "73ac045673e150fa367a8da4d46874f28e928491",
      "parents": [
        "4507fdcb70bd570d5f3968061bf991f0a1233a93"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 17 23:00:24 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 18 15:16:32 2017 +0000"
      },
      "message": "Load the array class in the compiler for allocations.\n\nRemoving one other dependency for needing to pass\nthe current method, and having dex_cache_resolved_types_\nin ArtMethod.\n\noat file increase:\n- x64: 0.25%\n- arm32: 0.30%\n- x86: 0.28%\n\ntest: test-art-host, test-art-target\nChange-Id: Ibca4fa00d3e31954db2ccb1f65a584b8c67cb230\n"
    },
    {
      "commit": "942fd3130254d8276cbfe8e6201825e9c49e9b2c",
      "tree": "62dbcd85ab150604e2d72a3c2d0c3639a28c9b7a",
      "parents": [
        "8bd59a0fd46db83616785168231e09fb95ed2ead"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 16 20:52:19 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 17 16:12:15 2017 +0000"
      },
      "message": "Reduce using ArtMethod\u0027s dex_cache_resolved_types_.\n\nAvoid using the ArtMethod\u0027s dex cache type array shortcut\nin runtime, preparing for its removal. We do not completely\nremove the shortcut yet because it is still used by array\nallocation entrypoints.\n\nFix ArgArray::BuildArgArrayFromObjectArray in reflection.cc\nto not ask for the parameter type to be resolved. It should\nhave been previously resolved when retrieving the Method.\n\nAlso partially revert\n    https://android-review.googlesource.com/310717\nbecause it relied on the removed AIOOBE check in the removed\nArtMethod::GetDexCacheResolvedType(). The removed check was\nsimply defensive but it could not be triggered without some\nmemory corruption.\n\nTest: m test-art-host\nBug: 30627598\nChange-Id: Ic45a5ff8c66b79429e440cbc08d67bf22a083682\n"
    },
    {
      "commit": "e037a736be43c1e8ba9340dcbf1d17722356a37b",
      "tree": "f0bc7b4a78d04376b042046afbfd0677d766b523",
      "parents": [
        "db54cc42859a8cc24ed1cda7f9b2f64b27dcb34a",
        "5d37c152f21a0807459c6f53bc25e2d84f56d259"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 17 09:16:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 17 09:16:31 2017 +0000"
      },
      "message": "Merge \"Put inlined ArtMethod pointer in stack maps.\""
    },
    {
      "commit": "5d37c152f21a0807459c6f53bc25e2d84f56d259",
      "tree": "7d8cbce0a55f258150a047def70244f79afc866d",
      "parents": [
        "aa89a4c6fca095904521842c018399f1e3501a45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 12 13:25:19 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 16 22:56:56 2017 +0000"
      },
      "message": "Put inlined ArtMethod pointer in stack maps.\n\nCurrently done for JIT. Can be extended for AOT and inlined boot\nimage methods.\n\nAlso refactor the lookup of a inlined method at runtime to not\nrely on the dex cache, but look at the class loader tables.\n\nbug: 30933338\ntest: test-art-host, test-art-target\nChange-Id: I58bd4d763b82ab8ca3023742835ac388671d1794\n"
    },
    {
      "commit": "6bec91c7d4670905cd67440991ec76fd54d0f000",
      "tree": "05f4ba288e629270773c65b34b71be7bae5e92ff",
      "parents": [
        "4155998a2f5c7a252a6611e3926943e931ea280a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 09 15:03:12 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 16 12:09:53 2017 +0000"
      },
      "message": "Store resolved types for AOT code in .bss.\n\nTest: m test-art-host\nTest: m test-art-target on Nexus 9.\nTest: Nexus 9 boots.\nTest: Build aosp_mips64-eng.\nBug: 30627598\nBug: 34193123\nChange-Id: I8ec60a98eb488cb46ae3ea56341f5709dad4f623\n"
    },
    {
      "commit": "0d3998b5ff619364acf47bec0b541e7a49bd6fe7",
      "tree": "a4763c0660372f6311b612c09267cbbc2fe71e89",
      "parents": [
        "aa89a4c6fca095904521842c018399f1e3501a45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 12 15:35:12 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 12 16:51:12 2017 +0000"
      },
      "message": "Revert \"Revert \"Make object allocation entrypoints only take a class.\"\"\n\nThis reverts commit f7aaacd97881c6924b8212c7f8fe4a4c8721ef53.\n\nChange-Id: I6756cd1e6110bb45231f62f5e388f16c044cb145\n"
    },
    {
      "commit": "f7aaacd97881c6924b8212c7f8fe4a4c8721ef53",
      "tree": "780209ac8e992fa63307062977f672aa5bb55d9e",
      "parents": [
        "2b615ba29c4dfcf54aaf44955f2eac60f5080b2e"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jan 12 02:58:38 2017 +0000"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jan 12 02:58:38 2017 +0000"
      },
      "message": "Revert \"Make object allocation entrypoints only take a class.\"\n\n960-default-smali64 is failing.\n\nThis reverts commit 2b615ba29c4dfcf54aaf44955f2eac60f5080b2e.\n\nChange-Id: Iebb8ee5a917fa84c5f01660ce432798524d078ef\n"
    },
    {
      "commit": "2b615ba29c4dfcf54aaf44955f2eac60f5080b2e",
      "tree": "0a2fe5f9243645a054d4aa094bff5a69cc1abb88",
      "parents": [
        "c9a060f2688599d4a402ee6234db46c2e9b7463f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 06 14:40:07 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 11 10:34:10 2017 +0000"
      },
      "message": "Make object allocation entrypoints only take a class.\n\nChange motivated by:\n- Dex cache compression: having the allocation fast path do a\n  dex cache lookup will be too expensive. So instead, rely on the\n  compiler having direct access to the class (either through BSS for\n  AOT, or JIT tables for JIT).\n- Inlining: the entrypoints relied on the caller of the allocation to\n  have the same dex cache as the outer method (stored at the bottom of\n  the stack). This meant we could not inline methods from a different\n  dex file that do allocations. By avoiding the dex cache lookup in\n  the entrypoint, we can now remove this restriction.\n\nCode expansion on average for Docs/Gms/FB/Framework (go/lem numbers):\n- Around 0.8% on arm64\n- Around 1% for x64, arm\n- Around 1.5% on x86\n\nTest: test-art-host, test-art-target, ART_USE_READ_BARRIER\u003dtrue/false\nTest: test-art-host, test-art-target,  ART_DEFAULT_GC_TYPE\u003dSS ART_USE_TLAB\u003dtrue\n\nChange-Id: I41f3748bb4d251996aaf6a90fae4c50176f9295f\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": "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": "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": "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": "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": "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": "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": "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": "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": "75a7db67f0e56bc0ccc63df4a6a1bb04ab3e86b1",
      "tree": "2d426df6f2807606811c45ae22597e2098dd8a2f",
      "parents": [
        "fd8339e58e3c09097165feeed7a2d70482d40130"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 12:04:26 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 28 09:00:08 2016 -0700"
      },
      "message": "ART: Factor out IMT from ArtMethod\n\nMove IMT Conflict Table to its own file. Move IMT index computation to\nImTable.\n\nIn preparation for code using this independent of specific ArtMethods.\n\nBug: 31594153\nTest: m test-art-host\nChange-Id: Ifd6e304bb86724c5284984c4655c43d3af357f84\n"
    },
    {
      "commit": "be08cf5782c04d876d38be8b8d1caf1b4c3fbe55",
      "tree": "3efb73eb12ccb967003157d30670c5a283ddc8b4",
      "parents": [
        "32772cbdbcb35f5475b01f31314a3c7289bdb589"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 13 13:41:24 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 14 16:53:11 2016 -0700"
      },
      "message": "Fix moving GC bugs in entrypoints\n\nIn FindMethodFromCode, there was missing handles for objects used\nafter a suspend point (ResolveType).\n\nFor check_jni, JniMethodEndWithReferenceHandleResult did not\nhandlarize the return value when calling CheckReferenceResult.\n\nFor CheckReferenceResult, the argument was not in a handle.\n\nBug: 31458474\nChange-Id: I06617fc63f1fb63d7c13ad4245223a8c54fa4b98\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": "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": "ba65cc4a71273904294245cb37ce70e5bce797e3",
      "tree": "d53a7a816ec4c8e5bdbf80729ac945787b27bf2c",
      "parents": [
        "1a827a05afbffd5bee241f245f9aa3c40b4dbae4",
        "542451cc546779f5c67840e105c51205a1b0a8fd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 02 03:47:35 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 02 03:47:35 2016 +0000"
      },
      "message": "Merge \"ART: Convert pointer size to enum\""
    },
    {
      "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": "db698f1add0bfe5e482b837b8dcf805ee957d694",
      "tree": "00071a455b8fe88cf0eeb4dd31f5e2f36a10861a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Jul 25 17:52:22 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Jul 29 15:53:18 2016 -0700"
      },
      "message": "Fix for interpreter crash on new instance of class\n\nRationale:\nFuzz testing found divergences between the compiler and interpreter\nwhich turned out to be caused by calling instance on java.lang.Class\n(this worked for compiler but crashed interpeter). Since RI does not\nallow this construct, solution is to force interpreter in this\nunlikely case and throw run time exception like RI. This fixes\ntwo cases found with fuzz testing. CL also includes\nfail-before/pass-after test.\n\nTest: 600-verifier-fails\n\nBUG\u003d29758098\n\nChange-Id: Ie80f7758def44e6655d28fec4c10c34ffa0fd60b\n"
    },
    {
      "commit": "465ecc86ff65ca546629630c9469deb6d2d8137e",
      "tree": "3a0ed3f2d3ab9fd2cffec44a659036efab35fb4e",
      "parents": [
        "bae13af2fc2fa89985d0466cedf155cb96767910"
      ],
      "author": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Tue Jul 19 21:32:52 2016 +0000"
      },
      "committer": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Tue Jul 19 21:48:06 2016 +0000"
      },
      "message": "Revert \"Revert \"Refactor GetIMTIndex\"\"\n\nOriginally reverted in order to revert\nhttps://android-review.googlesource.com/#/c/244190/\nbut can now be merged again.\n\nThis reverts commit d4ceecc85a5aab2ec23ea1bd010692ba8c8aaa0c.\n\nTest: m test-art-host\n\nChange-Id: Id9205f2b77a378fc0f06088e78c66e81a49f712d\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\"\"\""
    },
    {
      "commit": "a62cb9bb6cb2278cb41ab0664191623e178c6a4f",
      "tree": "62263dac644e2d80a34a04f2649e4741a1bed6f4",
      "parents": [
        "bb8d501c9bb882a8927c6ceda07bf9577e06c3e1"
      ],
      "author": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Thu Jun 30 09:18:25 2016 +0000"
      },
      "committer": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Thu Jul 07 10:01:04 2016 +0000"
      },
      "message": "Revert \"Revert \"Optimize IMT\"\"\n\nThis reverts commit 88f288e3564d79d87c0cd8bb831ec5a791ba4861.\n\nChange-Id: I49605d53692cbec1e2622e23ff2893fc51ed4115\n"
    },
    {
      "commit": "5aef803591b8677c3eef990ecc29d0a49af27a7d",
      "tree": "6807d6abbc7d8475f28a89c531ccdf68fbfcf4df",
      "parents": [
        "d80c5d2368b4455c452e8b4fe2d8511fe1c0430c",
        "c6df1e3cbfa7313007ee5fd4a5a6657a28627313"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 05 08:07:44 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 05 08:07:44 2016 +0000"
      },
      "message": "Merge \"Never go to resolution while inspecting inlined frames.\""
    },
    {
      "commit": "c6df1e3cbfa7313007ee5fd4a5a6657a28627313",
      "tree": "13042081c7e5a784a90422c759e9b73e5cc9b013",
      "parents": [
        "19c10147cd5f3270c8604d06c4a0e05cbc49e2f1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 04 10:15:47 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 04 16:40:51 2016 +0100"
      },
      "message": "Never go to resolution while inspecting inlined frames.\n\nInstead, do a manual inspection and decoding of the invoke\nwith the dex cache.\n\nAlso update oatdump to dump types in the dex cache.\n\nbug:27858645\nChange-Id: I7c0b612ee96e6865fa438c3a1d253686231337bd\ntest:run-test\n"
    },
    {
      "commit": "2a1b7ac77446d12befceb9946dc418d15119bc05",
      "tree": "085d819d474dcb9383908d3b6fd82843a9512516",
      "parents": [
        "5be510d8feeb3640e3e4f6a257a775194fcb5097"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 29 14:54:26 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 29 14:54:26 2016 -0700"
      },
      "message": "Fix divergence between interpreter and compiler.\n\nRationale:\nAccess checks on a method invocation should be performed\nprior to checking null pointer for non-static method calls.\n\nTest: 600-verifier-fails\n\nBUG\u003d29068831\n\nChange-Id: I21874d96ff83e7e6c6cf7c239e65ce1b515b9729\n"
    },
    {
      "commit": "88f288e3564d79d87c0cd8bb831ec5a791ba4861",
      "tree": "dd051a7b2985d1af3fea91ad6000de4bdc701a19",
      "parents": [
        "e36389f20c83083c0aaba2dcac0888951e55cae1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 29 08:17:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 29 08:41:25 2016 +0000"
      },
      "message": "Revert \"Optimize IMT\"\n\nBug: 29188168 (for initial CL)\nBug: 29778499 (reason for revert)\n\nThis reverts commit badee9820fcf5dca5f8c46c3215ae1779ee7736e.\n\nChange-Id: I32b8463122c3521e233c34ca95c96a5078e88848\n"
    },
    {
      "commit": "d4ceecc85a5aab2ec23ea1bd010692ba8c8aaa0c",
      "tree": "982948a67a88a1f9a734c935f919f8d307969f48",
      "parents": [
        "50706437d8216e41f0fea1e413cda7891324d397"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 29 08:39:47 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 29 08:39:47 2016 +0000"
      },
      "message": "Revert \"Refactor GetIMTIndex\"\n\nI need to revert this to get https://android-review.googlesource.com/#/c/244190/ to cleanly revert. Matthew, do you mind rewriting it?\n\nThis reverts commit 50706437d8216e41f0fea1e413cda7891324d397.\n\nChange-Id: I5c1435f5dffb46dbb5b613b22adb88c7770304f2\n"
    },
    {
      "commit": "50706437d8216e41f0fea1e413cda7891324d397",
      "tree": "23c7c5d1198b8cdde6261198626cfe443eab59ba",
      "parents": [
        "badee9820fcf5dca5f8c46c3215ae1779ee7736e"
      ],
      "author": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Tue Jun 14 11:31:04 2016 -0700"
      },
      "committer": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Wed Jun 15 09:08:35 2016 -0700"
      },
      "message": "Refactor GetIMTIndex\n\nThis allows us to more easily maintain and experiment with\ninterface method table indexing and hashing.\n\nChange-Id: I719920fae7490dcedcda7c1c36db225c2b8b16df\n"
    },
    {
      "commit": "badee9820fcf5dca5f8c46c3215ae1779ee7736e",
      "tree": "982948a67a88a1f9a734c935f919f8d307969f48",
      "parents": [
        "614968198625a6693666bdc1e5609e2f663f5638"
      ],
      "author": {
        "name": "Nelli Kim",
        "email": "nelli.kim@samsung.com",
        "time": "Fri May 13 13:08:53 2016 +0300"
      },
      "committer": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Tue Jun 14 10:05:47 2016 -0700"
      },
      "message": "Optimize IMT\n\n* Remove IMT for classes which do not implement interfaces\n* Remove IMT for array classes\n* Share same IMT\n\nSaved memory (measured on hammerhead):\nboot.art:\nTotal number of classes: 3854\nNumber of affected classes: 1637\nSaved memory: 409kB\n\nChrome (excluding classes in boot.art):\nTotal number of classes: 2409\nNumber of affected classes: 1259\nSaved memory: 314kB\n\nGoogle Maps (excluding classes in boot.art):\nTotal number of classes: 6988\nNumber of affected classes: 2574\nSaved memory: 643kB\n\nPerformance regression on benchmarks/InvokeInterface.java benchmark\n(measured timeCall10Interface)\n1st launch: 9.6%\n2nd launch: 6.8%\n\nChange-Id: If07e45390014a6ee8f3c1c4ca095b43046f0871f\n"
    },
    {
      "commit": "f663e341c550d1aa6f8f587d0ae0dbf7d254ff55",
      "tree": "cc919e9fb060ff73bbe5bdee8fdac6fc926a52ae",
      "parents": [
        "4e377e58066ccef401276d7d0985521e5e63d1fb"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Apr 04 17:28:59 2016 -0700"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 06 13:53:29 2016 +0100"
      },
      "message": "Workaround invokesuper underspecified behavior.\n\nThe verifier allows invokesuper on a class unrelated\nto the referring class. However, the runtime uses the vtable of\nthe super class of the referring class to lookup the ArtMethod.\nSince the receiver has no relation to the referring class, this lead\nto either jumping to a wrong method, or \"luckily\" throw a\nNoSuchMethodError if the vtable index is out of bounds of the super\nclass of the referring class.\n\nThis changes the runtime behavior to always throw NoSuchMethodError\nwhen hitting such invokesuper.\n\nAlso, we make the verifier consistent with the runtime by treating\nsuch calls unresolved.\n\nbug\u003d27627004\n\nChange-Id: I68486501a9625f91679078c5a980b39974ddbf1c\n"
    },
    {
      "commit": "61b28a17d9b6e8e998103646e98e4a9772e11927",
      "tree": "438c4a73f72423ddc71e6dca9f082d9e1d533996",
      "parents": [
        "cf0f8560f41467331427418584687830932e66ed"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 25 21:55:03 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Apr 01 17:01:55 2016 +0100"
      },
      "message": "Use bit-level packing for InlineInfo in stackmaps as well.\n\nUse the same approach as we do for stackmaps to reduce the size.\n\nIt saves 4.0 MB from non-debuggable boot.oat (AOSP).\nIt does not affect debuggable boot.oat.\n\nIt saves 3.6 MB (of 96.6 MB) from /system/framework/arm/ (GOOG).\nIt saves 0.6 MB (of 26.7 MB) from /system/framework/oat/arm/ (GOOG).\n\nField loads from inline-info get around 5% slower.\n(based on the time it takes to load all inline-infos from boot.oat)\n\nChange-Id: I67b0fa5eef74c1fdb013680d0231fd44ea696176\n"
    },
    {
      "commit": "45bf250d61de433c18ded824348e87bd4ffd7678",
      "tree": "1b79913ff99218dcfe1fc124d05ec403c871418f",
      "parents": [
        "68724122b444e531d65413b1d9039f6e5fca52b3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 31 11:07:09 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 31 14:51:09 2016 -0700"
      },
      "message": "Add way to disable resolving for stack walk\n\nOnly occurs for walking the inlined frames case.\n\nBug: 27857910\n\n(cherry picked from commit be2892bf771435eb451c74297b553f7dc9fea4ca)\n\nChange-Id: Ied92be96f2f74ba02c02168f704443b95e7a4b04\n"
    },
    {
      "commit": "796d63050a18f263b93ea34951a61deaecab3422",
      "tree": "813865c31b25ac06006e4ee3932b4e918c708c9b",
      "parents": [
        "eecf60d51b481647c8508f22b3d6ce437773ea0c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Mar 13 22:22:31 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 22 15:17:58 2016 +0000"
      },
      "message": "Add an ImtConflictTable to better resolve IMT conflicts.\n\n- Attach a ImtConflictTable to conflict runtime ArtMethod.\n- Initially 0, a new one will be created at the first hit of\n  the conflict method.\n- If the assembly code does not find a target method in the table,\n  we will create a new one again, copying the data from the previous\n  table and adding the new mapping.\n\nImplemented for arm/arm64/x86/x64.\n\nbug:27556801\nbug:24769046\n\nChange-Id: Ie74d1c77cf73d451a1142bdc5e3683f9f84bb4e7\n"
    },
    {
      "commit": "14b0a5ddc0ae305e3ac152c34e4d6fdd0abb854c",
      "tree": "66f378cf59ddee476981de4828461f62bceafa9f",
      "parents": [
        "0b2c1922cc29a7939f747f60d80240a9fb22547c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 11 17:22:23 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 14 13:08:32 2016 -0700"
      },
      "message": "Fix cases where we miss instrumentation changes\n\nMoved allocation stack push to after we record the allocation since\nit can cause thread suspension.\n\nAdded handling in entrypoint utils for thread suspension cases.\n\nKeep the AllocRecordObjectMap around since we do not want to delete\nit if there are any threads waiting on new_record_condition_. The\ncondition guards adding stack traces while the GC is running. If we\ndelete the map and there are still waiters that did not resume, it\ncaused a CHECK failure. This could happen in cases where one thread\ndisables allocation tracking while other threads are about to\nresume from the condition.\n\nBug: 27506909\n\n(cherry picked from commit 0f394021d6abfdf9ebea6c7f405ec936a812ea62)\n\nChange-Id: I1dc51e9f000684b4032b57beab59d317ece26f06\n"
    },
    {
      "commit": "bf36918448eb2c0ce15d429e3fc3ef1e525a9ee6",
      "tree": "400dd7e27183a28f7a4b2b65e83783542bcec3e5",
      "parents": [
        "45b93ca31448888d13b3859a8c3d0c90d4b00e54"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 04 18:13:32 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 05 11:28:40 2016 -0800"
      },
      "message": "Fix moving GC bugs in quick_field_entrypoints.cc\n\nThere was some missing handles. Fixed style.\n\nBug: 26990650\n\n(cherry picked from commit 1fd00287bedce99cd602aec00d421bddb7a9a107)\n\nChange-Id: If7cb0de61e6b19004838e98345fdbc60ccdd5767\n"
    },
    {
      "commit": "f1b4c41dba8ea69c25f7db53eec97a8936e0d7f0",
      "tree": "58f355d69363c4daa453680f49cd9b2743e40bfa",
      "parents": [
        "df187e4cc8b1b2dc6cb0043eb91d1dfd72cb490b"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Feb 01 17:40:19 2016 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Feb 02 10:56:01 2016 -0800"
      },
      "message": "runtime: Fix field resolution with access checks (runtest 073)\n\nFixes field resolution not to take static/instance into account until\nafter the field is completely resolved. Only the [i|s][put|get]\ninstructions themselves have enough context on whether the field must be\nstatic or not (and throw an ICCE on a mismatch).\n\nThis makes us more JLS 13.4.8 compatible and also fixes a run-test\nfailure for interpreter-access-checks configuration.\n\nBug: 22414682\nChange-Id: I78b17187e59f8f78569fcd8ffdf1cf1603a2d4b2\n"
    },
    {
      "commit": "91d65e024846717fce3572106cffe9b957b8902c",
      "tree": "22ea1a91afdd552a31bb2365a9eae034ae0a1c9b",
      "parents": [
        "1bcbcf8e848d18b19d248c3d15f77c888f2b5f04"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jan 19 15:59:16 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jan 19 15:59:16 2016 +0000"
      },
      "message": "Fix various typos in ART\u0027s comments and string literals.\n\nChange-Id: I85d628055b1a61647a77fef730c9631c234e22a2\n"
    },
    {
      "commit": "65902e86b91f984061657bd8cacf239edb53c39d",
      "tree": "42d2b7b9a4004b0b02c44df5f8dda14d51fb7366",
      "parents": [
        "14c2d9fd6fba4732d1a43e3288c818b8e0e049fa"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jan 15 09:35:13 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 19 11:29:20 2016 +0000"
      },
      "message": "ART: Optimize out redundant NewInstances of String\n\nNewInstance of String creates an empty String object before it is\nreplaced by the result of a StringFactory call (String.\u003cinit\u003e). If\nthe empty object is never used prior to the call, it can be safely\nremoved (replaced with null in this case).\n\nWe do not remove the instruction if:\n - it has a real use (comparison, instanceof, check-cast), or\n - we are compiling with --debuggable and there is an environment use.\n\nIf removed and execution deoptimizes before the StringFactory call,\nthe interpreter will see String.\u003cinit\u003e being called on a null object.\nSince the verifier guarantees that the call was made on new-instance\nin the input bytecode (b/26579108), the interpreter can safely assume\nthat it was optimized out rather than throw NullPointerException.\n\nResults (all without --debuggable):\n - boot.oat:     563/563 removed\n - Google Maps:  480/480 removed\n - Google Docs:  819/819 removed\n\nChange-Id: I9fdfc50e9dea6299a7327f94327cdfd2b2538079\n"
    },
    {
      "commit": "705ad49f353d3f90d8b63625aca2c2035bacdbef",
      "tree": "ac70af53158a80bc35c057aefae11428281df9ac",
      "parents": [
        "fae1db92d8433d0f75258c190bcf2c940731f036"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Sep 21 11:36:30 2015 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 12 15:40:31 2016 -0800"
      },
      "message": "Support directly invoking interface default methods\n\nWith the Java 8 Language one is allowed to directly call default\ninterface methods of interfaces one (directly) implements through the\nuse of the super keyword. We support this behavior through the\ninvoke-super opcode with the target being an interface.\n\nWe add 3 tests for this behavior.\n\nCurrently only supports slow-path interpreter.\n\nInvoke-super is currently extremely slow.\n\nBug: 24618811\n\nChange-Id: I7e06e17326f7dbae0116bd7dfefca151f0092bd2\n"
    },
    {
      "commit": "42ef8ab151a3d0cbb42cb43f6841c3708d65fca3",
      "tree": "ba8eb3fdecd226a8c516a86ac418f73f6c0ff254",
      "parents": [
        "170e01a6b59b3242a5afc76c3a03c00ce288150f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 03 17:27:32 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 10 13:52:33 2015 -0800"
      },
      "message": "ART: Stash a resolved method late in the verifier\n\nInvoke-interface should only be called on an interface method.\nWe cannot move the check earlier, as there are other checks\nthat must be done that can fail a class hard. So postpone\na push to the dex cache.\n\nClean up the test a bit.\n\nAlso templatize ResolveMethod with a version always checking\nthe invoke type, and on a cache miss check whether type target\ntype is an interface when an interface invoke type was given.\n\nBug: 21869691\nChange-Id: I94cbb23339cbbb3cb6be9995775e4dcefacce7fd\n"
    },
    {
      "commit": "c96205e03bd4f991ad1540df38f9f692ef211b22",
      "tree": "4ae775d15f51efb704ca5b00a2ee4b6fb6615812",
      "parents": [
        "34760f9a97e6a1733edfca1b13199f749106a30f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 10 13:25:27 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 10 13:27:10 2015 -0800"
      },
      "message": "Revert \"ART: Check invoke-interface earlier in verifier\"\n\nThis reverts commit dae24142127c64551142a50423085aabdb0a6060.\n\nIt is important to check the name of the method being called.\n\nBug: 21869691\n"
    },
    {
      "commit": "dae24142127c64551142a50423085aabdb0a6060",
      "tree": "35c06bc37e2dd2caad4fef1fba4de16a12aad6f9",
      "parents": [
        "ef45113d01c16102538a8848d6979e772dad6225"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 03 17:27:32 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 08 08:50:12 2015 -0800"
      },
      "message": "ART: Check invoke-interface earlier in verifier\n\nInvoke-interface should only be called on an interface method.\nMove the check earlier, as otherwise we\u0027ll try to resolve and\npotentially inject a method into the dex cache.\n\nAlso templatize ResolveMethod with a version always checking\nthe invoke type, and on a cache miss check whether type target\ntype is an interface when an interface invoke type was given.\n\nBug: 21869691\nChange-Id: Ica27158f675b5aa223d9229248189612f4706832\n"
    },
    {
      "commit": "e523423a053af5cb55837f07ceae9ff2fd581712",
      "tree": "6c2d9c570bf0d9a0e2cd056e052c0be618b03fc5",
      "parents": [
        "08a84acc7adb1bb076595eb961bd4667896e5075"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 02 09:06:11 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 02 13:01:25 2015 +0000"
      },
      "message": "Revert \"Revert \"Don\u0027t use the compiler driver for method resolution.\"\"\n\nThis reverts commit c88ef3a10c474045a3476a02ae75d07ddd3230b7.\n\nChange-Id: I0ed88a48b313a8d28bc39fae40631123aadb13ef\n"
    },
    {
      "commit": "c88ef3a10c474045a3476a02ae75d07ddd3230b7",
      "tree": "cd23e1e0a3cea10cc9a9ae8269a01f75ada8ef0e",
      "parents": [
        "4db0bf9c4db6a09716c3388b7d2f88d534470339"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 16:28:10 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 16:28:10 2015 +0000"
      },
      "message": "Revert \"Don\u0027t use the compiler driver for method resolution.\"\n\nFails 425 in debuggable mode.\n\nThis reverts commit 4db0bf9c4db6a09716c3388b7d2f88d534470339.\n\nChange-Id: I346df8f75674564fc4fb241c60f23e250fc7f0a7\n"
    },
    {
      "commit": "4db0bf9c4db6a09716c3388b7d2f88d534470339",
      "tree": "71feab1b20d4d773f881e0afc26dfcd236c177d1",
      "parents": [
        "d1744d449cf2b56af7e0896b3729fac2a414e3af"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 09:35:04 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 14:23:01 2015 +0000"
      },
      "message": "Don\u0027t use the compiler driver for method resolution.\n\nThe compiler driver makes assumptions that don\u0027t hold for\nthe optimizing compiler, and will for example always go to\nslow path for an invoke-super when there\u0027s no verified method.\n\nAlso fix GenerateInvokeVirtual in the presence of intrinsics.\n\nNext change will address some of the TODOs in sharpening.cc.\n\nChange-Id: I2b0e543ee9b9bebcadb2d26de29e850c59ad58b9\n"
    },
    {
      "commit": "6bc4374e3fa00e3ee5e832e1761c43e0b8a71558",
      "tree": "38118523aa6b9a92fbdcd7bf1d32ca6185a3d3f0",
      "parents": [
        "16065ce56394c73c87dcb78ead4164ddc80fddb3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 12 18:11:10 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 13 12:05:27 2015 +0100"
      },
      "message": "Add an abstraction over a compiled code.\n\nThat\u0027s just step 1, moving code-related functions of ArtMethod to\nanother class. That class is only a wrapper on an ArtMethod, but will\nbe changed to be a wrapper around compiled code.\n\nChange-Id: I6f35fc06d37220558dff61691e51ae20066b0dd6\n"
    },
    {
      "commit": "470d54fcd6be1aba56a4dc21f8b437168b779867",
      "tree": "623f0abf83d943cafd882b053ac7658c948b7b33",
      "parents": [
        "cc245eab2148547f9df37ddc5f767656dc033b81"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 02 17:14:53 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 02 17:14:53 2015 +0100"
      },
      "message": "Change IllegalAccess/IncompatibleClassChange order.\n\nThis is to have the same order as ClassLinker::ResolveMethod. In\na JIT environment, hitting the dex cache would not make it to the\nexpected IllegalAccessError and we would throw the wrong exception.\n\nChange-Id: Ifc70f1a93260a24e952fa7a659be1be5bdc666de\n"
    },
    {
      "commit": "1920c1036ebe6dcdc93959714c9fdcedc199baf0",
      "tree": "e36976aea8f789ceb037b66308d1ec84a0421772",
      "parents": [
        "0766e3ff5638b14d6b3ea6157c800eed11be5b98"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 29 18:00:03 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 30 09:05:15 2015 +0100"
      },
      "message": "Revert \"Revert \"Enable optimizations with --debuggable.\"\"\n\nThis reverts commit b7d27a53cb280a943c0a63a9e0806cf8e3ae4cde.\n\nChange-Id: I398c23863e4fd86a3112076417378d22efd08306\n"
    },
    {
      "commit": "b7d27a53cb280a943c0a63a9e0806cf8e3ae4cde",
      "tree": "fdf0c3bb7630ed0d5598365059fca4c04cccb1bf",
      "parents": [
        "43855ccb01703b188777fe59e1110e6a23803171"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 29 17:30:10 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 29 17:30:10 2015 +0000"
      },
      "message": "Revert \"Enable optimizations with --debuggable.\"\n\nBuild error with gcc.\n\nThis reverts commit 43855ccb01703b188777fe59e1110e6a23803171.\n\nChange-Id: I45abc7ee0943b2ad7bd644c88858891fc7a38ead\n"
    },
    {
      "commit": "43855ccb01703b188777fe59e1110e6a23803171",
      "tree": "7cd613dacd58258af4684595c41e4c118250b528",
      "parents": [
        "3f4b39dec9ec6b8948ed18b9d65ba49db2465004"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 29 15:43:06 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 29 16:57:52 2015 +0100"
      },
      "message": "Enable optimizations with --debuggable.\n\nChange-Id: I8979e59ee081222687fda1c93ac0bf3acbbad936\n"
    },
    {
      "commit": "05792b98980741111b4d0a24d68cff2a8e070a3a",
      "tree": "bad79a387bcbdaefc87c07b388099960ca9caff3",
      "parents": [
        "c26b4512a01d46756683a4f5e186a0b7f397f251"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 03 11:56:49 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 17:30:57 2015 +0100"
      },
      "message": "ART: Move DexCache arrays to native.\n\nThis CL has a companion CL in libcore/\n    https://android-review.googlesource.com/162985\n\nChange-Id: Icbc9e20ad1b565e603195b12714762bb446515fa\n"
    },
    {
      "commit": "3a35714ebca10c989aa383c0861e2e84fe8dadf8",
      "tree": "3218ed8f5962af0351e1d285ccaff5207050672d",
      "parents": [
        "275bc5e5f318ba6ea1bad6c89c2924d1248b7523"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 07 17:20:11 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 07 17:22:26 2015 -0700"
      },
      "message": "ART: Clean up unnecessary ArtMethod**\n\nArtMethods are no longer Java objects, so the additional indirection\nis no longer necessary here.\n\nChange-Id: If76756d875b418b3f6e83f51b3225a158e9ce29b\n"
    },
    {
      "commit": "90443477f9a0061581c420775ce3b7eeae7468bc",
      "tree": "8c74b81dfae162e0fd0ccf8d5ac50827ba815174",
      "parents": [
        "6078aec213dfaf111c29969706e8e5967cfc9bea"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 16 20:32:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 15:13:56 2015 -0700"
      },
      "message": "Move to newer clang annotations\n\nAlso enable -Wthread-safety-negative.\n\nChanges:\nSwitch to capabilities and negative capabilities.\n\nFuture work:\nUse capabilities to implement uninterruptible annotations to work\nwith AssertNoThreadSuspension.\n\nBug: 20072211\n\nChange-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33\n"
    },
    {
      "commit": "3976e5e0d3bc05e4a90eb450821cfb82cd18bfa2",
      "tree": "894d678cd6943b4c98d8de232ec552394dc1e4a6",
      "parents": [
        "d11db7dd312a64928fa41a2d7472f49ede0c7346"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 15 08:58:03 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 15 08:58:03 2015 +0100"
      },
      "message": "Fix lint error.\n\nChange-Id: I839d547bd3f7c814e2db2b9b40119fdd13469ee6\n"
    },
    {
      "commit": "32c9ea5c03b1b22f36233ec6c24eca87c77f9157",
      "tree": "a10130c6ab7795772c413f543beeece6e31a3d04",
      "parents": [
        "10176757836db987e11fb3723e4cb07bd9ea7e95"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 12 14:52:33 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 12 15:53:50 2015 +0100"
      },
      "message": "Use the caller\u0027s class loader when walking inlined frames.\n\nWe should not use the outer most class loader. JLS specification\nis to use the caller\u0027s class loader.\n\nChange-Id: I736f36c9b6a44fab213ad0c01cf1efc975b9b3a6\n"
    },
    {
      "commit": "f677ebfd832c9c614fea5e6735725fec2f7a3f2a",
      "tree": "051b3ba6343bdbca4929d728dd5c0341e4383a08",
      "parents": [
        "c47908e8c32fd58bc4dc75998a80f706954db1dc"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 29 16:29:43 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jun 04 17:25:02 2015 +0100"
      },
      "message": "Cache stack map encoding\n\nOperations on CodeInfo and StackMap objects repeatedly read encoding\ninformation from the MemoryRegion. Since these are 3-bit-loads of\nvalues that never change, caching them can measurably reduce compile\ntimes.\n\nAccording to benchmarks, this patch saves 1-3% on armv7, 2-4% on x86,\nand 0-1% on x64.\n\nChange-Id: I46b197513601325d8bab562cc80100c00ec28a3b\n"
    },
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "d23eeef3492b53102eb8093524cf37e2b4c296db",
      "tree": "57d3e9ab2853d5b8092568bb3d29bc850c113315",
      "parents": [
        "a15c78d3cc28f514a482ffd792a767e97fe53c95"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 18 22:31:29 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 29 14:15:04 2015 +0100"
      },
      "message": "Support for inlining methods that call/throw.\n\nMostly fixes here and there to make it working.\n\nChange-Id: I1b535e895105d78b65634636d675b818551f783e\n"
    },
    {
      "commit": "7ea6a170486d81b127e69673cd1020c4db628c93",
      "tree": "02a302e1f952490dc3238eb96c103dab0590e8ff",
      "parents": [
        "dc23a3882b82a7a3dd5078cda3f4b4706e172617"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 19 18:58:54 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 20 11:10:36 2015 +0100"
      },
      "message": "Don\u0027t hardcode the location of the caller.\n\nThis is to avoid shooting ourselves in the foot when\ndealing with inlined frames. Instead, use common methods\nfor fetching the caller and its dex pc.\n\nChange-Id: I3467a7b50cf163022d332e80356f0aab747de252\n"
    },
    {
      "commit": "5ea536aa4a6414db01beaf6f8bd8cb9adc5cfc92",
      "tree": "27b3f1c148744452b26bd4841f0dabe0549c3d86",
      "parents": [
        "c5cb691ca6a746a193bfbe3525aafa7cbb281d40"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 20 20:11:30 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 24 11:08:46 2015 +0100"
      },
      "message": "Remove ArtMethod* parameter from dex cache entry points.\n\nLoad the ArtMethod* using an optimized stack walk instead.\nThis reduces the size of the generated code.\n\nThree of the entry points are called only from a slow-path\nand the fourth (InitializeTypeAndVerifyAccess) is rare and\nalready slow enough that the one or two extra loads\n(depending on whether we already have the ArtMethod* in a\nregister) are insignificant. And as we\u0027re starting to use\nPC-relative addressing of the dex cache arrays (already\ndone by Quick for the boot image), having the ArtMethod* in\na register becomes less likely anyway.\n\nChange-Id: Ib19b9d204e355e13bf386662a8b158178bf8ad28\n"
    },
    {
      "commit": "2cebb24bfc3247d3e9be138a3350106737455918",
      "tree": "d04d27d21b3c7733d784e303f01f873bb99e7770",
      "parents": [
        "1f02f1a7b3073b8fef07770a67fbf94afad317f0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 16:50:40 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 12:44:27 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nAlso fixed some lines that were too long, and a few other minor\ndetails.\n\nChange-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb\n"
    },
    {
      "commit": "c785344b87221f5e4e6473e5b762e4e61fe65dcf",
      "tree": "cd32ad2c2604596a18926f04d4c313dab255ecfd",
      "parents": [
        "a29d93b380c9aeb8270e281aefbdd0c77a430d43"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 27 14:35:38 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 10 12:57:27 2015 -0700"
      },
      "message": "Move ArtField to native\n\nAdd linear alloc. Moved ArtField to be native object. Changed image\nwriter to put ArtFields after the mirror section.\n\nSavings:\n2MB on low ram devices\n4MB on normal devices\n\nTotal PSS measurements before (normal N5, 95s after shell start):\nImage size: 7729152 bytes\n23112 kB: .NonMoving\n23212 kB: .NonMoving\n22868 kB: .NonMoving\n23072 kB: .NonMoving\n22836 kB: .NonMoving\n19618 kB: .Zygote\n19850 kB: .Zygote\n19623 kB: .Zygote\n19924 kB: .Zygote\n19612 kB: .Zygote\nAvg: 42745.4 kB\n\nAfter:\nImage size: 7462912 bytes\n17440 kB: .NonMoving\n16776 kB: .NonMoving\n16804 kB: .NonMoving\n17812 kB: .NonMoving\n16820 kB: .NonMoving\n18788 kB: .Zygote\n18856 kB: .Zygote\n19064 kB: .Zygote\n18841 kB: .Zygote\n18629 kB: .Zygote\n3499 kB: .LinearAlloc\n3408 kB: .LinearAlloc\n3424 kB: .LinearAlloc\n3600 kB: .LinearAlloc\n3436 kB: .LinearAlloc\nAvg: 39439.4 kB\n\nNo reflection performance changes.\n\nBug: 19264997\nBug: 17643507\n\nChange-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c\n"
    },
    {
      "commit": "0aa50ce2fb75bfc2e815a0c33adf9b049561923b",
      "tree": "9a3f9603ab30d5cbc7fc21aee0ceb48bbb0dd25a",
      "parents": [
        "e8e42f3548fd894f860912bb1b71ce6fa2d7daf3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 11:03:29 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 14:51:11 2015 +0000"
      },
      "message": "Remove ThrowLocation.\n\nNote that this is a cleanup change, and has no functionality change.\nThe ThrowLocation had no use anymore.\n\nChange-Id: I3d2126af1dc673cec3a0453ff3d56a172663a5f6\n"
    },
    {
      "commit": "14691c5e786e8c2c5734f687e4c96217340771be",
      "tree": "7c2156671b323c70ffdd1d48d5e2f1d1de79c5fc",
      "parents": [
        "3d7d2af4c6502b771b032ee9bf3ab30e78f9c60d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 05 10:40:17 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 09 10:09:33 2015 +0000"
      },
      "message": "Compute the right catch location for the debugger.\n\nAlso remove tls ThrowLocation, it is not needed anymore.\n\nChange-Id: I78fddf09ce968ca475e39c17fa76d699c589c8d9\n"
    },
    {
      "commit": "7642cfc90fc9c3ebfd8e3b5041915705c93b5cf0",
      "tree": "807b3c797483310ac23954c5eddb7441b91749c5",
      "parents": [
        "dc47e986941b1a3754447fabea272485f3f0f382"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 26 10:56:09 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 03 17:50:49 2015 +0000"
      },
      "message": "Change how we report exceptions to the debugger.\n\nThis is only a refactoring/cleanup. Bug fixes with respect\nto catch location, and more cleanups will follow.\n\nChange-Id: I30d3c6260b0c8f8115a811621397225b88f2063a\n"
    },
    {
      "commit": "1cc7dbabd03e0a6c09d68161417a21bd6f9df371",
      "tree": "8557bdff971e366909351af95a7c8ead82792986",
      "parents": [
        "5e0a9849d4e353c3726095b65ab07cefce40a636"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 17 18:43:01 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 29 10:52:02 2014 -0800"
      },
      "message": "ART: Reorder entrypoint argument order\n\nShuffle the ArtMethod* referrer backwards for easier removal.\n\nClean up ARM \u0026 MIPS assembly code.\n\nChange some macros to make future changes easier.\n\nChange-Id: Ie2862b68bd6e519438e83eecd9e1611df51d7945\n"
    },
    {
      "commit": "9f612ffab2b188d80027d961d7118eb2c461b5ad",
      "tree": "aa5a5c83810b13f726b16670bc4442a4f271ee55",
      "parents": [
        "c6c88d2079f0d47eb86a2e2e2f53cab25b0503c1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 24 13:42:22 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 24 13:43:11 2014 -0800"
      },
      "message": "ART: Fix unused variables and functions\n\nChange-Id: Icbab884d2dfd71656347368b424cb35cbf524051\n"
    },
    {
      "commit": "6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f",
      "tree": "9df58b57af13240a93a6da4eefcf03f70cce9ad9",
      "parents": [
        "c6e0955737e15f7c0c3575d4e13789b3411f4993"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 31 00:33:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 03 20:01:04 2014 -0800"
      },
      "message": "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n\nFix associated errors about unused paramenters and implict sign conversions.\nFor sign conversion this was largely in the area of enums, so add ostream\noperators for the effected enums and fix tools/generate-operator-out.py.\nTidy arena allocation code and arena allocated data types, rather than fixing\nnew and delete operators.\nRemove dead code.\n\nChange-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b\n"
    },
    {
      "commit": "207a37dbb8049bdf585d17551c3eb3df685a629f",
      "tree": "6ddb67ac39641acf3db3f30c9346ea5c264f2b18",
      "parents": [
        "a338da434433b180c33e043929ea79b18f4c093c"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Oct 29 17:24:25 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 03 14:00:57 2014 -0800"
      },
      "message": "Check null this pointer for direct methods in FindMethodFast.\n\nAlso adds regression test 127-secondarydex.\n\nBug: 18150997\n\n(cherry picked from commit d2bee3dffa2f552512f47bca605ed857e3ae30ea)\n\nChange-Id: I911dd7c92c51939504cfee5a3d18a835987b8388\n"
    },
    {
      "commit": "2d2621a1463d2f3f03fa73503fa42e43657cdcfc",
      "tree": "1f7cf393693d72db5c186f99b04ac511958c6418",
      "parents": [
        "ac293277b69882105810fabd6c53f55de58823fe"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 23 16:48:06 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 27 16:49:43 2014 -0700"
      },
      "message": "Optimize method linking\n\nAdded more inlining, removed imt array allocation and replaced it\nwith a handle scope. Removed some un-necessary handle scopes.\n\nAdded logic to base interface method tables from the superclass so\nthat we dont need to reconstruct for every interface (large win).\n\nFacebook launch Dalvik KK MR2:\nTotalTime: 3165\nTotalTime: 3652\nTotalTime: 3143\nTotalTime: 3298\nTotalTime: 3212\nTotalTime: 3211\n\nFacebook launch TOT before:\nWaitTime: 3702\nWaitTime: 3616\nWaitTime: 3616\nWaitTime: 3687\nWaitTime: 3742\nWaitTime: 3767\n\nAfter optimizations:\nWaitTime: 2903\nWaitTime: 2953\nWaitTime: 2918\nWaitTime: 2940\nWaitTime: 2879\nWaitTime: 2792\n\nLinkInterfaceMethods no longer one of the hottest methods, new list:\n4.73% art::ClassLinker::LinkVirtualMethods(art::Thread*, art::Handle\u003cart::mirror::Class\u003e)\n3.07% art::DexFile::FindClassDef(char const*) const\n2.94% art::mirror::Class::FindDeclaredStaticField(art::mirror::DexCache const*, unsigned int)\n2.90% art::DexFile::FindStringId(char const*) const\n\nBug: 18054905\nBug: 16828525\n\n(cherry picked from commit 1fb463e42cf1d67595cff66d19c0f99e3046f4c4)\n\nChange-Id: I27cc70178fd3655fbe5a3178887fcba189d21321\n"
    },
    {
      "commit": "2c4257be8191c5eefde744e8965fcefc80a0a97d",
      "tree": "9db3e1f1c60f2df29638ba3ce9d5d5bb8b26ca2c",
      "parents": [
        "98c271d517bc4d25fc6879b4b8e35ea93885d9e2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:20:06 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:23:42 2014 -0700"
      },
      "message": "Tidy logging code not using UNIMPLEMENTED.\n\nChange-Id: I7a79c1671a6ff8b2040887133b3e0925ef9a3cfe\n"
    },
    {
      "commit": "f0edfc355893d53d1104b05501c99ad5ccf305c4",
      "tree": "7e1fa49875759512f5d02b1c45435d3e3366b920",
      "parents": [
        "1ed5b27ee329208fd8ae22b8a9a61d708e2c1ffb"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 25 11:46:46 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 25 15:53:54 2014 -0700"
      },
      "message": "Some optimizations for the array alloc path.\n\n- Force Array::Alloc() to be inlined.\n- Simplify the array size overflow check.\n- Turn fill_usable into a template parameter.\n- Remove a branch in Array::DataOffset() and avoid\n  Primitive::ComponentSize(), which has a switch, in the array alloc\n  path.\n- Strength reductions in the array size computation by using component\n  size shifts instead of component sizes. Store component size shift\n  in the upper 16 bits of primitive_type field.\n- Speedup: ~4% (3435-\u003e3284) in MemAllocTest on N4.\n\nBug: 9986565\n\nChange-Id: I4b142ffac4ab8b5b915836f1660a949d6442344c\n"
    },
    {
      "commit": "7b078e8c04f3e1451dbdd18543c8b9692b5b067e",
      "tree": "414229c6b87eb20ea24c40780752da5a3999a49a",
      "parents": [
        "f79ba17defbd9342e44ab9f3de0807054673d3c9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 14:44:24 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 12 14:57:53 2014 -0700"
      },
      "message": "Compile time performance improvements focusing on interpret-only.\n\nReduce virtual method dispatch in the method verifier and make more code\ninline-able.\nAdd a StringPiece with const char* equality operator to avoid redundant\nStringPieces and strlens.\nRemove back link from register line to verifier and pass as argument to reduce\nsize of RegisterLine.\nRemove instruction length from instruction flags and compute from the\ninstruction, again to reduce size.\nAdd suspend checks to resolve and verify to allow for more easy monitor\ninflation and reduce contention on Locks::thread_list_suspend_thread_lock_.\nChange ThrowEarlierClassFailure to throw pre-allocated exception.\nAvoid calls to Thread::Current() by passing self.\nTemplate specialize IsValidClassName.\nMake ANR reporting with SIGQUIT run using checkpoints rather than suspending\nall threads. This makes the stack/lock analysis less lock error prone.\nExtra Barrier assertions and condition variable time out is now returned as a\nboolean both from Barrier and ConditionVariable::Wait.\n\n2 threaded host x86-64 interpret-only numbers from 341 samples:\nBefore change: Avg 176.137ms 99% CI 3.468ms to 1060.770ms\nAfter change: Avg 139.163% 99% CI 3.027ms to 838.257ms\nReduction in average compile time after change is 20.9%.\nSlow-down without change is 26.5%.\n\nBug: 17471626 - Fix bug where RegTypeCache::JavaLangObject/String/Class/Throwable\ncould return unresolved type when class loading is disabled.\nBug: 17398101\n\nChange-Id: Id59ce3cc520701c6ecf612f7152498107bc40684\n"
    },
    {
      "commit": "524507a9265e8e5e2b040c113d903c815748245a",
      "tree": "7f11e3d63925531efaf1a2a042cf03b3c444973a",
      "parents": [
        "83c115930b403db2b6b38d9dcb4828e31feb792f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 27 15:28:28 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 28 11:38:41 2014 -0700"
      },
      "message": "Prevent exception bugs in class linker\n\nThere were some places that could throw exceptions but still succeed.\nThis caused the allocation entrypoints to occasionally allocate a\nheap object with a pending exception.\nAlso added some additional AssertNoExceptionPending.\n\nBug: 17164348\n\n(cherry picked from commit 58c016c3f85d6d5496cea25325778de3a8d9a3ac)\n\nChange-Id: Id9918fa8f1a5d713b847cb95cdade925ff80a826\n"
    },
    {
      "commit": "269c3360f8e69e9faf8bc8a51fd87ae7adadfb59",
      "tree": "e6b96c5a139999feb13176f6a12f034cba6dd9f5",
      "parents": [
        "2524ffd731a3d173c9b0ad8f7b3e4a89d692aab6",
        "58a5af8568d224ca7eccf2483396ff9862f8d1ee"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 06 22:58:25 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 06 17:20:04 2014 +0000"
      },
      "message": "Merge \"ART: Add guards to the dex cache and its shortcuts\""
    },
    {
      "commit": "58a5af8568d224ca7eccf2483396ff9862f8d1ee",
      "tree": "4dfac17316970040e079244523b9b1e2ea163f05",
      "parents": [
        "1b192268f167f603fc372f02f9067f3ce5d82daf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 31 16:23:49 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 06 15:57:05 2014 -0700"
      },
      "message": "ART: Add guards to the dex cache and its shortcuts\n\nDo not return fields, methods or classes if the (declaring) class is\nerroneous.\n\nBug: 16692788\nChange-Id: If43c2414ad0eb22db5eba7cf66396c7f16c26597\n"
    },
    {
      "commit": "eb1e929c0d6e312beb313ec108e611f1e74ff45c",
      "tree": "cfed2ffd201efd68b5d184e536dff0bb270c6c61",
      "parents": [
        "7aaa8dbfbcde7f58564b42044892891559669838"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Aug 06 12:41:15 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Aug 06 12:41:15 2014 -0700"
      },
      "message": "Implement TLAB fast paths in artAllocObjectFromCode.\n\nGSS/TLAB GC speedup on N4 (ms):\n\nMemAllocTest 2963 -\u003e 2792\nBinaryTrees  2205 -\u003e 2113\n\nAlso, measured wth -XX:IgnoreMaxFootprint to invoke GC less often\n(only when the bump pointer space is filled rather than based on the\ntarget utilization):\n\nMemAllocTest 2707 -\u003e 2590\nBinaryTrees  2023 -\u003e 1906\n\nTODO: implement fast paths for array allocations.\n\nBug: 9986565\nChange-Id: I73ff6327b229704f8ae5924ae9b747443c229841\n"
    },
    {
      "commit": "2cdbad7c62f126581ec5177104de961c4d71adaa",
      "tree": "6283b87bc9b65249decac9b0e38fe396782b8d7e",
      "parents": [
        "c62944adcd427dca55489d234428da47c43a0aab"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Jul 16 10:44:41 2014 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Jul 22 15:03:50 2014 -0700"
      },
      "message": "Set vtable in class object to null after linking.\n\nThis is follow-up work of embedding imt and vtable for\nfaster interface/virtual call dispatching.\nOnce vtable becomes embedded, the original vtable is nulled.\n\nChange-Id: I307696657d1e283654169dbecb8f7815c42bbabc\n"
    },
    {
      "commit": "e5877a12c30afe10a5c6a1afaff7a47ef44a2a5f",
      "tree": "161535abb39394fc3b1d96d31625ba7eb61c8497",
      "parents": [
        "aab012d6196bd29b3167963ec8acb0b9780672b2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 12:06:35 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 12:06:35 2014 -0700"
      },
      "message": "Fix x86 build.\n\nAlso fix attributes/annotalysis on entrypoint_utils functions now we have\nclang that is smarter wrt warnings than GCC.\n\nChange-Id: I69257b4ad9a27d07acbc973d21a1cfa4260a8ed6\n"
    },
    {
      "commit": "22d5e735f403c57525fe868304c7123f0ce66399",
      "tree": "2458684efa56f0b800dd75a9dedd0449f76f581f",
      "parents": [
        "fbde4dd1cb6db729e3f3ee5bdae0cdd824d73054"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 22:23:51 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 06:13:46 2014 -0700"
      },
      "message": "Remove object_utils.h.\n\nBreak into object_lock, field_helper and method_helper.\nClean up header files following this.\nAlso tidy some of the Handle code in response to compiler errors when resolving\nthe changes in this CL.\n\nChange-Id: I73e63015a0f02a754d0866bfaf58208aebcaa295\n"
    },
    {
      "commit": "98d1cc8033251c93786e2fa8c59a2e555a9493be",
      "tree": "f0a76b8fff060ee484af09028da65a8339d57057",
      "parents": [
        "aebf3cda094f34cf846d19a7724bdc8005267c95"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 15 17:02:16 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jul 11 17:17:10 2014 -0700"
      },
      "message": "Improve performance of invokevirtual/invokeinterface with embedded imt/vtable\n\nAdd an embedded version of imt/vtable into class object. Both tables start at\nfixed offset within class object so method/entry point can be loaded directly\nfrom class object for invokeinterface/invokevirtual.\n\nBug: 8142917\nChange-Id: I4240d58cfbe9250107c95c0708c036854c455968\n"
    }
  ]
}
