)]}'
{
  "log": [
    {
      "commit": "9b81ac36e161fd993eab17b43b93a96e8c63b5cc",
      "tree": "bac59dd8a62ae9f410c707a4086c330b8923a55b",
      "parents": [
        "92ed90ca3897ae7861b22aa12740065152839649"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 16 16:47:08 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 17 08:10:30 2019 +0000"
      },
      "message": "Add default argument kIsInstrumented\u003dtrue.\n\nkIsInstrumented\u003dfalse is reserved for use by specialized\nentrypoints which are used only when we can ensure that\nthe code is not instrumented. So add the default argument\nto simplify all other callers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I3419795794fec9a1733ab3ad698b6415dbac679d\n"
    },
    {
      "commit": "206348cea8b086a484b8bde37b2e281e5f7db638",
      "tree": "1e83b6484dbd9218ace7c94d266dc90ed7e66505",
      "parents": [
        "58a268aa3569d8ad4f0e831de578620e1079ed59"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Dec 05 11:11:33 2018 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Jan 28 09:37:57 2019 -0800"
      },
      "message": "Selectively allow dead reference elimination\n\nAllow dead reference elimination in methods not containing\n@ReachabilitySensitive accesses or calls, when the class is marked\n@DeadReferenceSafe.\n\nAdd 1339-dead-reference-safe to aggressively check that everything\nworks as intended.\n\nBug: 111453875\n\nTest: art/test/testrunner/testrunner.py --host --64 -t 1339-dead-reference-safe\n\nDetect ReachabilitySensitive annotations.\n\nChange-Id: I70c20431fdbcfcfd2692b2255d12ad59e37cb669\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": "c1896c9a0e15df3a1b9a3a19bcd2a933b654fe06",
      "tree": "b68a5f5163f8da0da87d671a225addaa2a13095f",
      "parents": [
        "f2970cd870948a6ee1c8ecd30c9c3147d05aa0be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "message": "C++17 compatibility: make WITH_TIDY\u003d1 happy again.\n\nBug: http://b/111067277\nTest: builds\nChange-Id: I8b69ea3815e14bb6eb27f40c0dd01a85b340a355\n"
    },
    {
      "commit": "2bb2fbd2879d0a6d9ebf7acff817079dde89b417",
      "tree": "d607aa6bfb2ea55fbfd875237b37c79f3cfed5f6",
      "parents": [
        "85865697ff9fabede3d64ff64cde72727c3fc4c1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Nov 13 18:24:26 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 16 11:11:20 2018 +0000"
      },
      "message": "Create SdkVersion enum, migrate users to it\n\nCreates a new SdkVersion enum with integer codes of known\nAndroid SDK versions, together with helper functions for common\npredicates. Also converts target_sdk_version_ in Runtime to\nuint32_t and cleans up its uses.\n\nTest: m test-art\nChange-Id: Idc6e518c8675068bf952d0256686c88bb0eb833e\n"
    },
    {
      "commit": "70f5fd0770adbef645950895309a2a63c3bde7c0",
      "tree": "d9794484e83858cf7e33551eb8a108e07f46b18c",
      "parents": [
        "52ecb65ae9e1ad6fe7f58beecc88cdc08e08f0c4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 19:58:37 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 26 08:44:12 2018 -0700"
      },
      "message": "ART: Add class-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for class instance allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I32529f0221a836452c58687330a91ac0d5fde162\n"
    },
    {
      "commit": "52ecb65ae9e1ad6fe7f58beecc88cdc08e08f0c4",
      "tree": "7a8ee84cad0df34ab33bdcb0115fc0c79d6c83be",
      "parents": [
        "c2099b0b0c052dd61137b9cf5f9f8b30bab1a7a8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 15:18:21 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 26 08:44:12 2018 -0700"
      },
      "message": "ART: Add object-array-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for object array allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I0d7c40ed53708d4c759190961b40f0cac3fe696d\n"
    },
    {
      "commit": "8e0f04319c7c3ddee60c505376b31768533b0dd5",
      "tree": "b9d215de61b3a16895695e52ff4ee5ecbd985f14",
      "parents": [
        "88dbad33ae92167a89a5d5469f39f41624535dbf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 13:38:03 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 25 09:52:37 2018 -0700"
      },
      "message": "ART: Add array-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for array allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: Id3378f40c52fa7ef4297af08cb7509e0c04b94d1\n"
    },
    {
      "commit": "98ea9d9d82ab078ca10fa7f8e02eddda94cf1d98",
      "tree": "a848b7e41ff227a2d3d4d6795ec11089f39cb6ca",
      "parents": [
        "02338775e33b553be51d44ff60bb1ef8e527bd94"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 14:06:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 15:19:55 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles runtime.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibc0d5086809d647f0ce4df5452eb84442d27ecf0\n"
    },
    {
      "commit": "c74d9cbd4c7b1b5b1a4c5a6bb34e9426336bbecc",
      "tree": "d1030d4bc5fb0986ef9f6e80d81b8a204c011ced",
      "parents": [
        "5ec6f36d4688e70c652882bff8c6a3c060ccc83e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 13:44:44 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 20:31:46 2018 -0700"
      },
      "message": "ART: Modernize counting-down loops\n\nPreparation for readability-implicit-bool-conversion.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I7a6f9636d5f4537020f99e8cf8560f7f6b6b7ba0\n"
    },
    {
      "commit": "3e2e123239952c80e1b37431bf2efbbe07a41940",
      "tree": "153be0dafdbce55b5e5432cb10025b802a637402",
      "parents": [
        "68851b53e4152d3edaea977573af8bdc0bd23313"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 11 12:35:30 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 12 11:32:40 2018 -0700"
      },
      "message": "Refactor debug info position visiting\n\nMove logic to CodeItemDebugInfoAccessor, makes it easier to modify\nthe debug info format.\n\nTest: test-art-host\nBug: 112311591\nBug: 77709234\nChange-Id: Ice56a88951efa54dc07d88f2c228c01be4670e73\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": "bcf175247272d0e321c8d988c3c01c123b56e36e",
      "tree": "9f65ece5ce9474aa4fcf16fbfca6278109dc9a67",
      "parents": [
        "09c5ca40635faee00f40f6ca0581dd475efd545e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 13:14:32 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 16:31:30 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify array allocations.\n\nAnd remove some unnecessary calls to ObjPtr\u003c\u003e::Ptr().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ie313980f7f23b33b0ccea4fa8d5131d643c59080\n"
    },
    {
      "commit": "acb906d7f907b79ef1e6038d7104a5569e81a1ac",
      "tree": "5004be84fa88b8829881efed9ebf2d578b21086f",
      "parents": [
        "5924a4a73f1a2dcf83877062d67c297a9496b326"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 10:23:49 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 14:48:02 2018 +0100"
      },
      "message": "Remove mirror::String::java_lang_String_.\n\nAnd simplify ClassLinker::InitWithoutImage().\nAnd finish ObjPtr\u003c\u003e-ification of annotation processing.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 31113334\nChange-Id: I882a6c2f2b2a88d6ba34e4759bac4a6caa54cafa\n"
    },
    {
      "commit": "0278be74269fcfe4f2517d449f2bd53472f9b2f9",
      "tree": "1a59adbd7b5632cba4766b55195fdaf627cdfec0",
      "parents": [
        "b4eb1b19e1dd35d12a408358656c1421f507d231"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 24 13:30:24 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 11:33:37 2018 +0100"
      },
      "message": "Remove PrimitiveArray\u003cT\u003e::array_class_.\n\nAnd ObjPtr\u003c\u003e-ify jni_internal.cc while we\u0027re touching it.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I15a8ade772e3e4337371c6f3c472f9efea9f4636\n"
    },
    {
      "commit": "2d3065e6ca0bd707bc998b7d260bb8e8ec07cf87",
      "tree": "2b1361fb8c0d860e735858d41a7be6b7699a576a",
      "parents": [
        "3eb68cf6c05e8c015f0da2c50e7e720976702e63"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 13:56:09 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 14:54:45 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify annotation processing.\n\nTest: Rely on TreeHugger.\nBug: 31113334\nChange-Id: Ifd69c15c0df1530d8860cf50e06bde0d356b0c23\n"
    },
    {
      "commit": "1f010164bea4714e9f653c52e8948c5d5305040b",
      "tree": "e69b2c3f4d2645d4097655f8914325945fe5dbbd",
      "parents": [
        "a7d37cf735f05cfc3a3585a5c44eb65d8a279874"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 15 08:59:32 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed May 16 13:01:34 2018 -0700"
      },
      "message": "Move ArtDexFileLoader to libdexfile\n\nAdds a dependency from libdexfile on libartbase, but allows the use of\nMemMap loaders, etc.\n\nBug: 78652467\nTest: make -j 40 checkbuild\nChange-Id: I15cf33893ca9192050762f8350a3cc1e39f88dc5\n"
    },
    {
      "commit": "ba205000c1119f26575b417b665df37bd1d5ae95",
      "tree": "99cc23fa29bccfc14eacdbf3061d63793737b0e9",
      "parents": [
        "00e15d651e705640d4fdf206faf8317d69b20758"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 15 16:53:41 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 15 16:58:36 2018 +0000"
      },
      "message": "Refactor flaky ArtDexFileLoader IsPlatformDex gtest\n\nThe gtest has been failing randomly, unable to open a dex file\ncopied into a known location. Refactor the test:\n\n(a) to not copy/remove in SetUp()/TearDown() because that happens\nbefore every test in the test case, not just the one test where it\nis needed, and\n(b) to copy the file just before it is being opened and to remove\nthe file as soon as it is not needed, and\n(c) into smaller tests, each testing one location, and\n(d) always print the error message ArtDexFileLoader failed with.\n\nBug: 79177384\nTest: make test-art-host-gtest-art_dex_file_loader_test\nChange-Id: Icfd55c1b88938cf88441d501b10e285f4fcdb60f\n"
    },
    {
      "commit": "06d10a78506fae7e033795cda7b1d9d0e1f1fff5",
      "tree": "91f94a605395776710f3d14298613a803158f3aa",
      "parents": [
        "93d301397c83b08f6fc165847a3d518e1031f392"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 14 08:53:38 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 14 16:49:55 2018 +0100"
      },
      "message": "ART: Add dex::ProtoIndex\n\nTest: m -j32 test-art-host\nChange-Id: Ic2d2a7a43be1b8590b97cdf3729200b043ffc6a3\n"
    },
    {
      "commit": "0d0f3164160e50ddb78022f662c5438fc167f50d",
      "tree": "13bfdad1117db0adfb8b434ff1b8e1589c0c43ea",
      "parents": [
        "9d7905fffb9eca8f4fa6f3f3d7d3deb9718e3005"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 10 12:55:40 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 10 22:49:34 2018 +0100"
      },
      "message": "Handle multidex in LocationIsOnSystemFramework.\n\nbug: 79111915\nTest: art_dex_file_loader_test.cc\nChange-Id: I507ad98c62b4c589196685d74abdeaf748502a61\n"
    },
    {
      "commit": "a3ad0cdd711857f04f477e2cdc5b56a2c74a3018",
      "tree": "7e0e4c7888c2497d86ce96c9574d7c9886721ccf",
      "parents": [
        "abd9e1515bc6be88372c61071971c5432a51553d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 04 10:06:38 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 11:11:09 2018 +0100"
      },
      "message": "ART: Move JNI files to runtime/jni/ .\n\nTest: Rely on TreeHugger.\nChange-Id: I9cae11191ef1567ae9453be498882a7767285140\n"
    },
    {
      "commit": "d5f8de8bc61160bb2cecdcc0f5aa54d151b6176a",
      "tree": "efecd6d3dffd3a1d768b87a111d9e60335d9108c",
      "parents": [
        "9417b6b81393253a56b1b9bb4c7d8a2a2966707e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 27 14:12:03 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 01 16:23:42 2018 -0700"
      },
      "message": "Add CommonArtTest\n\nAdd a test framework that does not start up a Runtime object.\n\nBug: 78651010\nTest: make -j 40 test-art-host\nChange-Id: I6c8af384af5fe1289c6cf137635e94934ac3795d\n"
    },
    {
      "commit": "79e2607ab50163bfdc283f4a49decec26a216df5",
      "tree": "0cdb2c65412b64a55ddf1a486ab3d961a0301a3e",
      "parents": [
        "b4b91460b2d01d36ddcb7d55111ccd8faf390c2a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 06 17:58:50 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 13 08:29:30 2018 -0700"
      },
      "message": "Move profile dependent modules to libartbase\n\nMove mem_map and zip_archive to libartbase.  This should be the last two\nremaining modules that profile_compilation_info is dependent upon.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make and boot a device\n\nChange-Id: I136ee23e426aa8ec7441e3d3f1978f1bebf4b562\n"
    },
    {
      "commit": "8e1a7cb303d7c8f763dfb99ae311b820996b1ab4",
      "tree": "ea952245e2b907c44d5c0fcadf90f00a1fe31913",
      "parents": [
        "10c4390a7d63775b1c7e6f6a291e9aade388d733"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 27 08:14:25 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 27 18:15:21 2018 +0100"
      },
      "message": "Revert \"Revert \"Allow hidden API access from system libraries\"\"\n\nLibraries like RemoteDisplay provide an APK that an app loads into\nits process and which accesses internal APIs on the app\u0027s behalf,\nwithout exposing the internals to the app. These libraries are\nconsidered part of the platform, but were not exempt from hidden API\nchecks because they are not loaded with the boot strap class loader.\n\nThis patch adds a new flag to DexFile class which the constructor\nsets to true of the canonical location of the newly loaded dex file\nstarts with \"${ANDROID_ROOT}/framework/\". Hidden API enforcement\nthen checks this flag when determining whether the caller of\na hidden class member is allowed to access it or not.\n\nThis reverts commit 0127b71a2588efcd1a53c192c5c267157878b010.\n\nPrevious CL saw two issues:\n- buildbots would set non-existent ANDROID_ROOT for host-side builds\n- calling realpath on unquickened dex files would overflow the stack\n\nBug: 64382372\nBug: 76138670\nBug: 76165623\nBug: 76112393\nBug: 76452688\nBug: 76429651\nTest: art/test.py --target -r -b -t 674-hiddenapi\nTest: SystemUI APCT test\nChange-Id: Ie07a088509002593353965d3d24bf7362b643f40\n"
    },
    {
      "commit": "41a10575b319ca9549d7b3e8a9fe91c1cc602659",
      "tree": "4e88a7791a1b88364e35365b558d53429d62e5b8",
      "parents": [
        "a020472fe3f732a4523cf36f56a309089193648c",
        "0127b71a2588efcd1a53c192c5c267157878b010"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 26 19:33:03 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 26 19:33:03 2018 +0000"
      },
      "message": "Merge \"Revert \"Allow hidden API access from system libraries\"\""
    },
    {
      "commit": "0127b71a2588efcd1a53c192c5c267157878b010",
      "tree": "cfe89ca742bed927e67d9cf926937fe5e6f89347",
      "parents": [
        "eefabd28c21e6ae02ca05e97bd22f9e23cbf98a5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 26 19:31:41 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 26 19:31:41 2018 +0000"
      },
      "message": "Revert \"Allow hidden API access from system libraries\"\n\nBug: 64382372\nBug: 76138670\nBug: 76165623\nBug: 76112393\n\nSeems to cause run-test issues.\n\nThis reverts commit eefabd28c21e6ae02ca05e97bd22f9e23cbf98a5.\n\nChange-Id: Ia9b3d946742dbfde4fb56cf14413fde0600c8252\n"
    },
    {
      "commit": "de1ef6dbf9b6362621e9d0ddb2b106519d865246",
      "tree": "0095c5ff5ccc622fdfe0fdad10be42ce05be95d1",
      "parents": [
        "4ac2f25f01eeb2879a8bb7e4c72754f32d0cb497",
        "eefabd28c21e6ae02ca05e97bd22f9e23cbf98a5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 26 12:28:19 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 26 12:28:19 2018 +0000"
      },
      "message": "Merge \"Allow hidden API access from system libraries\""
    },
    {
      "commit": "eefabd28c21e6ae02ca05e97bd22f9e23cbf98a5",
      "tree": "58e4c2635e0d5682c3385bed639664ccfdd44f6a",
      "parents": [
        "e8a4e378c5a928d5de07bee6db99150a57dabcd8"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 22 16:27:18 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 26 08:05:33 2018 +0000"
      },
      "message": "Allow hidden API access from system libraries\n\nLibraries like RemoteDisplay provide an APK that an app loads into\nits process and which accesses internal APIs on the app\u0027s behalf,\nwithout exposing the internals to the app. These libraries are\nconsidered part of the platform, but were not exempt from hidden API\nchecks because they are not loaded with the boot strap class loader.\n\nThis patch adds a new flag to DexFile class which the constructor\nsets to true of the canonical location of the newly loaded dex file\nstarts with \"${ANDROID_ROOT}/framework/\". Hidden API enforcement\nthen checks this flag when determining whether the caller of\na hidden class member is allowed to access it or not.\n\nBug: 64382372\nBug: 76138670\nBug: 76165623\nBug: 76112393\nTest: art_dex_file_loader_test gtest\nTest: art/test.py --gtest\nChange-Id: If062bd668d7ba494bbb7b828e40932748d173b9a\n"
    },
    {
      "commit": "14e7badae4f118ecd8481913c927316737fd21fa",
      "tree": "d2bc49f6d9545d33e90fc33a95c6246d041be9fc",
      "parents": [
        "7af7d8dccc6d96d5d85564a58f5b18169a2f969b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 22 14:33:20 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 22 16:03:05 2018 -0700"
      },
      "message": "Verify dex files in zip and from files are not CompactDex\n\nSince there is no CompactDex verifier, dex2oat may crash for invalid\nCompactDex files in the APK or directly as files. Disallow opening\nthese to prevent crashes.\n\nBug: 75967391\nBug: 63756964\nTest: test-art-host-gtest\n\nChange-Id: Ifc86f7bc2a478201473aad6481bf1e3435a910ae\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": "66ff8a8b82ff103d48d40e8dad01342c2d6f6d0d",
      "tree": "f1e177b7276d0387bc109fa12e6bd4cde060d5e9",
      "parents": [
        "878124c13b794900b0f5c437f52ac0f61538ab55"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 28 13:27:55 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 28 13:31:13 2018 +0000"
      },
      "message": "Revert \"Revert \"Full-stack integrity: check vdex contents.\"\"\n\nbug: 30972906\n\nInitial revert due to \u0027check\u0027 file of the test needing updating for target tests.\n\nThis reverts commit a19b7649faf8780737be7ce3ec48a12d81c6d69f.\n\nChange-Id: I455780bd88cd89ff80c9084d399e2beeb819b95f\n"
    },
    {
      "commit": "a19b7649faf8780737be7ce3ec48a12d81c6d69f",
      "tree": "a96372834531ab26b0fae78ce9ef4fecac3ef2c1",
      "parents": [
        "d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 17:26:11 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 17:26:11 2018 +0000"
      },
      "message": "Revert \"Full-stack integrity: check vdex contents.\"\n\nbug: 30972906\n\nTest fails on device.\n\nThis reverts commit d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb.\n\nChange-Id: I53902b0d6d4dbe8237f61bf01542acf538229c71\n"
    },
    {
      "commit": "d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb",
      "tree": "596ef15de83798868d8e6c6cb6cbcb9a45e203e8",
      "parents": [
        "b81dedbf4eae5c5a7e65836d3b6d3b6d541b6fa9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 15 13:56:50 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 10:40:05 2018 +0000"
      },
      "message": "Full-stack integrity: check vdex contents.\n\nFor priv-apps, if a vdex on /data has dex code, it must\nbe because the APK has compressed dex code.\n\nFall back to APK if not.\n\nFor test convenience, update --copy-dex-files to also\ntake a \"always\" variant.\n\nbug: 30972906\nTest: 677-fsi\n\nChange-Id: I49f0eab46650145316a86de2971a3b9c140bcff7\n"
    },
    {
      "commit": "ccb0019c9c60617dcd420c6c92a931e1d82c4920",
      "tree": "2933beeccfa8ea7f51d51d65f996b5f475ccf867",
      "parents": [
        "b2a9999a6d1bb804f06902404879bdbe55ed0ec3"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Sat Feb 17 23:16:39 2018 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Sun Feb 18 21:57:10 2018 -0800"
      },
      "message": "Fix a memory leak\n\ndex_file is meant to take ownership of `container`. There\u0027s at least\none path (`error_msg \u003d \"Invalid or truncated dex file\";`) where\n`container` never gets passed along to a dex_file.\n\nCaught by the static analyzer:\nart/runtime/dex/dex_file_loader.cc:406:45: warning: Potential memory\nleak\n\nBug: None\nTest: Reran the analyzer. Memory leak complaints are gone.\nChange-Id: Ib57008e444d32b366bb2beabec8e39b8e84fd9db\n"
    },
    {
      "commit": "334b9d73482fba9c335d9b758041fc0865ef74d4",
      "tree": "1e0d2050065110c37ee03ee8010ec24c8d31f32e",
      "parents": [
        "db8d9091bbab41060584ab80882b60df20337da7"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Feb 12 18:27:56 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 14 10:57:05 2018 -0800"
      },
      "message": "Move libdexfile out of runtime\n\nMove the files out of runtime, leaving unfortunate dependences still\nthere on runtime/base (for the moment).  Also separates the build logic\ninto two Android.bp files.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ib0a1cda833b29ecfa4c8c50f23fab89ba666f491\n"
    },
    {
      "commit": "139512d4b110b087ea5439852f9f53e90e3d5a33",
      "tree": "6372bda67a55ba5bc505def17eb87b942827cf4b",
      "parents": [
        "cd4ddeea1c33d5f9b7758d116451bd06f1b81aff"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 08 15:44:50 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Feb 09 10:59:57 2018 -0800"
      },
      "message": "Split dex_file_loader_test\n\nInto DexFileLoader and ArtDexFileLoader portions.  This is the last test\nrefactoring before moving libdexfile out of the runtime directory.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: I7568a7b444fb110f64614f2066df6eb5ab3a5c69\n"
    },
    {
      "commit": "cd4ddeea1c33d5f9b7758d116451bd06f1b81aff",
      "tree": "fa333538dc655ac62edd7f25a11c88749c6c7ad5",
      "parents": [
        "551ff7e3176533576527b74e37cb65296d60ac15",
        "928033d81f63912f669acd27a72897694eb31db6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 09 14:55:25 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 09 14:55:25 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"ART: Interpreter support for VarHandle accessors\"\""
    },
    {
      "commit": "928033d81f63912f669acd27a72897694eb31db6",
      "tree": "4fa9d3e320f1fbb8f39d4128037f6a4b02c69fd7",
      "parents": [
        "426ee26b3dcc2c6ff0e16096c57f62b98b91b71e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 07 05:30:54 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Feb 09 13:09:26 2018 +0000"
      },
      "message": "Revert^2 \"ART: Interpreter support for VarHandle accessors\"\n\nThis reverts commit c4d3bf4eaff9720ed0bb7775db6fc24a1bd755dd.\n\nBug: 65872996\nTest: art/test/testrunner.py -b --host\nChange-Id: I2d1017c45cee5b2fd2dd05e5eeff0a72146663b1\n"
    },
    {
      "commit": "0efe3243d4f1878e8220ff8bc469beee9ac90518",
      "tree": "f38f5b44b642b6b7df735e61afe4df1d575ccb3e",
      "parents": [
        "f12c3092477b824b44bef06777688b80d6754b77",
        "700a9851eb3271c00c537a865d74f2fe38419584"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 07 22:45:45 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 07 22:45:45 2018 +0000"
      },
      "message": "Merge \"Fix potential null read for truncated dex files\""
    },
    {
      "commit": "700a9851eb3271c00c537a865d74f2fe38419584",
      "tree": "8b6c0c0c95df62937eacb61285c4841f91b19209",
      "parents": [
        "5168173dd6e79341b4b1f0a349721a2c7aa2a846"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 06 18:27:38 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 07 11:29:09 2018 -0800"
      },
      "message": "Fix potential null read for truncated dex files\n\nIn the case where a dex file is truncated, don\u0027t attempt to read the\nheader.\n\nAdded regression test.\n\nBug: 63756964\nBug: 72826975\nTest: mm test-art-host-gtest-dex2oat_test -j64\nTest: mm test-art-target-gtest-dex2oat_test -j64\nChange-Id: I9bd6bb445ef2eb1c961044f43ac71f04ef8c04a5\n"
    },
    {
      "commit": "e1123402f14879643f722885b4748965451be1b2",
      "tree": "63c22592b312cfb66d8cb81ad28f6d297f705f12",
      "parents": [
        "abee76ef780877132cf82c84f42e8ab50e6cc1d1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 01 02:46:18 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Feb 06 17:39:39 2018 -0800"
      },
      "message": "Make libdexfile tests independent of runtime\n\nRemove dependencies on common_runtime_test and related so that\nlibdexfile\u0027s tests can be run independently of the runtime directory.\n\nBug: 22322814\nTest: make -j 50 test-art-host-gtest\nChange-Id: If306c1995e87cbfc944e11fb13c927bc287014ad\n"
    },
    {
      "commit": "3a18e1fa56e103fe6e4bee85430fa87a0139aa19",
      "tree": "097fc609f3802ba6be297aa2e14e4aed804ed986",
      "parents": [
        "17eaf9926ade295b0a20a29a3873380f8f668f46",
        "c4d3bf4eaff9720ed0bb7775db6fc24a1bd755dd"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 06 16:05:25 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 06 16:05:25 2018 +0000"
      },
      "message": "Merge \"Revert \"ART: Interpreter support for VarHandle accessors\"\""
    },
    {
      "commit": "c4d3bf4eaff9720ed0bb7775db6fc24a1bd755dd",
      "tree": "f84ebefc503e5cffb6df5989979492ae04f85cbb",
      "parents": [
        "becc83b59ff703c02198f832dbc3216a0ab8a022"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 06 16:02:49 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 06 16:02:49 2018 +0000"
      },
      "message": "Revert \"ART: Interpreter support for VarHandle accessors\"\n\nThis reverts commit becc83b59ff703c02198f832dbc3216a0ab8a022.\n\nReason for revert: breaks on the ART buildbots due to localized toolchain differences.\n\nChange-Id: Ieb1d93b0fc7116ddc542d8bbfee1975bcb30a8f7\n"
    },
    {
      "commit": "17eaf9926ade295b0a20a29a3873380f8f668f46",
      "tree": "d0a2567378c12ab51a2aed6cd235e0ebbc056de4",
      "parents": [
        "436b6231ee469b071dce13af539cbcc549afb31a",
        "becc83b59ff703c02198f832dbc3216a0ab8a022"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 06 15:06:49 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 06 15:06:49 2018 +0000"
      },
      "message": "Merge \"ART: Interpreter support for VarHandle accessors\""
    },
    {
      "commit": "becc83b59ff703c02198f832dbc3216a0ab8a022",
      "tree": "38a3061481f01e2dcdc955bd9e9ddb60e0fd5a6f",
      "parents": [
        "1e5b3f39ff1776fd8b7d8d7d372347a08d98781b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Dec 08 11:36:19 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 06 12:51:42 2018 +0000"
      },
      "message": "ART: Interpreter support for VarHandle accessors\n\nAdd support for invoking VarHandle accessors in the interpreter and\nforces code with VarHandles accessor invocations to use the interpreter.\n\nBug: 65872996\nTest: art/test/run-test --host 712\nChange-Id: I9ee3ad6aef6a3bc73d90cec0a8e023e5db42b7a2\n"
    },
    {
      "commit": "279e3a3499d208daf467a1690b111dfb06f3e96e",
      "tree": "74c7d6d860bea25aabae47dc0ca95bafb0571f8e",
      "parents": [
        "ca6f1c0cb7655e90237583c1b6b771d3c8aae95d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 24 18:17:55 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 05 13:38:20 2018 -0800"
      },
      "message": "Enable code item deduping\n\nDedupe code items if they have the same contents, this is safe\nbecause of the fixed quickening logic.\n\nRemoved duplicate code items in ManyMethods that caused the startup\nmethods section to be empty in dex2oat_test.\n\nTo avoid errors related to quickening and compilation of shared code\nitems, quickening is currently disabled for shared code items.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I7c62eb746785d787c5269effd396f7be4859d3a6\n"
    },
    {
      "commit": "a927295aa29123fd85ac7a7f0e7c3763b5f7b974",
      "tree": "64e00ab597daea17274768c047ff0fab23cebb65",
      "parents": [
        "e65948f7c78919083224c1cd2ca47e827ced6d3e",
        "ca97ada4ec14373242de2452a6d0c16804007d66"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 02 21:17:42 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 02 21:17:42 2018 +0000"
      },
      "message": "Merge changes I39354837,Id8e47f45\n\n* changes:\n  Change ClassFileLoadHook to lazily compute dex file\n  Remove unneeded mutator_lock_ requires from fixed_up_dex_file\n"
    },
    {
      "commit": "ca97ada4ec14373242de2452a6d0c16804007d66",
      "tree": "483cba96eb8cbc8e06a2ef8651f66d208626e30b",
      "parents": [
        "2e40c1c2e9c8cfc2d41a8960247bfa48e2500889"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 02 09:25:31 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 02 11:04:38 2018 -0800"
      },
      "message": "Change ClassFileLoadHook to lazily compute dex file\n\nCreating a dex file from the quickened or compact-dex\u0027d internal\nformat for calling the JVMTI ClassFileLoadHook is quite expensive.\nThis meant that agents could not generally listen for this event\nwithout causing unacceptable performance problems.\n\nSince agents will generally not touch the buffer, needing to\ninstrument only a handful of classes we will fix this problem by doing\nthe de-quickening lazily. This is done by mmaping an empty buffer with\nPROT_NONE and then filling it in when the program has a SEGV in the\nappropriate address range. This should improve the performance of any\nagent that listens for the ClassFileLoadHook but does not commonly do\nanything to the buffer.\n\nThis does have the disadvantage that we can no longer ensure that the\nbuffer size we pass down in class_data_len might no longer be fully\naccurate. Some agents that assert that class_data_len is exactly the\nsame as the dex-file will need to be updated.\n\nBug: 72402467\nBug: 72064989\nTest: ./test.py --host -j50\nTest: ./test.py --host --redefine-stress -j50\n\nChange-Id: I39354837f1417ae10a57c5b42cbb4f38f8a563dc\n"
    },
    {
      "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": "85f890b792d1547182d195db3f43240180ab880b",
      "tree": "1f30b196288ddd8fdc09614145d3c17acc92af94",
      "parents": [
        "d2b5229453af661572f0c76ac08dfd3f52727d5b",
        "787784f9effb126b5d0d3dc97d544c4a477b5daf"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 18:56:50 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 30 18:56:50 2018 +0000"
      },
      "message": "Merge \"Revert \"Make libdexfile build independent of runtime dir\"\""
    },
    {
      "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": "ea5575b241222e3360963e944c1306330cdd16b8",
      "tree": "96fff85458cc411b2f329254abb045855dc7415a",
      "parents": [
        "8d8cf2e6098a8b167e03e387c50857477190bbad",
        "b40b7e73469339a6b667b4a2e2b8690112a74dc9"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 11:47:42 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 30 11:47:42 2018 +0000"
      },
      "message": "Merge \"Make libdexfile build independent of runtime dir\""
    },
    {
      "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": "b21c7043037eb19289799b23eb9fa03d8956cd56",
      "tree": "9d8a293085afc00fc0f34bc9ec4d59d92c0dcea8",
      "parents": [
        "c6805743f4c2d4bf5fdbf4518e952645490b85e6"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jan 29 21:10:59 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jan 29 23:53:36 2018 +0000"
      },
      "message": "Fix loading of cdex files.\n\nIf the shared data section is not explicitly provided, we must pass\nnullptr to OpenCommon, which will in turn infer it from the header.\n\nBug: 72520014\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I3eab0f68ff379f8d407f4bb00704ea54d5ae3452\n"
    },
    {
      "commit": "9b302bf57c9966dcac51582d83ea7606666c500b",
      "tree": "032beea38c2c75dddec0fb19399791c8d3f25953",
      "parents": [
        "816ca4d083ae9c439be587a0192906fe1510a123"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 13:08:08 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 13:09:19 2018 -0800"
      },
      "message": "Fix method handles using wrong section\n\nFor compact dex, the method handles were using offsets relative to\ndata section instead of main section. Fixed this code and the map\nlist offset logic in InitializeSectionsFromMapList.\n\nTest: test/run-test  --always-clean --dex2oat-jobs 4 --host --prebuild --compact-dex-level fast --optimizing --no-relocate --runtime-option -Xcheck:jni 979-const-method-handle\nBug: 63756964\nChange-Id: I9e6ddfd77da99ae1aedef7591536be190ff60904\n"
    },
    {
      "commit": "c3a22aa19bbe35ff8447460b29e07d42937a39de",
      "tree": "9f795deb249eebcf573dfe07a98d70c1d52ce898",
      "parents": [
        "d3233abdf14f173bb99e3905e8543ffff845230e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 19 18:58:34 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 24 19:53:20 2018 -0800"
      },
      "message": "Add shared separate data section for compact dex\n\nAdded a shared dex data buffer for compact dex files, this buffer\nis referenced by all compact dex files in a vdex file. Repurposed\nthe existing data_off / data_size fields in the header.\n\nAfter the shared buffer is filled up, it is placed after the dex\nfiles in the oat writer and the dex file headers are fixed up to have\nthe correct offsets / sizes to the shared buffer.\n\nMotivation:\nMake it easy to deduplicate data across dexes.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I17855a0c78b20be3d323d12dedb9c695962be3ed\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": "b95eb37a04874a57046fba7fc09a8b197691e9a2",
      "tree": "547fb453899b546223dde08238e25cba3dc5fb0a",
      "parents": [
        "f60b4c80e01b21da2228d35bc20309913065565d",
        "f30752709e1131ae1a4c16f22cc7a0960c198e77"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 24 08:56:59 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 24 08:56:59 2018 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Don\u0027t embed the dex code in the oat file if dex is uncompressed.\"\"\""
    },
    {
      "commit": "e6b6ff89e3cac4e443e731fbcdd957e32c7bc189",
      "tree": "64a48abd2a97b1ece83b014fa02cd5c40b580eb4",
      "parents": [
        "49971eb50c0213b7506bdd29954a6a4423e6426a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 19 18:58:34 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 23 12:08:13 2018 -0800"
      },
      "message": "Revamp dexlayout writing functions\n\nAdded some stream abstractions to make it easier to split apart\nthe main part of the dex file compared to the data one.\n\nMoved to using a vector based stream instead of a mem_map one.\n\nMotivations:\nMake it easy to separate data into a separate stream for multidex data\ndeduping.\nRemove upper bounds on dex expansion that would SIGSEGV if the writer\nwent over the limit.\n\nBug: 72051652\nBug: 63756964\nTest: test-art-host\n\nChange-Id: Ic622a4142b161566d149166a1767434ff4cc7fec\n"
    },
    {
      "commit": "f30752709e1131ae1a4c16f22cc7a0960c198e77",
      "tree": "c671f0ac704f7a702fed77295a1d5fe690425394",
      "parents": [
        "2e1791b74406fba9930bbe5dfa5358d2d2c07e1a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 08 12:41:19 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 23 14:38:35 2018 +0000"
      },
      "message": "Revert \"Revert \"Don\u0027t embed the dex code in the oat file if dex is uncompressed.\"\"\n\nBug: 63920015\nBug: 70854754\n\nTest: oat_writer_test.cc, test.py\n\nRevert was due to userdebug/user differences, which is fixed with:\nhttps://googleplex-android-review.googlesource.com/#/c/platform/build/+/3434091/\n\nThis CL also fixes oatdump when the dex code is not in the .vdex file.\n\nThis reverts commit e166e67666bf4b23e4ed0a98f5e2bb3cae9cee7d.\n\nChange-Id: Iec924be2ff8f03cf2ebe306e7a0018241f33beb0\n"
    },
    {
      "commit": "5a1f6294919206d117662925ff2ad7cd0802721d",
      "tree": "3414edb24e5a834207551a3b172d37552cbe2a55",
      "parents": [
        "5577295109a8af9f5bd31430670e5cbbc1a1e079"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 19 11:08:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Jan 22 20:50:17 2018 +0000"
      },
      "message": "Build dexdump2 and dexlist without libart\n\nFinally, flesh out libdexfile enough that it can replace libart for use\nin dexdump2.\n\nBug: 22322814\nTest: make -j 50 dexdump2 dexlist\n      dexdump2 -d fb/base.apk\n      dexlist fb/base.apk\n\nChange-Id: Ibf9a1cd642cd473eea0b2208d72b4768aaa17f02\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": "91c04897159dd2b23bc731421b43d887956dc360",
      "tree": "20f638c520dce0d6a5f836400ed8b523aa2e44a8",
      "parents": [
        "a4377a8bc2254b675c6245645159bf292603f76a",
        "e73550ddf8a8d8d22998476f8c16f90461af91fa"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 17 16:31:23 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 17 16:31:23 2018 +0000"
      },
      "message": "Merge \"Make libdexfile usable from libunwind\""
    },
    {
      "commit": "e73550ddf8a8d8d22998476f8c16f90461af91fa",
      "tree": "b486127cd046e2d940b619a953779073c1c7836a",
      "parents": [
        "fa0b0db6fbdcbf20bf78c53500ac98cfc3a26208"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jan 16 12:35:41 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 17 13:55:36 2018 +0000"
      },
      "message": "Make libdexfile usable from libunwind\n\nCan not depend on libutils as that causes build cycle.\nUse just jni_headers instead.\n\nMake the library available in vendor builds.\n\nFill one of the basic dex Open methods which does not\ndepend on the ART runtime.\n\nAdd some needed definitions to elf.h for libunwind.\n\nBug: 66919073\nTest: m test-art-host-gtest\nChange-Id: Ie3a42c127a19c1b986934723688e9f8903ba8fb9\n"
    },
    {
      "commit": "34554c9a6aadd66845a25d1b23a64759f6692e32",
      "tree": "d19388fbe0aafeea033ef9d2daf38c84d3b2d97a",
      "parents": [
        "e28567f36f559f5ba7aa70fbe6341ce3e30987db",
        "8740c66cbfbeb3b7f306279c843650c3b18f2dca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 22:54:46 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 16 22:54:46 2018 +0000"
      },
      "message": "Merge \"Use efficient encoding for compact dex code item fields\""
    },
    {
      "commit": "8740c66cbfbeb3b7f306279c843650c3b18f2dca",
      "tree": "f6c095c184fdf3e5fb2f243acdc818ce20e928a5",
      "parents": [
        "dcbe96b23b8be48d4cce799caf5a9a207b137f06"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 11 14:50:02 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 11:24:02 2018 -0800"
      },
      "message": "Use efficient encoding for compact dex code item fields\n\nUse a compact format for compact dex code items. In the common case,\nthere are only 4 bytes worth of fields.\n\nThis is accomplished by shrining the fields and adding an optional\npreheader before each code item that describes fields that don\u0027t fit\nin the fast path case. The preheader may use up to 12 extra bytes.\nExperiments showed that the preheader is only non empty for ~1% of\ncode items.\n\nCompactDex code item:\n0-12 bytes: Optional preheader\n\u003cCode item pointer\u003e\n4 bits: register size\n4 bits: ins size\n4 bits: outs size\n4 bits: tries size\n11 bits: num code item units\n5 bits: preheader flags\n[Dex Instructions]\n\nStandard dex code item:\nSee: https://source.android.com/devices/tech/dalvik/dex-format\n\u003cCode item pointer\u003e\n16 bits: register size\n16 bits: ins size\n16 bits: outs size\n16 bits: tries size\n32 bits: num code item units\n[Dex Instructions]\n\nAlso change code item alignment to be 2 byte aligned for code items\nthat don\u0027t have payload instructions that require 4 byte alignments.\n\nResults (on golem).\nThe CL reduces vdex size by an average of 4.3%. Interpreter performance\nis 0.3-1% slower, but may be noise.\n\nTest: test-art-host\n\nBug: 63756964\n\nChange-Id: I836fd098063dd1573a3dfb6ac465a6d33d2cb2c9\n"
    },
    {
      "commit": "2b9c35be35a759ba2032692648f5bbcb1e7e78c8",
      "tree": "4825fdb4a4ecd27922dc9c945b30423534e67010",
      "parents": [
        "6d4c343ee5db18f039aeb3e07ff8d3c1fd37c3a0"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jan 12 15:44:43 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 16 15:32:12 2018 +0000"
      },
      "message": "Introduce new build tool: hiddenapi\n\nNew tool `hiddenapi` iterates over all class members inside given\nDEX files and modifies their access flags if their signatures\nappear on one of two lists - greylist and blacklist - provided as\ntext file inputs. These access flags denote to the runtime that\nthe marked methods/fields should be treated as internal APIs with\nrestricted access.\n\nTwo bits of information are encoded in the DEX access flags. These\nare encoded as unsigned LEB128 values in DEX and so as to not\nincrease the size of the DEX, different modifiers were chosen to\ncarry the information under different circumstances.\n\nFirst bit is encoded as the inversion of visibility access flags\n(bits 2:0). At most one of these flags can be set at any given time.\nInverting these bits therefore produces a value where at least two\nbits are set and there is never any loss of information.\n\nSecond bit is encoded differently for each given type of class\nmember as there is no single unused bit such that setting it would\nnot increase the size of the LEB128 encoding.\n - Bit 5 for fields as it carries no other meaning\n - Bit 5 for non-native methods, as `synchronized` can only be set\n   on native methods\n - Bit 9 for native methods, as it carries no meaning and bit 8\n   (native) will make the LEB128 encoding at least two bytes long\n\nThis tool is meant to be applied on boot class path DEX files and\nas such, this encoding is not part of the DEX specification and may\nchange in the future. Access flags returned by ClassDataItemIterator\nare stripped of these hidden flags and thus fully transparent to the\nruntime.\n\nTest: m test-art-host\nBug: 64382372\nChange-Id: Ifc237ff8a35a8b470b7fc682a9cb879370d1e6e9\n"
    },
    {
      "commit": "8892c6bd9235e7ae697039c901aaeea1597a7473",
      "tree": "fa10893a270bad91d3503a761f140cbe9c97a74c",
      "parents": [
        "210531f8775c89feb90d430cd5b6026b4cf8ef89"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 09 15:10:17 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 13 01:40:47 2018 +0000"
      },
      "message": "Move debug info offsets into a side table\n\nAdd a compact side table for figuring out the debug info offsets\nfor a given method index. This reduces dex size by ~1.2%.\n\nThe debug table is keyed by method index and has leb encoded\noffsets for the offsets. This means the table is smaller if debug\ninfos are encoded by method index order.\n\nTo prevent expansion for method indicies without debug info, there\nis a bitmap that specifies if a method index has a debug info offset.\n\nMotivation: Reduce code item size and allow more deduping in the\nfuture.\n\nTest: test-art-host\nBug: 63756964\n\nChange-Id: Ib983e85c1727f58c97676bde275f4a9756314da0\n"
    },
    {
      "commit": "210531f8775c89feb90d430cd5b6026b4cf8ef89",
      "tree": "3c23fffcc0d1d7876f15f64672e0de98b1f051ca",
      "parents": [
        "3c9e0f69b04b614c44448e66e15c6f8a78da4b2c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 12 10:15:51 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 13 01:40:03 2018 +0000"
      },
      "message": "Revert \"Revert \"Move quickening info logic to its own table\"\"\n\nBug: 71605148\nBug: 63756964\n\nTest: test-art-target on angler\n\nThis reverts commit 6716941120ae9f47ba1b8ef8e79820c4b5640350.\n\nChange-Id: Ic01ea4e8bb2c1de761fab354c5bbe27290538631\n"
    },
    {
      "commit": "3c9e0f69b04b614c44448e66e15c6f8a78da4b2c",
      "tree": "8881cea1d86cf000f6c33b388827fe53b403b140",
      "parents": [
        "017adc29ab0384fa042fdea21cdbf6cfaf4019f2",
        "fa3db3d377bfaceb51c9a97864b17ce02538b7e0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 13 01:39:23 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 13 01:39:23 2018 +0000"
      },
      "message": "Merge \"Change compiler tests to have aligned code item\""
    },
    {
      "commit": "fa3db3d377bfaceb51c9a97864b17ce02538b7e0",
      "tree": "e499305451300d3a7a9a2c4e86d5392846f889e2",
      "parents": [
        "b12293f196dffe3df29a17a054565bac1b578a4f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 12 14:42:18 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 13 00:29:43 2018 +0000"
      },
      "message": "Change compiler tests to have aligned code item\n\nPreviously, the code item was not necessarily 32 bit aligned. This\ncaused bus errors on armv7.\n\nAlso create a real dexfile object instead of casting 0 initialized\nmemory to a dex file pointer. We just got lucky before that the cdex\nboolean was false.\n\nTest: test-art-target-gtest\nBug: 63756964\nBug: 71605148\n\nChange-Id: Ic7199f2b97bbd421de1d702efa5c6531ff45c022\n"
    },
    {
      "commit": "013fd8073f3ece22b0bba1853d3f3430c8a9e4bd",
      "tree": "d1fb1ce709d4927a8b5f5d7fc673b6932ca4977a",
      "parents": [
        "a7e4a15ba7b40fbe1ecd76ce0d99de90aa42201f"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 11 22:55:24 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 12 12:47:13 2018 -0800"
      },
      "message": "Create an ART-independent DexFileLoader\n\nOpening DEX files should not rely on instantiating a runtime or having a\nlarge number of dependencies on runtime components.  This CL makes\nDexFileLoader a stub class that is independent of ART, and introduces a\nsubclass ArtDexFileLoader that contains the current implementations.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ia6e92ae93c347057ea0c10455525239cbbe42c03\n"
    },
    {
      "commit": "6716941120ae9f47ba1b8ef8e79820c4b5640350",
      "tree": "76dd7d32703505d4ab44c0b55a7ecaf3ff66a94e",
      "parents": [
        "7a26f948204377130be7b738d70d7365c86a804b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 12 09:06:14 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 12 09:06:14 2018 +0000"
      },
      "message": "Revert \"Move quickening info logic to its own table\"\n\nBug: 71605148\nBug: 63756964\n\nSeems to fail on armv7.\n\nThis reverts commit f5245188d9c61f6b90eb30cca0875fbdcc493b15.\n\nChange-Id: I37786c04a8260ae3ec4a2cd73710126783c3ae7e\n"
    },
    {
      "commit": "7a26f948204377130be7b738d70d7365c86a804b",
      "tree": "dd3ab45b73127fdcbcdca64bbac484bfe2c0a8cd",
      "parents": [
        "29504326da13831fa3060ac507927c4d76aa556a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 04 18:23:55 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 11 10:58:22 2018 -0800"
      },
      "message": "Move quickening info logic to its own table\n\nAdded a table that is indexed by dex method index. To prevent size\noverhead, there is only one slot for each 16 method indices. This\nmeans there is up to 15 loop iterations to get the quickening info\nfor a method. The quickening infos are now prefixed by a leb\nencoded length. This allows methods that aren\u0027t quickened to only\nhave 1.25 bytes of space overhead.\n\nThe value was picked arbitrarily, there is little advantage to\nincreasing the value since the table only takes 1 byte per 4 method\nindices currently. JIT benchmarks do not regress with the change.\n\nThere is a net space saving from removing 8 bytes from each\nquickening info since most scenarios have more quickened methods than\ncompiled methods.\n\nFor getting quick access to the table, a 4 byte preheader was added\nto each dex in the vdex file\n\nRemoved logic that stored the quickening info in the CodeItem\ndebug_info_offset field.\n\nThe change adds a small quicken table for each method index, this\nmeans that filters that don\u0027t quicken will have a slight increase in\nsize. The worst case scenario is compiling all the methods, this\nresults in 0.3% larger vdex for this case. The change also disables\ndeduping since the quicken infos need to be in dex method index\norder.\n\nFor filters that don\u0027t compile most methods like quicken and\nspeed-profile, there is space savings. For quicken, the vdex is 2%\nsmaller.\n\nBug: 71605148\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I89cb679538811369c36b6ac8c40ea93135f813cd\n"
    },
    {
      "commit": "21cf2581844c478db3627d3e0259c205bce76ae7",
      "tree": "f74e21fe818dfe4fe40db8b774751b1a8aeaf628",
      "parents": [
        "680e88ba30d1c599c5eaab4a207db3e39bf2d57f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 08 17:09:48 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 09 09:26:09 2018 -0800"
      },
      "message": "Convert to StandardDex in fixup_dex_dex_file\n\nIn fixup_dex_file, run dexlayout to convert compact dex back to\nstandard dex since the output is supposed to be standard dex.\n\nFixed a bug in dexlayout where conversion from compact dex -\u003e\nstandard dex was not supported becuase the dex header was always\npreserved.\n\nTest: test/testrunner/testrunner.py  --host ---redefine-stress --compact-dex-level fast\nBug: 63756964\n\nChange-Id: Id13e8593458213e7040d053c35e8914404ae5381\n"
    },
    {
      "commit": "698ebbca3c54d17c696e87b9e5838df6a5ac9b08",
      "tree": "7887b2cd4662410114f205bbe1896ff094d51407",
      "parents": [
        "4b9a11f1d43df69c50e93ba1793fce1c2216682b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 05 11:00:42 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 08 09:11:49 2018 -0800"
      },
      "message": "Clean up CodeItemAccessors and Compact/StandardDexFile\n\nChange constructor to use a reference to a dex file.\n\nRemove duplicated logic for GetCodeItemSize.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I69af8b93abdf6bdfa4454e16db8f4e75883bca46\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"
    }
  ]
}
