)]}'
{
  "log": [
    {
      "commit": "62629598f845c2efec0dff652e440e8fbcce4b8a",
      "tree": "7af96934e7ca5313787a9b328e85e6606645c4e5",
      "parents": [
        "d77abd9e128f60917f712b8da84bab46e3ed5870"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 16:08:31 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 16:09:07 2019 -0800"
      },
      "message": "ART: Some more IWYU in common headers\n\nForward-declare a few structs and classes. Remove unused includes.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I21215cee39269b373784d6a82577039322a4a950\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "97b281129e556e6f3a91e9893f71ca45e7715e3f",
      "tree": "3e90f0148f3f6d073a29b0bfcd774e0689fb9fb4",
      "parents": [
        "0bbac3089b5637103585b04774eea3d959c4f24d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 04 09:09:12 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 06 11:37:19 2018 -0800"
      },
      "message": "ART: Clean up base/utils.h\n\nRemove dead code. Remove unnecessary includes.\n\nBug: 115837065\nBug: 119869270\nTest: m\nChange-Id: Ieb07546e9ebd476b7b1459fb8dd6cf5545d0af20\n"
    },
    {
      "commit": "e36e7f2226e4e08b7a7094f78cb80bbe0e729c2b",
      "tree": "0787ae19a232728121a60791f3a18094529120f1",
      "parents": [
        "244470afafdb1c5aba17507ef793d316b9c4d038"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 14 14:21:23 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Nov 27 17:31:01 2018 +0000"
      },
      "message": "Store ImtIndex in ArtMethod.\n\nThis avoids recalculation and reduces pressure on the thread local cache.\n\nThis halves the time we spend hashing from 2% to 1% (maps on device).\n\nTest: ./art/test.py -b --host --64\nChange-Id: I2407bd9c222de4ddc6eea938908a1ac6d7abc35b\n"
    },
    {
      "commit": "85865697ff9fabede3d64ff64cde72727c3fc4c1",
      "tree": "0c67639c4c286149fa3f06f5f412683e39014790",
      "parents": [
        "b321ac28f726a7ed41f277382d85702ffdfbe00f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 30 17:26:20 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 16 11:11:20 2018 +0000"
      },
      "message": "Runtime flags only for fast/slow hiddenapi path\n\nWith more flags being supported in the dex file, stop copying all of\nthem into ArtField/ArtMethod access flags. Instead, store the\ninformation needed to figure out whether to enter the slow path and\nretrieve full access flags from dex or not.\n\nAt the moment, the only runtime flag is kAccPublicApi assigned to all\nclass members on the whitelist.\n\nThe CL also moves hardcoded API membership of intrinsics out of\nArtMethod and into hidden_api.h, and moves ArtMethod::SetIntrinsic\ninto the .cc file.\n\nTest: m test-art\nChange-Id: Ia1cc05060dbc22341768161dfd8697c6158e803a\n"
    },
    {
      "commit": "cb58b07d233c5f8e910e6e5946da8ac4ec3099f5",
      "tree": "bd19cb9a44555adf51e2d145c322a592c6cd3527",
      "parents": [
        "e2acc339ede3c620a476827880cf68d044dcd53e"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Fri Oct 13 12:06:56 2017 +0100"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Fri Nov 02 10:07:12 2018 +0000"
      },
      "message": "ART: Add CRC32.udate(int,int) intrinsic for ARM64\n\nUse crc32 instructions for java.util.zip.CRC32.update(int,int).\n\nNote that CRC32 is an optional feature on ARMv8, this intrinsic\nis only enabled for devices with CRC32 intruction support.\n\nOriginal author: tim.zhang@linaro.org\n\nPerformance improvements in CRC32Bench.UpdateInt:\nPixel 2: 22.8x\nNexus 6P:\n  little core: 28.3x\n  big core   : 21.6x\n\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing --jit --interpreter\nTest: 580-crc32\n\nChange-Id: I1a9bc2befd2934b04103a27ce05806e919874070\n"
    },
    {
      "commit": "47cd272d15f41109b3dacb21cfa509d18a03e011",
      "tree": "f2693adde283631362b3acc2c573d7280632621f",
      "parents": [
        "6e32b0059b4c3073c601018da3ca315ad568525a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 23 12:50:02 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 30 11:04:29 2018 +0000"
      },
      "message": "Remove HiddenApiAccessFlags, move content to hiddenapi::\n\nHiddenapi code in runtime/ has all code in the hiddenapi:: namespace\ninstead of using a class as a wrapper. Refactor HiddenApiAccessFlags\nfor consistency. Also turn ApiList into `enum class` for stricter\ntype checks.\n\nTest: m test-art\nChange-Id: Ifb3c443ea43860476abd4fd3d4934cd14e2cdcc1\n"
    },
    {
      "commit": "64a1321f95e104401e96914716e8b79e2cfb1d60",
      "tree": "fc1946684d1e28b2795a84bb36fa09686f709628",
      "parents": [
        "f07f50e48a05be6fd1554a38932aefebb5cd2958"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 11 11:10:18 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 11 11:43:23 2018 +0100"
      },
      "message": "Revert \"Update hidden API lists for intrinsics\"\n\nThis reverts commit d1f10c3f6a215b72d5db58500630a8b8002155f6.\nWe saw app crashes due to stricter classification of non-SDK APIs.\n\nBug: 115284625\nBug: 113881436\nTest: phone boots\nChange-Id: Iff294aba35e96341e4a8cb4809ba8dbbc46e5a9d\n"
    },
    {
      "commit": "d1f10c3f6a215b72d5db58500630a8b8002155f6",
      "tree": "503d47e33dd168ecc00751078120cff3e34bf71f",
      "parents": [
        "4613c8a3a549213240f3ffc46514b600d872938e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Sep 06 15:13:47 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Sep 06 15:13:47 2018 +0100"
      },
      "message": "Update hidden API lists for intrinsics\n\nChanges in dark greylist generation move some intrinsics to blacklist.\n\nBug: 113881436\nTest: phone boots\nChange-Id: Id8f44eb915f0050bb021353725771695b3d5e277\n"
    },
    {
      "commit": "bb57032648e17244fc857e54e8dd69435cddf30f",
      "tree": "eca547c3a54a1c2770b85a5335b6904ab4e168f9",
      "parents": [
        "6f776a0ce4fd030c56a5f706ada60401f2f15074"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Aug 01 09:26:04 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 02 13:35:01 2018 +0100"
      },
      "message": "Revert^2: Hardcode API list of newly hidden intrinsics\n\nMore intrinsics are now on non-SDK API lists. Hard code their API list\nmembership information.\n\nBug: 79432238\nBug: 79409988\nBug: 76424618\nTest: m\nMerged-In: I8eaf2710ba71a350b29b97ff6fd59610ce562625\nChange-Id: I8eaf2710ba71a350b29b97ff6fd59610ce562625\n(cherry picked from commit 7e8eb24341aba7926f5c277b63e526e730476dcc)\n"
    },
    {
      "commit": "c945e0d410ca8d4e9ba09272e8727a3192f1e449",
      "tree": "b010aeed33bb66bbaf9af355f21dfad2f9232dea",
      "parents": [
        "d93e374e273dd45f5d829399da1d4201bf46057e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 18 17:26:45 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 19 16:23:48 2018 +0100"
      },
      "message": "Remove ArtMethod\u0027s declaring class state checks.\n\nThis check was not very useful because the Class is already\nin a state to pass the check when we\u0027re constructing the\nArtMethod and it can never revert to an earlier state, so\nthe check is essentially a weak protection against GC bugs.\nBesides not being very useful, the check had the ability to\ninvalidate ObjPtr\u003c\u003e cookies (when called in non-runnable\nstate), making it difficult to fully ObjPtr\u003c\u003e-ify the code.\n\nAlso remove a lot of kReadBarrierOption template parameters\nwhich were needed specifically for this check. This removes\nunnecessary maintence burden as shown by past bugs dealing\nwith carefully adding those parameters where necessary.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 74373650\nBug: 31113334\nChange-Id: I87f2999fc4e7c27b5c2307139269b4b5f6649d16\n"
    },
    {
      "commit": "d93e374e273dd45f5d829399da1d4201bf46057e",
      "tree": "280dc72b2aec4696bbc35ad39ca8d3479107380e",
      "parents": [
        "7f7f9d3991f3a55da8934a3b72890d4776373598"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 18 10:58:13 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 19 16:04:38 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify ArtMethod and mirror::Method.\n\nAnd clean up some forgotten things after old CLs.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I8af0e845c24d674d0efab21d80c29949b1cc0593\n"
    },
    {
      "commit": "18090d118bfb04620aeef719e2d7780c26298bf8",
      "tree": "040e5195f0278c9bc846d5543c0e36771ffc5b48",
      "parents": [
        "9ddef18ae95859a985e7a0de7e22999fcbc28e07"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 16:53:12 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 04 17:52:35 2018 +0100"
      },
      "message": "Refactor String resolution.\n\nUse the same pattern as type resolution and avoid some\nunnecessary read barriers in the fast path. Consolidate\nnaming between ArtField and ArtMethod.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: Iea69129085f61f04a4add09edd0eadbb7ac9ecb2\n"
    },
    {
      "commit": "09c5ca40635faee00f40f6ca0581dd475efd545e",
      "tree": "5fb13e8eebec283d8c41ce874fbd471f93915fd1",
      "parents": [
        "317892b756cd2a87c01928b09e99e020c86dea10"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 31 15:15:31 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 11:16:58 2018 +0100"
      },
      "message": "Clean up class resolution and lookup.\n\nSimplify the code and avoid read barriers when appropriate.\nRelax class status check in ArtField::GetDeclaringClass()\nbecause we can see ClassStatus::kIdx from the from-space\nclass object for kReadBarrierOption\u003dkWithoutReadBarrier.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I83886a64fe5a99a1c3c30eab3b35dae449e6b4bc\n"
    },
    {
      "commit": "166546c3579b7a9deb413f8e44ad94b8ed41335b",
      "tree": "766450bb9576909e925c5e7d5e1b81c25dd05839",
      "parents": [
        "2e6f69c704202d41f0ab5ab0aa65583a26184e51"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 23 13:50:38 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:32:23 2018 +0100"
      },
      "message": "Fix hidden API flags decoding for intrinsics\n\nHidden API decision logic would try to decode the access flags of\nintrinsics directly, bypassing the override in ArtMethod. This patch\nget hidden_api.h to use the same code path.\n\nThis also fixes CtsHiddenApiDiscoveryTestCases where the access flags\nof blacklisted APIs are tested. VarHandle intrinsics would not pass.\n\nBug: 64382372\nBug: 72430785\nBug: 78230396\nTest: cts-tradefed run cts --module CtsHiddenApiDiscoveryTestCases\nMerged-In: I080313dd91bbee2d7d98b00c02e224974b344c01\nChange-Id: I080313dd91bbee2d7d98b00c02e224974b344c01\n(cherry picked from commit 14c212a44ac9a3ad12025ebf30836129669fa949)\n"
    },
    {
      "commit": "2e6f69c704202d41f0ab5ab0aa65583a26184e51",
      "tree": "a9fc475db54eca326fa46eebf90a3f1399fa7d1c",
      "parents": [
        "1724520ec2788838413b20672f73afa5a00b0d4c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 19 12:41:04 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:32:14 2018 +0100"
      },
      "message": "Set hidden API flags of intrinsics\n\nIntrinsics overwrite the hidden API access flags of the respective Java\nmethod, which is why we need to hardcode their API list membership.\n\nVarHandle intrinsics are blacklisted because they could be used to\nbypass hidden API checks and given they are new in P, should not be\nused by anybody except tests (that do not enforce API checks).\n\nThe remaining intrinsics which happen to be @hide are put on light\ngreylist. We used to put them on whitelist implicitly, hence never\nsaw warnings about them. To be safe, we put them on light grey.\n\nNote that these are set even for the core image that currently does\nnot have hidden API flags. That is fine because (a) VarHandles can\nstill be tested, and (b) light greylist membership may print warnings\nbut will not change the semantics.\n\nBug: 64382372\nBug: 77733081\nTest: make\nMerged-In: Ia9a7765260acb533560676e7dfcd51065cfb247d\nChange-Id: Ia9a7765260acb533560676e7dfcd51065cfb247d\n(cherry picked from commit 49dded0c15dbf3d7c3920ae4744c93c2d6081202)\n"
    },
    {
      "commit": "be4c2bd892bd167a50b4dfa7133e70a809197698",
      "tree": "150898533382fb98c160e265a5f31f66ded754f0",
      "parents": [
        "bfce631960ae2ab381180beb55cf34ab3b445aaa"
      ],
      "author": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Thu Feb 01 19:09:59 2018 +0300"
      },
      "committer": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Tue Mar 13 17:01:21 2018 +0300"
      },
      "message": "Fix dangling SingleImplementations left after class unloading\n\nTest: make test-art-host, manual using sample code\n\nbug: 73143991\n\nChange-Id: I4d56b39c69d4ed60266a8b90b9e9d18fba7b8227\n"
    },
    {
      "commit": "c431b9dc4b23cc950eb313695258df5d89f53b22",
      "tree": "422273559c3ae52caff0c6b1cf1a62a8312f0e26",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 02 12:01:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 05 13:58:20 2018 -0800"
      },
      "message": "Move most of runtime/base to libartbase/base\n\nEnforce the layering that code in runtime/base should not depend on\nruntime by separating it into libartbase.  Some of the code in\nruntime/base depends on the Runtime class, so it cannot be moved yet.\nAlso, some of the tests depend on CommonRuntimeTest, which itself needs\nto be factored (in a subsequent CL).\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host\n\nChange-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2\n"
    },
    {
      "commit": "58143d2c47734c46c1fa4855cb603c24f2d15454",
      "tree": "261bd69b379e5a39e39e3c15947960e53f389d98",
      "parents": [
        "a1b035b963d091ca6824f285c33de69c6e16ac77"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 20 08:44:20 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 05 15:21:52 2018 +0000"
      },
      "message": "ART: Fixes for constructor parameter annotations\n\nSynthesize empty parameter annotations for implicit parameters on\nconstructors. Reflective methods for recovering parameter annotations\nexpect them to be present though they may not be present in the DEX file.\n\nBug: b/68033708\nTest: art/test/run-test --host 715\n\nChange-Id: I0827c7e71ff7c7e044fc9dd6c5aac639a0e1a4c6\n"
    },
    {
      "commit": "67bf42e89592c3a1c648f927f2ce3ccb189a1161",
      "tree": "054d5b7adf7cc62d4d2a2118a70c0fbdd1751610",
      "parents": [
        "d961043ff1dd6fddb68aa90c1f939cfafec24219"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Feb 26 16:43:04 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 28 15:08:21 2018 -0800"
      },
      "message": "Header library to remove dependence on runtime/\n\nAdd a new header library to remove libdexfile and others\u0027 dependence on\nruntime (typically runtime/base) includes in libdexfile.  Also a small step\nto tease dexlayout and profman away from relying on these as well.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n\nChange-Id: I38e2fe399a75f4bc6318c77a71954c00ea73ec2b\n"
    },
    {
      "commit": "fa854e4834c383daafd240902ecb291ecfdad7b6",
      "tree": "ac3d740dc0c7c6e91b286f467c3b111b178822c5",
      "parents": [
        "bae3065e57e2e82aa29d6207312c5ba38cff7426"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Feb 07 13:09:55 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Feb 07 14:27:57 2018 +0000"
      },
      "message": "Visit targets of proxy methods when visiting thread roots.\n\nThe target of a non-static proxy method (`this` object), stored in the\nproxy method\u0027s stack frame, needs to be visited as GC root. This is\nespecially important in the case of a moving GC, where the proxy\ninstance may be moved like any object.\n\nFix initially provided by Robert Vollmer.\n\nTest: m test-art-host\nTest: art/test/testrunner/testrunner.py --gcstress -t 1939-proxy-frames\nTest: art/test/testrunner/testrunner.py --gcstress -t 1914-get-local-instance\nBug: 70216372\nBug: 67679263\nChange-Id: Iea27a8eba51ccd9c9055efaf6b263892830170b5\n"
    },
    {
      "commit": "da244c9249149655b303950ce3f432ce1d47a2e0",
      "tree": "fc92772c0465c1008869d39542f456076742aa90",
      "parents": [
        "2f8ad4bc3284358575aad06822cac1650512cb1b",
        "0225f8e2939a9340cb7dcebfcfe7996a2bd9bce9"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 01 09:27:46 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 01 09:27:46 2018 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Make libdexfile build independent of runtime dir\"\"\""
    },
    {
      "commit": "02e33ab15593a5944e711f78f8f5e1d81a94c856",
      "tree": "bb0c6354518f21af959deae8b839f4b45e4efeaa",
      "parents": [
        "f346af51a5d44ee0a3cd26e7e0e1b28ec1c5579f",
        "aa129ff1bffdd6cbfe159f9381ba0babf42dddbd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 31 17:02:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 31 17:02:31 2018 +0000"
      },
      "message": "Merge \"Do not DCHECK intrinsics with hidden API flags\""
    },
    {
      "commit": "0225f8e2939a9340cb7dcebfcfe7996a2bd9bce9",
      "tree": "fd32362dff4ecdc8ff8b0d800a1b46fb0d9d0104",
      "parents": [
        "c7e546ff3963a1d51b1f100d308db735bd19f736"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 31 08:52:24 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 31 01:24:53 2018 -0800"
      },
      "message": "Revert \"Revert \"Make libdexfile build independent of runtime dir\"\"\n\nThis reverts commit 787784f9effb126b5d0d3dc97d544c4a477b5daf.\n\nReason for revert: Bot configuration issue.\n\nChange-Id: I6a10bb4a9571f89c7e4dd095f9157e830a44e2de\nBug: 22322814\nTest: make -j 50 checkbuild\n"
    },
    {
      "commit": "787784f9effb126b5d0d3dc97d544c4a477b5daf",
      "tree": "1ff6d9fd284a4dd2a337165dff20e71137997c9d",
      "parents": [
        "b40b7e73469339a6b667b4a2e2b8690112a74dc9"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 18:48:51 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 18:48:51 2018 +0000"
      },
      "message": "Revert \"Make libdexfile build independent of runtime dir\"\n\nThis reverts commit b40b7e73469339a6b667b4a2e2b8690112a74dc9.\n\nReason for revert: on device libdexfile.so missing\n\nChange-Id: I9bd61a98bef870400580e8c991cb061d3f57fa72\n"
    },
    {
      "commit": "aa129ff1bffdd6cbfe159f9381ba0babf42dddbd",
      "tree": "92264351aa2f08d0e8944884ae4b1c5536f4b08f",
      "parents": [
        "d2b5229453af661572f0c76ac08dfd3f52727d5b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 30 16:11:02 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 30 18:26:23 2018 +0000"
      },
      "message": "Do not DCHECK intrinsics with hidden API flags\n\nSwitching an ArtMethod into an intrinsic wipes its hidden API flags.\nThose with flags therefore need to be special cased. Disable the\nDCHECK for these for the moment.\n\nBug: 64382372\nTest: make\nChange-Id: I8ea3f53a1a86fd7a2f82b215ca068eeafec88c49\n"
    },
    {
      "commit": "b40b7e73469339a6b667b4a2e2b8690112a74dc9",
      "tree": "7e8a34d9c7894c4c946f674f19f0a0a512b95184",
      "parents": [
        "9690ad794b324ba54e936608881ac0f62538b97a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 25 17:11:07 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 01:17:58 2018 -0800"
      },
      "message": "Make libdexfile build independent of runtime dir\n\nRemove libdexfile\u0027s dependency on utils.cc and move utf.cc into\n/dex.  Remove libdexfile\u0027s constituent sources from libart and\nuse libdexfile wherever libart is. Also remove some ART-specific\ninterfaces.  Libdexfile\u0027s tests remain to be converted, plus\nmoving the files to a new directory peer to runtime/.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ifaf695216e4a0e43d3aa377984d933f7a2a243c2\n"
    },
    {
      "commit": "8c0961f9e061ee4b04c1c4ba8ad5cca13bcf884d",
      "tree": "f6e5a970a6bcc0935e150cb6c28a520bf31ba964",
      "parents": [
        "2b1a21ed3581f77f34d582507177ebce33565534"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 23 16:11:38 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 24 09:24:29 2018 -0800"
      },
      "message": "Move missed files to libdexfile\n\nReduce the dependencies on utf and utils in preparation for separate\ndirectory.\n\nBug: 22322814\nTest: make -j 50 test-art-host\n      make -j 50 dexdump2 dexlist\n\nChange-Id: Icdecf895dafec63ef903514eef79d459abc14925\n"
    },
    {
      "commit": "8714435022757567aa078601f54244b8339bbed1",
      "tree": "2039e39b1b2737d7bad2a68ef1088c8173797082",
      "parents": [
        "e57043081e6b091a9fd23a84043373148ae72f1f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 24 12:50:01 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 24 13:12:19 2018 +0000"
      },
      "message": "Disable DCHECK for an intrinsic with hidden API flags\n\nWe should hardcode the API list membership of intrinsics, but not for\ncore image. This will be addressed in the future. Skip the DCHECK for\nnow.\n\nBug: 72430785\nBug: 64382372\nTest: make\nChange-Id: I10066430687a7509ea934eb39426c9fb546dbcb7\n"
    },
    {
      "commit": "f6a8a557e0e3099a2c458a81a4b48623989330a5",
      "tree": "e82439e60546643d34b888fd79c04ae7b4d899c0",
      "parents": [
        "1372c9772d37f43147d3791c998173811f04594c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 15 18:10:50 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 18 14:47:33 2018 +0000"
      },
      "message": "Set runtime hidden API access flags\n\nThe hiddenapi tool encodes new access flags into boot class path\ndex files, but we do not want to use those at runtime. They are\ncumbersome to decode and interfere with other flags.\n\nThis patch introduces new runtime access flags kAccHiddenApiBits,\ntwo consecutive bits in the space occupied by intrinsic ordinals\nwhich are used to encode the four categories of APIs in\nHiddenApiAccessFlags::ApiList. ClassLinker converts one encoding\nto the other when a new method/field is loaded from DexFile.\n\nDexHiddenAccessFlags have been made an internal class of new\nHiddenApiAccessFlags class which contains all the code related\nto encoding/decoding these flags for both DexFile and runtime.\n\nTest: m test-art-host\nBug: 64382372\nChange-Id: Ie055dc3440c44e8815030e652f08d9ee3dba69e5\n"
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "4557b3858a66aa20e42bce937e1f0620aad880a2",
      "tree": "8f34d8f014b11f17c6351bb955fcc74c940b8d16",
      "parents": [
        "90f20973356900e340998e8e2b34230e5c4c8fb0"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 03 11:47:54 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 03 12:45:40 2018 +0000"
      },
      "message": "ART: Rename Atomic::CompareExchange methods\n\nRenames Atomic::CompareExchange methods to Atomic::CompareAndSet\nequivalents. These methods return a boolean and do not get the witness\nvalue. This makes space for Atomic::CompareAndExchange methods in a\nlater commit that will return a boolean and get the witness value.\n\nThis is pre-work for VarHandle accessors which require both forms.\n\nBug: 65872996\nTest: art/test.py --host -j32\nChange-Id: I9c691250e5556cbfde7811381b06d2920247f1a1\n"
    },
    {
      "commit": "808c7a57bb913b13c22884f57cdacd59bf1fdb3f",
      "tree": "d7f0d7cabaac5a7646c25bae584a82a9aa279cc0",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 15 11:19:33 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 22 09:41:17 2017 -0800"
      },
      "message": "Make CodeItem fields private\n\nMake code item fields private and use accessors. Added a hand full of\nfriend classes to reduce the size of the change.\n\nChanged default to be nullable and removed CreateNullable.\nCreateNullable was a bad API since it defaulted to the unsafe, may\nadd a CreateNonNullable if it\u0027s important for performance.\n\nMotivation:\nHave a different layout for code items in cdex.\n\nBug: 63756964\nTest: test-art-host-gtest\nTest: test/testrunner/testrunner.py --host\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nChange-Id: I42bc7435e20358682075cb6de52713b595f95bf9\n"
    },
    {
      "commit": "666ee3d7c6039c80e75287e311895bd6a9b01e9f",
      "tree": "5e65f39ff7cc83af4be3b691c247d7348052f854",
      "parents": [
        "890111968fbd3f5ae528d97e42984c12a3dd27bd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 11 18:37:36 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 12 13:48:02 2017 +0000"
      },
      "message": "Do not pass DexFile to ClassLinker::Lookup/ResolveType().\n\nThe DexFile can be easily retrieved from the DexCache,\nso reduce the number of arguments that need to be passed.\n\nAlso refactor the code to avoid doing the DexCache lookup\ntwice and avoid unnecessary read barriers in the initial\nDexCache lookup (also for Lookup/ResolveField()).\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Idea9aa42b6a5bade947e93e330b1abdb9d11b2da\n"
    },
    {
      "commit": "57943810cfc789da890d73621741729da5feaaf8",
      "tree": "367677a982a45af98ffe3e79543615875e8550b4",
      "parents": [
        "d5153627778e71ef68b510ce03c77467fa4d85bd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 21:39:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Replace base/logging with android-base/logging\n\nReplace wherever possible. ART\u0027s base/logging is now mainly VLOG\nand initialization code that is unnecessary to pull in and makes\nchanges to verbose logging more painful than they have to be.\n\nTest: m test-art-host\nChange-Id: I3e3a4672ba5b621e57590a526c7d1c8b749e4f6e\n"
    },
    {
      "commit": "2196c651ecc77e49992c6c329dfce45f78ff46cb",
      "tree": "4eb151632fc7b851101b4264286ce5e900fa06b5",
      "parents": [
        "dc93cac66f1db225474cec5bf0350fd7a148085e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 30 16:16:07 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 30 16:20:39 2017 +0000"
      },
      "message": "Revert^4 \"JIT JNI stubs.\"\n\nThe original CL,\n    https://android-review.googlesource.com/513417 ,\nhas a bug fixed in the Revert^2,\n    https://android-review.googlesource.com/550579 ,\nand this Revert^4 adds two more fixes:\n    - fix obsolete native method getting interpreter\n      entrypoint in 980-redefine-object,\n    - fix random JIT GC flakiness in 667-jit-jni-stub.\n\nTest: testrunner.py --host --prebuild --no-relocate \\\n      --no-image --jit -t 980-redefine-object\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 056d7756152bb3ced81dd57781be5028428ce2bd.\n\nChange-Id: Ic778686168b90e29816fd526e23141dcbe5ea880\n"
    },
    {
      "commit": "056d7756152bb3ced81dd57781be5028428ce2bd",
      "tree": "154ae8968a450a2e02d88207fa09e380fd380553",
      "parents": [
        "e7441631a11e2e07ce863255a59ee4de29c6a56f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 30 09:12:13 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 30 09:12:13 2017 +0000"
      },
      "message": "Revert \"Revert \"Revert \"JIT JNI stubs.\"\"\"\n\nStill seeing occasional failures on 667-jit-jni-stub\n\nBug: 65574695\nBug: 69843562\n\nThis reverts commit e7441631a11e2e07ce863255a59ee4de29c6a56f.\n\nChange-Id: I3db751679ef7bdf31c933208aaffe4fac749a14b\n"
    },
    {
      "commit": "e7441631a11e2e07ce863255a59ee4de29c6a56f",
      "tree": "a0488fac018ea391d01b751b7254719937bdee8f",
      "parents": [
        "aa25db7d2a6f7f507c27ce49c99a33daf3059f8f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 29 13:00:56 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 29 14:04:26 2017 +0000"
      },
      "message": "Revert \"Revert \"JIT JNI stubs.\"\"\n\nThe original CL,\n    https://android-review.googlesource.com/513417 ,\nhad a bug for class unloading where a read barrier was\nexecuted at the wrong time from\n    ConcurrentCopying::MarkingPhase() -\u003e\n    ClassLinker::CleanupClassLoaders() -\u003e\n    ClassLinker::DeleteClassLoader() -\u003e\n    JitCodeCache::RemoveMethodsIn() -\u003e\n    JitCodeCache::JniStubKey::UpdateShorty() -\u003e\n    ArtMethod::GetShorty().\nThis has been fixed by removing sources of the read barrier\nfrom ArtMethod::GetShorty().\n\nTest: testrunner.py --host --prebuild --jit --no-relocate \\\n      --no-image -t 998-redefine-use-after-free\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 47d31853e16a95393d760e6be2ffeeb0193f94a1.\n\nChange-Id: I06e7a15b09d9ff11cde15a7d1529644bfeca15e0\n"
    },
    {
      "commit": "b3e7bcc737a5af57549e47370523912e31e434f7",
      "tree": "5547f785e167696747ae2e0bc2b3ea866e7b9c7f",
      "parents": [
        "a16fec549253638268dda3d83e6e34a500cbfc1c",
        "69147f165efaa9da152bb37da3a16dd5d8c6cf3c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 10 17:03:43 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 10 17:03:43 2017 +0000"
      },
      "message": "Merge \"Add code item accessor helper classes\""
    },
    {
      "commit": "b0a6aeee250945b1d156ebab94053380f2e5a3c5",
      "tree": "7ddb52bb20997b8f1c81be3df2250949a088e697",
      "parents": [
        "0db16e00e3927445585a588499731c58c1ae1bef"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 27 10:34:04 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 10 08:30:36 2017 +0000"
      },
      "message": "Record @{Fast,Critical}Native in method\u0027s access flags.\n\nRepurpose the old kAccFastNative flag (which wasn\u0027t actually\nused for some time) and define a new kAccCriticalNative flag\nto record the native method\u0027s annotation-based kind. This\navoids repeated determination of the kind from GenericJNI.\nAnd making two transitions to runnable and back (using the\nScopedObjectAccess) from GenericJniMethodEnd() for normal\nnative methods just to determine that we need to transition\nto runnable was really weird.\n\nSince the IsFastNative() function now records the presence\nof the @FastNative annotation, synchronized @FastNative\nmethod calls now avoid thread state transitions.\n\nWhen initializing the Runtime without a boot image, the\nWellKnowClasses may not yet be initialized, so relax the\nDCheckNativeAnnotation() to take that into account.\n\nAlso revert\n    https://android-review.googlesource.com/509715\nas the annotation checks are now much faster.\n\nBug: 65574695\nBug: 35644369\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I2fc5ba192b9ce710a0e9202977b4f9543e387efe\n"
    },
    {
      "commit": "69147f165efaa9da152bb37da3a16dd5d8c6cf3c",
      "tree": "25dbec549b8c06cf24729a577c76ef0b6d3d4c7f",
      "parents": [
        "2202d56061941b4fecbdb018d84bcefb05b6c683"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 06 20:02:24 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 09 19:06:10 2017 -0800"
      },
      "message": "Add code item accessor helper classes\n\nAdd classes to abstract accesses to code item data. These classes\nhandle both standard dex and compact dex.\n\nAdded:\n- CodeItemInstructionsAccessor to handle code item instructions.\n- CodeItemDataAccessor to handle code item data excluding debug info.\n\nMoved inline_method_analyzer to use the new classes to test the new\nAPIs.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I9926acb77b81fa64ed4a3b49b7bed1aab30a0f33\n"
    },
    {
      "commit": "4098a7ad22535212c193f5c66eaf8a7387e1b7fc",
      "tree": "b6fbfef133515376185b769ea2c9625a6a637a04",
      "parents": [
        "383684585824efa60350b208b92362efab3962eb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 06 16:00:51 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 06 16:24:06 2017 +0000"
      },
      "message": "Refactor ArtField::GetType\u003c\u003e() as {Lookup,Resolve}Type().\n\nAnd add no thread suspension assertion to LookupType()\nas well as ArtMethod::LookupResolvedClassFromTypeIndex().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: If1541ccb0aafeabb6d1dd5566f10afcac98a2ef1\n"
    },
    {
      "commit": "cfcc9cfb44bab79f7381bcc4bfd9bf2d4435f734",
      "tree": "6637daf0cde4f14afd02793ad268f22f9257bd4c",
      "parents": [
        "f67f115423c9ef5aa62a33c12670cd8f89457c9c"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 29 15:07:27 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sun Oct 01 12:08:08 2017 +0100"
      },
      "message": "ART: Increase the number of potential instrinsics\n\nThe new limit is 256 intrinsics.\n\nAdds additional sanity checks.\n\nAvoids setting the kAccPreviouslyWarm bit for intrinics (defaults to\ntrue).\n\nBug: 65872996\nTest: art/test.py --host -j32\nChange-Id: I33ea67c9b6b8500b3ceb8a085358f075f6fcbb82\n"
    },
    {
      "commit": "e2abbc604ce003c776c00ecf1293796bb4c4ac5a",
      "tree": "f7d124d1861cad2162c30dfe932bb4e1beaf41ef",
      "parents": [
        "7090dfe84f78b1928fcbdfd664d0dd9ea52633ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 15 11:59:26 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 11:36:24 2017 -0700"
      },
      "message": "ART: Move kDexNoIndex to dex_file_types.h\n\nDefine the constant with the types to allow lowering the dependency\non DexFile.\n\nTest: m\nChange-Id: I3c61421db45be96d2057e01b1a7825883d8bd178\n"
    },
    {
      "commit": "5122e6ba34d46851cd89f2ad55bf6bb067e038d6",
      "tree": "e96ba37b6451be7a06d930b0274251cac35ce05e",
      "parents": [
        "02cb397857c979dffae95e2db2678a72ec407cf0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 17 16:10:09 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 29 11:29:31 2017 +0100"
      },
      "message": "ART: Remove ArtMethod::dex_cache_resolved_methods_.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --target on Nexus 6P\nTest: Repeat the above tests with ART_HEAP_POISONING\u003dtrue\nTest: Build aosp_mips64-eng\nChange-Id: I9cd0b8aa5001542b0863cccfca4f9c1cd4d25396\n"
    },
    {
      "commit": "d1ee20fed62cd8db8fd496c4e5760dc554136020",
      "tree": "3252b0983fc23118846b68e0fc9b65b86af030eb",
      "parents": [
        "2ade881db8642f10007c1c46b5e7f073d463c2d3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 17 09:21:16 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 17 10:38:57 2017 +0100"
      },
      "message": "Revert^4 \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\n\nFix a DCHECK() failure while visiting references for non-CC\nmoving GC by avoiding the DCHECK(); reference equality may\ngive false negatives at that stage as we may compare the new\nreference against an old one for the same object.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --jit\nTest: testrunner.py --host --gcstress\nTest: ART_DEFAULT_GC_TYPE\u003dSS ART_USE_READ_BARRIER\u003dfalse \\\n      testrunner.py --host --gcstress -t 048-reflect-v8\n\nThis reverts commit 76ccd09c3d98317dfbd179c6f5c231dcfc5d6996.\n\nChange-Id: I13cc339d5b31fceedf39ea9a77f27369ba72279f\n"
    },
    {
      "commit": "76ccd09c3d98317dfbd179c6f5c231dcfc5d6996",
      "tree": "07f1546ce7a090af8c88110598920769bfb5e669",
      "parents": [
        "c42fab35f18539957debb8703195eeb76c9718f7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 15 19:11:54 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 15 19:11:54 2017 +0000"
      },
      "message": "Revert^3 \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\"\n\nStill failling:\n\n+dalvikvm64 F 08-15 18:54:16 218912 218912 art_method-inl.h:395] Check failed: !GetDeclaringClass()-\u003eIsResolved() || interface_method-\u003eGetDeclaringClass()-\u003eIsAssignableFrom(GetDeclaringClass()) \n\n\nThis reverts commit c42fab35f18539957debb8703195eeb76c9718f7.\n\nChange-Id: I91b51f8c1e7f6e0ae876b751d8e9cd3b8acb62f6\n"
    },
    {
      "commit": "c42fab35f18539957debb8703195eeb76c9718f7",
      "tree": "65bcf5256213282a315a34621b3fbc73786c1585",
      "parents": [
        "f0c66eb04db3c9fc513f50dfaad1385cf703820e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 15 14:11:49 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 15 15:18:07 2017 +0100"
      },
      "message": "Revert^2 \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\n\nFix a DCHECK() to ignore unresolved proxy classes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --jit\nTest: testrunner.py --host --gcstress\n\nThis reverts commit 7ef52f75dd6e981e1e8c7567f593c197e8a94dcc.\n\nChange-Id: Idccdb04958a8bdb1c58b529dfb92885993ac62ea\n"
    },
    {
      "commit": "7ef52f75dd6e981e1e8c7567f593c197e8a94dcc",
      "tree": "9685b783f628e290c6307d6ead024aac749a11ab",
      "parents": [
        "0888cf1821d6622fd623db31000be19b9365f81c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 14 18:52:32 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 14 18:52:32 2017 +0000"
      },
      "message": "Revert \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\n\nBroke a few tests with:\n+dalvikvm64 F 08-14 18:36:32 136697 136697 art_method-inl.h:392] Check failed: interface_method-\u003eGetDeclaringClass()-\u003eIsAssignableFrom(GetDeclaringClass()) \n\n\nThis reverts commit 0888cf1821d6622fd623db31000be19b9365f81c.\n\nChange-Id: Idc93b6686392f9dfeca3bc11bd22104948fd9fd3\n"
    },
    {
      "commit": "0888cf1821d6622fd623db31000be19b9365f81c",
      "tree": "fc1e251066fa30ffd475b8a51c15f17bc976b13f",
      "parents": [
        "f9fd236b047a4851f24a3829acfd7e3340676305"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 28 12:55:17 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 14 14:06:49 2017 +0100"
      },
      "message": "ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\n\nThis immensely simplifies the interface method retrieval\nand removes one dependency on dex_cache_resolved_methods_.\nWe may later consider removing that member if we deem the\nmemory savings worth the performance impact.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --jit\nChange-Id: Id76349c69e4c4dea4e3b297bd504db8f98f1b7cc\n"
    },
    {
      "commit": "0a87a653a296854c9a0abacd9bb1557ee4c4d05d",
      "tree": "4763469d136f3879bbce93521827717dbe05bd5b",
      "parents": [
        "52a3c989f96984f9bc9e02620694fc44708a1df2"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 12 13:43:15 2017 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Aug 07 11:49:38 2017 -0700"
      },
      "message": "Add two special runtime methods.\n\nThis is in preparation for being able to deoptimize upon returning\nfrom a runtime method. We need to identify two special runtime methods:\nclinit and suspend-check since if deoptimization happens when returning\nfrom these two methods, we need to execute the dex instruction that\ncorresponds to the dex pc of the deoptimization point. A clinit can\nbe implicit for an invoke-static, in which case the invocation hasn\u0027t\nhappen yet so we have to execute the invoke-static in the interpreter.\nFor a suspend-check, the dex instruction for it hasn\u0027t been executed yet.\n\nTest: full run-test/gtest on both host and target.\nBug: 33616143\nChange-Id: Id1bdfcfa84a9ca27d5ee9da4b4a99467b1a4a845\n"
    },
    {
      "commit": "b45528c1f1b83ca8c970f439b54fbfcfda6908ea",
      "tree": "e8f493a7b21064d353d112ea1378d7819db385aa",
      "parents": [
        "2c2e13ec24bff70db6e49270b9d4d787add9925e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 27 14:14:28 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 27 15:30:47 2017 +0100"
      },
      "message": "ART: Refactor retrieval of types through ArtMethod.\n\nSplit Get*() functions that take a \"bool resolve\"\nargument into Lookup*() and Resolve*() functions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I0b7eaa1fadc2ffa8c0168203790467f91a126963\n"
    },
    {
      "commit": "8cf9cb386cd9286d67e879f1ee501ec00d72a4e1",
      "tree": "88e86e214b425e444760fe4e0ffeee677e1558a2",
      "parents": [
        "914b7b6a6c9f399b26b41e9160e9871ef749e0db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 09:28:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 16:07:10 2017 -0700"
      },
      "message": "ART: Include cleanup\n\nLet clang-format reorder the header includes.\n\nDerived with:\n\n* .clang-format:\n BasedOnStyle: Google\n IncludeIsMainRegex: \u0027(_test|-inl)?$\u0027\n\n* Steps:\n find . -name \u0027*.cc\u0027 -o -name \u0027*.h\u0027 | xargs sed -i.bak -e \u0027s/^#include/ #include/\u0027 ; git commit -a -m \u0027ART: Include cleanup\u0027\n git-clang-format -style\u003dfile HEAD^\n manual inspection\n git commit -a --amend\n\nTest: mmma art\nChange-Id: Ia963a8ce3ce5f96b5e78acd587e26908c7a70d02\n"
    },
    {
      "commit": "07bfbace6f835e6c748fd68ec7624992478b16c1",
      "tree": "5d094a00fbc90455bd9b53e042cf8b4fe8433462",
      "parents": [
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 06 14:55:02 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 16:33:00 2017 +0100"
      },
      "message": "Hash-based DexCache methods array.\n\nTotal boot*.art size for aosp_angler-userdebug:\n  - arm64:\n    - before: 11603968\n    - after: 10129408 (-1.4MiB, -12.7%)\n  - arm:\n    - before: 8626176\n    - after: 7888896 (-0.7MiB, -8.5%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nTest: Build aosp_mips64-eng\nBug: 30627598\nChange-Id: I7f858605de5f074cbd7f0d9c4c072fbd44aee28f\n"
    },
    {
      "commit": "8228cdf4ad6322ec8133564aaa51f966d36c0f17",
      "tree": "6d2f5cf4e742ad644ad30eb96a9f943c9ebcb34b",
      "parents": [
        "83b140474aa1759739c8ee4464bf226c4fa0f6d7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 15:03:54 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 13:13:15 2017 -0700"
      },
      "message": "ART: Move CalleeSaveType to callee_save_type.h\n\nMove the type out of runtime to decrease dependencies. Make it\na proper enum class. Fix up usage.\n\nTest: m test-art-host\nChange-Id: Id84c44bf3c59f37c8a43548e720c5fb65707b198\n"
    },
    {
      "commit": "d76615851af31791c7b1549e8c4609152237b9ce",
      "tree": "e438a8cb0892e02768c55c2bc99f8be1d00abacb",
      "parents": [
        "6ecff4d2127e70738aa2493d6deceb946c204eff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 01 13:48:16 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 07 11:10:50 2017 -0700"
      },
      "message": "Handler-ize InstrumentationListener and related code\n\nWe are going to be making instrumentation listeners that can cause\nsuspensions during their running. We explicitly handler-ize all the\ninstrumentation listener functions in order to ensure this is safe.\n\nBug: 34414073\nTest: ./test.py --host --ntrace --trace -j40\nChange-Id: Ic719080d0991b104d41b7757df8d1f332c72cd04\n"
    },
    {
      "commit": "5d08fcc21a14190c4dba3028a3e35d281afdd016",
      "tree": "c42de65ced190778342d9b022e400f4a7f9d346b",
      "parents": [
        "57cf00bde719ddc84a6015b107b90a20169e3099"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 17:56:46 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 20:28:16 2017 -0700"
      },
      "message": "ART: More header cleanups\n\nPull out more dependencies through forward declarations.\n\nTest: m test-art-host\nChange-Id: I7d86726928937f788b956ec9eac91532d66d57ae\n"
    },
    {
      "commit": "b486a98aadc95d80548953410cf23edba62259fa",
      "tree": "b113b7d50a4a015502873b7742c9ece00d293e84",
      "parents": [
        "1656ca9e6996cb555b4463e5efd4bd7e3f4fb816"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 13:45:54 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 02 08:24:02 2017 -0700"
      },
      "message": "ART: Introduce thread-current-inl.h\n\nFactor out Thread::Current() code into its own -inl file to remove\ntransitive includes.\n\nThis requires at the same time correcting mutex.h, i.e., moving\nsome functions into mutex-inl.h.\n\nTest: m test-art-host\nChange-Id: I88f888b604e0897368d9b483edce6ce4332dd9c9\n"
    },
    {
      "commit": "d49012909625c3bf87bf51138fe79315ce1b1bdc",
      "tree": "349ef2cdcb7255d042244046601bd0fd5eb3a092",
      "parents": [
        "726e1793d3f54470705e5b84e7860074e029b0ed"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 18:41:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 20:44:33 2017 -0700"
      },
      "message": "ART: Clean up heap headers\n\nUse more forward declarations for accounting structures and spaces.\nFactor out structs to reduce header surface. Remove heap include where\nunnecessary. Fix up transitive users. Move some debug-only code out\nof line.\n\nTest: m test-art-host\nChange-Id: I16db4aaa803f39e155ce6e1b0778b7e393dcbb17\n"
    },
    {
      "commit": "c6ea7d00ad069a2736f603daa3d8eaa9a1f8ea11",
      "tree": "a6d3332a8592fb806841314d55b206b573d37d86",
      "parents": [
        "d68677c5fde1ace16ea58d65733776c954e7acb4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 01 16:46:28 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 08:40:33 2017 -0700"
      },
      "message": "ART: Clean up art_method.h\n\nClean up the header. Fix up other headers including the -inl file,\nin an effort to prune the include graph. Fix broken transitive\nincludes by making includes explicit. Introduce new -inl files\nfor method handles and reference visiting.\n\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_angler-userdebug \u0026\u0026 mmma art\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_mips64-userdebug \u0026\u0026 mmma art\nChange-Id: I8f60f1160c2a702fdf3598149dae38f6fa6bc851\n"
    },
    {
      "commit": "4c0b4bc2653be370c7ba9f34a39e29e60382dff1",
      "tree": "e1ad40bcca2b016304550fcd1aeefaf405dc7031",
      "parents": [
        "f8d00ff206e33ff66fcabcf75d6b5bbe30cddb98"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 17 13:08:26 2017 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 28 14:42:01 2017 -0700"
      },
      "message": "Gracefully handle bogus profiling info for inline caches.\n\nTest: 643-checker-bogus-ic\nBug: 36371709\nChange-Id: I2a52ac67a45a6bb5ddefb053a35e6edf5bc2da2f\n"
    },
    {
      "commit": "f2f1c9dab95892ec2983f57185c2bb0fbce80f80",
      "tree": "163613230c2afb656f9ee2b232253d76624e3bf8",
      "parents": [
        "8a31bb939f2ab1fe3f745ade40408ac07267208a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 15 15:35:46 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 15 09:19:22 2017 -0700"
      },
      "message": "Revert \"Revert \"Refactor annotation code for obsolete methods.\"\"\n\nThe number of InterruptedExceptions created during runtime shutdown is\nsometimes inconsistent so we will filter those out of the test results.\n\nThis reverts commit 65e0775010121498a37fa26c64fcc5bb17a6c1b5.\n\nReason for revert: Fixed issue with test flakes\n\nBug: 31455788\nTest: stress --cpu 60; while ./test/run-test --host 980; do; done\n\nChange-Id: Idf53ea11ceec1f48c433da468b31092bf230de57\n"
    },
    {
      "commit": "65e0775010121498a37fa26c64fcc5bb17a6c1b5",
      "tree": "5849c59b4e2de57fa8156149597f4a921a2f04d9",
      "parents": [
        "5378b64af97f9ae06082c697a6b13d2b98e02abb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 15 06:56:35 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 15 06:58:57 2017 +0000"
      },
      "message": "Revert \"Refactor annotation code for obsolete methods.\"\n\nTest has flakes.\nBug: 31455788\n\nThis reverts commit 672a0b75c91af44749b1e946684e6a65a884d778.\n\nChange-Id: If00ecbd31abe204bcaf8341eceb674e07c0ac8f2\n"
    },
    {
      "commit": "875e3225c52570a806a8d3719ea89ef9d72bf7ae",
      "tree": "10597eb6e63f7da237cca23e75889c5583561d4e",
      "parents": [
        "bff6bac661d05ad184c831a2b0b224260f2e2956",
        "672a0b75c91af44749b1e946684e6a65a884d778"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 14 21:10:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 14 21:10:33 2017 +0000"
      },
      "message": "Merge \"Refactor annotation code for obsolete methods.\""
    },
    {
      "commit": "672a0b75c91af44749b1e946684e6a65a884d778",
      "tree": "7ae1c2fd5b9e2e7d155d9427848000d381e138d0",
      "parents": [
        "01ea2aa05d6889b4ec08679606d3cdf36b302a8f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Mar 10 13:09:57 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 14 10:18:12 2017 -0700"
      },
      "message": "Refactor annotation code for obsolete methods.\n\nReading annotations on obsolete ArtMethod* objects would cause\nproblems due to reading from the wrong dex file. We refactored that\ncode so now it always uses the correct dex file when reading\nannotations. This was rarely a problem since obsolete ArtMethods are\nonly ever exposed to the runtime itself which rarely reads\nannotations.\n\nWe also add a test for redefining Object.class. This is one of the\nsmall number of classes where the runtime will read it\u0027s annotations\noff of obsolete methods.\n\nBug: 31455788\nTest: ./test/testrunner/testrunner.py --host -j40\nChange-Id: I5f1c58464b89a7a9198a7b26b015b102a7dc9c2f\n"
    },
    {
      "commit": "8d6768d47b66a688d35399d524ad5a5450e9d9d4",
      "tree": "0b8733baef378d9e060c8e74319a3846489590b2",
      "parents": [
        "fbe1516b91f2117bb9c7282aaea5537572f62dd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 10:13:21 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 13:55:13 2017 +0000"
      },
      "message": "Revert^6 \"Hash-based dex cache type array.\"\n\nFixed ImageWriter to write class table also if it contains\nonly boot class loader classes. Added a regression test and\nadded extra checks for debug-build to verify that dex cache\ntypes from app image are also in the class table. Removed\nsome unnecessary debug output.\n\nTest: 158-app-image-class-table\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 0b66d6174bf1f6023f9d36dda8538490b79c2e9f.\n\nChange-Id: I6a747904940c6ebc297f4946feef99dc0adf930c\n"
    },
    {
      "commit": "0b66d6174bf1f6023f9d36dda8538490b79c2e9f",
      "tree": "1cc4d2ae868745a65fd0489a6fb2f5f2fc9e880f",
      "parents": [
        "6374c58f2ea403b3a05fb27376110fe4d0fc8e3f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:50:04 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 16:08:01 2017 +0000"
      },
      "message": "Revert^5 \"Hash-based dex cache type array.\"\n\nFor app images, ImageWriter does not add boot image\nclasses to the app image class table even though it\nkeeps them in the dex caches. The reason for that is\nunknown, the code looks OK.\n\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nAlso reverts \"Improve debugging output for a crash.\"\n\nThis reverts commits\n    bfb80d25eaeb7a604d5dd25a370e3869e96a33ab,\n    8dd56fcb3196f466ecaffd445397cb11ef85f89f.\n\nTest: testrunner.py --host\nChange-Id: Ic8db128207c07588c7f11563208ae1e85c8b0e84\n"
    },
    {
      "commit": "b1106e2aa98105dec533cdac9074a8f0216a4106",
      "tree": "881beb77d6550fbd62fd82241d2bb9107b72e794",
      "parents": [
        "02c488068f4793204b00b40d76eb3a891a332def"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 23 11:34:48 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 23 11:34:48 2017 -0800"
      },
      "message": "ART: Add flag for ArtMethod class state checks\n\nThe checks, especially in GetAccessFlags, is expensive. To help\nwith running a debug build on devices, add a flag to be able to\nturn the checks off.\n\nBug: 35644369\nTest: m\nChange-Id: I2a3db1a56986df8f4a8b2dc5bcb26e1bcaea0a24\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": "90c5a9b889af84cbb840c60e461d5bdbf8dc0df6",
      "tree": "ef0cc70d9ad20546f950be3364cbbbdeb05b5db6",
      "parents": [
        "3cb871ab1af47576959fd24a99d370381b8f193e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 01 13:10:06 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 02 17:49:39 2017 +0000"
      },
      "message": "Various improvements to stack walking speed\n\nMake BitMemoryRegion constructor inlined, remove read barrier\nfor IsProxyMethod.\n\nAround 15% speedup for pmd benchmark, maybe more for CC.\n\nTest: test-art-host\n\nChange-Id: Ib4392649e041406e538cc944c26c69f68d388fb4\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": "137cdfa1e8a3810fb86d3298ec10036c0491d13f",
      "tree": "db568fce8feec0ae6910ff1150cf46f08fe7e3e5",
      "parents": [
        "fbf47ea64a9f797a82030e919fa4f085c9eb5b28"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 26 14:03:11 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 26 17:04:55 2017 -0800"
      },
      "message": "Avoid read barriers for ArtMethod::GetDexFile\n\nShows up in pmd benchmark from Class::FindDeclaredDirectMethod and\nClass::FindDeclaredVirtualMethod. There are still calls to\nIsProxyMethod that could probably be eliminated.\n\nReadBarrier::Mark goes from 12.39% to 3.45% according to perf.\n\nTest: test-art-host\n\nChange-Id: I6a4f2fa2d68bf5f393f83b9b70e8d6fcc9dbdaa2\n"
    },
    {
      "commit": "72ab684871f870aead76b23cb67deb046107b380",
      "tree": "d4bb40cab65df449246b35ae582234238676b7bb",
      "parents": [
        "e36c51aee58e61e9fc89851b767379c587f050e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 20 19:32:50 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 24 12:05:02 2017 +0000"
      },
      "message": "Add class status for resolved erroneous classes.\n\nSplit the old ambiguous status mirror::Class::kStatusError\ninto kStatusErrorUnresolved and kStatusErrorResolved. Once\na class has been resolved, IsResolved() shall return true\neven if the class later becomes erroneous. Allow returning\nerroneous class from ClassLinker::EnsureResolved() if it has\nbeen previously resolved. This allows consistent behavior\nfor retrieving classes, immune to multi-threaded races and\nmulti-dex weirdness. It also allows JVMTI to properly report\n\"prepared\" (i.e. resolved) classes that are also erroneous.\n\nThe new behavior is consistent with the RI.\n\nAdd regression tests to 008-exceptions for inconsistent\nbehavior for multi-dex retrieval of erroneous resolved class\n(wrapping or not wrapping the old exception based on which\ndex file is used for lookup) and for a CHECK(IsResolved())\ncrash in ClassLinker::LoadSuperAndInterfaces() (without any\ntests for similar checks that could have previously failed\nonly due to extremely unlikely race conditions; these should\nnow also be fixed).\n\nInconsistency still remains for class verification as shown\nby the new exceptionsForSuperClassInitFailure() test in\n008-exceptions, where interpreter and Optimizing still\ncause different exceptions to be thrown.\n\nNote: This is partially changing behavior implemented for\nbug 28787733. Since we allow the class loader to retrieve an\nerroneous resolved class, the ExceptionInInitializerError is\nnot thrown at all from VMClassLoader_findLoadedClass(), so\nthere is nothing to wrap in ClassNotFoundException.\n\nTest: m test-art-host\nBug: 30627598\nBug: 28787733\nChange-Id: I86cdca00f35a0d6221d2559e3026ac0428a3613c\n"
    },
    {
      "commit": "9cd522b50a5f0209e97a2e6bcf8c9c350d3f3f83",
      "tree": "503af07a0a6122d161a81dfed2d2e64f8e501d5a",
      "parents": [
        "c3b7bf3bcc55ec3c684210176ff6ddeb9d33ac19"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 18 17:05:59 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 18 17:08:57 2017 +0000"
      },
      "message": "Remove now unused dex_cache_resolved_types_ from ArtMethod.\n\nTest: test-art-host test-art-target\nChange-Id: I004c040da165934f74eb8b8e85e99e7c6621c2df\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": "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": "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": "063fc772b5b8aed7d769cd7cccb6ddc7619326ee",
      "tree": "bc165781989087a998721991504e589a7d5b0926",
      "parents": [
        "48d08a4233ee4450b0d5073d41445f9dd1f17191"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Aug 02 11:02:54 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Dec 01 11:15:47 2016 -0800"
      },
      "message": "Class Hierarchy Analysis (CHA)\n\nThe class linker now tracks whether a method has a single implementation\nand if so, the JIT compiler will try to devirtualize a virtual call for\nthe method into a direct call. If the single-implementation assumption\nis violated due to additional class linking, compiled code that makes the\nassumption is invalidated. Deoptimization is triggered for compiled code\nlive on stack. Instead of patching return pc\u0027s on stack, a CHA guard is\nadded which checks a hidden should_deoptimize flag for deoptimization.\nThis approach limits the number of deoptimization points.\n\nThis CL does not devirtualize abstract/interface method invocation.\n\nSlides on CHA:\nhttps://docs.google.com/a/google.com/presentation/d/1Ax6cabP1vM44aLOaJU3B26n5fTE9w5YU-1CRevIDsBc/edit?usp\u003dsharing\n\nChange-Id: I18bf716a601b6413b46312e925a6ad9e4008efa4\nTest: ART_TEST_JIT\u003dtrue m test-art-host/target-run-test test-art-host-gtest\n"
    },
    {
      "commit": "0fd9a7d67878d1d88a74895c0d02c556b5de8e72",
      "tree": "1e10e3ad67ae8477db93e7bc9c35aaaa4ee9fa77",
      "parents": [
        "07ab8831ff6025f91f927cc9e60c04801583666c",
        "a01de59eef990c07df9815376cd3c675e3acd481"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 30 23:01:31 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 23:01:32 2016 +0000"
      },
      "message": "Merge \"Infrastructure for obsolete methods\""
    },
    {
      "commit": "a01de59eef990c07df9815376cd3c675e3acd481",
      "tree": "86f6ef41c13de572dc134956c836dd94c35d9d64",
      "parents": [
        "424c03aac25835febbf5c695b943206bc40ef335"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 15 10:43:06 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 30 10:23:47 2016 -0800"
      },
      "message": "Infrastructure for obsolete methods\n\nThis adds some of the structures and functions needed to eventually\nsupport obsolete methods. Specifically this adds the code to create\nand iterate through the obsolete dex-cache maps of classes and\nre-organizes the redefinition code to be more sensible and extensible.\n\nBug: 32369913\nTest: ./test/run-test --host 902\nTest: mma -j40 test-art-host\n\nChange-Id: I93d60fa66e7512e8b059cdf42af8a56e93ef4bd7\n"
    },
    {
      "commit": "e51ca8bfa8a193b64901ad214842f213adca92eb",
      "tree": "b07b2534edc592d68b5461a3bdb8a31241892d54",
      "parents": [
        "eb9c58e88f8e0f4a0a413efce04b49b183ad23e3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 14:49:31 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 29 21:05:51 2016 +0000"
      },
      "message": "Move inline caches GC handling in JitCodeCache.\n\nMake the classes they hold weak references and visit\nthem during SweepJitRoots.\n\nThis fixes the newly introduced deadlock:\n\nThread1:\n1) Lock JitCodeCache lock to create Profiling info for\n  ArtMethod m.\n2) m is a copied method, we need to track the actual holder,\n   needing to decode a weak reference.\n3) Weak references are not accessible due to GC.\n\nGC Thread:\n- Disallow weak reference access.\n- Wait for checkpoint.\n\nThread2:\n- Try to lock JitCodeCache lock\n- Deadlock, as Thread1 owns the JitCodeCache lock.\n\nTest: test-art-host\nbug: 31289185\nbug: 33198826\n\nChange-Id: I7ee17631015450ace8d2a0264415a81c5a902bb8\n"
    },
    {
      "commit": "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": "28357fab628bd9b91749988b554977398caf9963",
      "tree": "957fac3c1003713c349e0e216762836138c596a7",
      "parents": [
        "c89f9776a107ca20d0146c16fa881db91c4f8266"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 18 16:27:40 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 19 10:04:37 2016 -0700"
      },
      "message": "Move most of class linker to ObjPtr\n\nReturn values are still mirror pointer. Fix some failing asserts in\ncompiler driver and tests.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4450bf9dfb2541749496b8388616e8aae8488919\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": "d6e0fa923dfe85c363408844b35e30ddcd65e199",
      "tree": "e26162731652d07bb40f2e20c196cdf7bd8c59e7",
      "parents": [
        "c25dfeab1a66c942ae658fc7cd367f7c1ac502a1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 17 13:02:39 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 17 13:10:17 2016 -0700"
      },
      "message": "Fix invoke-virtual not throwing ICCE in some cases\n\nDue to an oversight invoke-virtual on an interface method would\nnot cause an ICCE to be thrown if the target method is default. This\ncould potentially cause incorrect methods to be called at runtime.\n\nBug: 32201623\nTest: mma test-art-host-run-test-978-virtual-interface\nChange-Id: Ie565cf2fbe8602b17be0fb051e21d221a17b518f\n"
    },
    {
      "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": "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": "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": "fd36f1f927c138575184a1f4c7ea4e7abb3e2dbf",
      "tree": "2debb35c9193ac019071e0625986698ccbcaabb8",
      "parents": [
        "c218427ab96e521e0c4e9a3ffeb87e6c57eea0a5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 03 18:49:58 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 10 14:19:49 2016 +0100"
      },
      "message": "Rename callee save enumerators.\n\nAnd related image method enumerators, macros, etc.\nClean up some entrypoint assembly comments.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/252348\n\nTest: Run ART test suite on host and Nexus 9.\nBug: 30212852\nChange-Id: I2707342d4255c88c547655be83ed97a67e12ae9e\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": "10b218d32c0006aab747a53a9867d982cde9c938",
      "tree": "03b668bd44f89da024531145043c04f670363528",
      "parents": [
        "e92730cbc5e05b8057cf103af876927c9c361b73"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 25 17:48:52 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 26 10:21:34 2016 -0700"
      },
      "message": "Add missing filter cards to zygote mod union table\n\nWithout filtering the cards, every object in the zygote is grayed\nduring the GC. This was deleted in a PS of previous CL.\n\nGrayAllDirtyImmuneObjects goes from 1.974ms to 376.464us for CC on\nN9 maps. This happens during the pause. This CL also fixes regression\nin zygote PSS.\n\nBug: 29516968\nBug: 12687968\n\nChange-Id: I42014e78b1de3ce9b2eefa3bd32f0d24e2ff71c6\n"
    },
    {
      "commit": "84413a7617602c466e39de8e8897914a6d06779d",
      "tree": "0beb127170772d2a6075ea4820bdf0e29de15526",
      "parents": [
        "d4b7ad71359b571d0056a9bcad3811015128cc8f",
        "479b1de64cd7a8c9c8ca182c699cb2048850c35d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 21 23:58:00 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 21 23:58:01 2016 +0000"
      },
      "message": "Merge changes I295c7876,Ib4b84b7b\n\n* changes:\n  ART: Remove PACKED from ArtMethod\u0027s ptr_sized_fields_\n  ART: Rename ArtMethod JNI field\n"
    },
    {
      "commit": "75f0885d7c3d72a0351912b6d47682e1c860efdf",
      "tree": "d8a586b205ad3a502d8a007565a0140591d340ce",
      "parents": [
        "27d99ed24328509cd3df7f895ce2696a1884bb21"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 19 08:06:07 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 21 11:26:47 2016 -0700"
      },
      "message": "ART: Rename ArtMethod JNI field\n\nThe field is multi-purpose, rename it to data and clean up\naccessors in preparation of more checks.\n\nTest: m test-art-host\nChange-Id: Ib4b84b7b1a51ca201544bc488ce8770aa858c7fd\n"
    }
  ],
  "next": "465ecc86ff65ca546629630c9469deb6d2d8137e"
}
