)]}'
{
  "log": [
    {
      "commit": "39b378ca3b4b6dc6da1651b84ee4289cd9bff0f8",
      "tree": "1da7bdc834fbc2f11243fa2b936f0d7a67d982c1",
      "parents": [
        "dcc528d2c7d5ac2cc075d4c965fdf702421d0f43"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 15:44:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Factor out gAborting\n\nCut dependencies on base/logging.h by moving gAborting to its\nown header. Leave the static storage in logging.cc.\n\nTest: m\nChange-Id: Ib2ca880e15f9cb50cb9aab803784826bb46efb5e\n"
    },
    {
      "commit": "7919db947bc41f6f5d194c50b88d0cba47319a1c",
      "tree": "ae1aa7fed4e9a6c6bbec3fc1c2b85cef173e737c",
      "parents": [
        "50f90a44f8cd1928054245cab4cd3bd47a1a6347"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 29 09:00:55 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 01 08:55:08 2017 -0800"
      },
      "message": "Speed up MterpShouldSwitchInterpreters check\n\nWe were often performing a pair of TLS reads in order to determine in\nthe current thread has any pending asynchronous exceptions (exceptions\nthrown by the JVMTI StopThread function). This is quite slow and was\nimpacting some benchmarks. Since it is expected that asynchronous\nexceptions are extremely rare we will first check to see if any\nasynchronous exceptions have been sent on the current process. Only if\nat least one asynchronous exception has been thrown will we do the\nexpensive TLS lookups to determine if one has been thrown on the\ncurrent thread.\n\nUsing a global instance value without synchronization or atomics is ok\nhere since the checkpoint that actually sets the async_exception_thrown\nflag provides synchronization by either occurring on the target thread\nor passing the checkpoint.\n\nAccording to go/lem this gives us a 7% increase on the caffeine\nstring benchmark.\n\nTest: go/lem runs\nTest: ./test.py --host -j50\nBug: 68010816\nChange-Id: I62684a5b3a7fc7cc600f5efd2a2393d9c4025917\n"
    },
    {
      "commit": "33bff25bcd7a02d35c54f63740eadb1a4833fc92",
      "tree": "553db4f60878acf2a0fa7036a739d406df9a29b7",
      "parents": [
        "321b3ca9a36d769283c64d4bdee0798db80af524"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 01 14:35:42 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 02 10:11:02 2017 +0000"
      },
      "message": "ART: Make InstructionSet an enum class and add kLast.\n\nAdding InstructionSet::kLast shall make it easier to encode\nthe InstructionSet in fewer bits using BitField\u003c\u003e. However,\nintroducing `kLast` into the `art` namespace is not a good\nidea, so we change the InstructionSet to an enum class.\nThis also uncovered a case of InstructionSet::kNone being\nerroneously used instead of vixl32::Condition::None(), so\nit\u0027s good to remove `kNone` from the `art` namespace.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I6fa6168dfba4ed6da86d021a69c80224f09997a6\n"
    },
    {
      "commit": "891a50e9dc0f02ee34bd7348f80b621249153af5",
      "tree": "6af57b3aa8961ed8e6cd39fdf5a0ac335905b4c6",
      "parents": [
        "13e6f2935d67742e9eec14b412d33bf71b20697b"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Oct 27 17:01:07 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Nov 01 11:39:19 2017 -0700"
      },
      "message": "Separate file utilities from utils.cc\n\nReduce the dependencies from utils.cc to arch/ subdirectories, etc.\n\nBug: 22322814\nTest: make test-art-host\nChange-Id: I4decd15ff4ec460735bfb58cebb1c6a1bf32b68f\n"
    },
    {
      "commit": "26ef34c01ae5db2d3c964844b3717b8974a612c9",
      "tree": "8470588d8d0601626b3524abb5fbe19386ba7fe4",
      "parents": [
        "62540e3cc58abde95e147210d584614651d858b5"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 01 13:32:41 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 01 16:21:52 2017 +0000"
      },
      "message": "ART: Move intrinsics definitions to runtime\n\nBug: 37538194\nTest: art/test.py --host\nChange-Id: Ic7adf5f8b14be0e1880ae898a4e199b4416a4d24\n"
    },
    {
      "commit": "5751dc831ffd8acb089c2aff2e2ddf18f89da975",
      "tree": "bdbf90587d3c0aaa42a2276db06bd1ddeb3cb2c0",
      "parents": [
        "dc02d53eeea1c80d4f77cc66a00c42d398a04c18",
        "e875f4c210ce0598e47b6d66ec12cd7c60208844"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 27 10:08:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 27 10:08:58 2017 +0000"
      },
      "message": "Merge \"Don\u0027t verify dex file when the runtime is in NoVerify mode.\""
    },
    {
      "commit": "e875f4c210ce0598e47b6d66ec12cd7c60208844",
      "tree": "c3836836ceafec0d881fd7c27a1438ab860cac0a",
      "parents": [
        "88a6296e13cae96157a451efa5776d1fecb05912"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 26 12:26:43 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 26 12:26:43 2017 +0100"
      },
      "message": "Don\u0027t verify dex file when the runtime is in NoVerify mode.\n\nbug: 30972906\nbug: 63920015\n\nTest: systrace of priv-app with OOB, no verification at startup\nChange-Id: I479a7ddcfa495228a379744b23c26fa8c91c3dde\n"
    },
    {
      "commit": "d863be7a36bf2017958051fe1191ed47192085e8",
      "tree": "528db45904a0bfac04bb96e38f9de63701fb8169",
      "parents": [
        "373a9b5c718a45ac484afcf4fe6ce84f4bb562b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 12 12:02:28 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 26 02:13:09 2017 +0000"
      },
      "message": "ART: Move JniConstants::init from ART to libcore\n\nThis should live with libcore. There\u0027s no deep magic in the runtime\nstartup.\n\nAlso remove dependency on libnativehelper shared library.\n\nBug: 65522645\nTest: m\nTest: m test-art-host\nTest: Device boots (bullhead)\nChange-Id: I6d03144fa02461d31e9e26c27cdb3a9a9510122d\n"
    },
    {
      "commit": "373a9b5c718a45ac484afcf4fe6ce84f4bb562b3",
      "tree": "52a3e78fa8bc94a76674caaae837c728332d05dc",
      "parents": [
        "d0332e01ac26c2fd0a900de000a55ed5768ff936"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 18 09:01:57 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 25 10:13:59 2017 -0700"
      },
      "message": "ART: Depend on libnativehelper headers only\n\nDepend on header-only versions where possible. Move projects\nexcluding libart to libnativehelper_header_only.\n\nBug: 65522645\nTest: mmma art\nChange-Id: I53dd3b2a97e94ee685f72de007ed3858f7f5c6b6\n"
    },
    {
      "commit": "cad70a281cc7c97a6c2eeb2675952f2d3b12f4ee",
      "tree": "1c0c51b34dc92ce87d7fd579ac46b495aebd615c",
      "parents": [
        "2a79e48b43e1a2c0ece941db8d141a0c02542deb",
        "dfeec3a983c81e62fbfeb4eb81d4f58b65effd80"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 23 08:33:43 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 23 08:33:43 2017 +0000"
      },
      "message": "Merge \"Pass the verify flag to DexFileLoader utilities.\"\nam: dfeec3a983\n\nChange-Id: I0af6e8ebd41e9feb187ea640ac4e043cb7a9a80d\n"
    },
    {
      "commit": "095c6c96236476b605b3ac672f6d2b8c151e9479",
      "tree": "fe04b7fe93e65efadd3f019dd1ecba4c2c40df18",
      "parents": [
        "b277aa1385f7f4593c9978d8106669142d158f4f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 19 13:59:55 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 20 14:22:52 2017 +0100"
      },
      "message": "Pass the verify flag to DexFileLoader utilities.\n\nRefactoring-only change.\n\nAlso remove unused DexFilerLoader::OpenMemory.\n\nbug: 30972906\nbug: 63920015\n\nTest: build.\n\nChange-Id: I7cd4b5787565ab1a3457ce2be6bb14657229c550\n"
    },
    {
      "commit": "ebd60e1331d8330f01d792be61a14cf425240f6b",
      "tree": "156cd2bdba366e5591c889b5f38daae5bed752e0",
      "parents": [
        "8fb092125112ec4a6bf38a91e417c53bbb7f7a8e",
        "26d46e51a8c387d26e7971857e26f4582b936204"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 16 23:20:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 16 23:20:53 2017 +0000"
      },
      "message": "Merge \"Remove low RAM special casing for heap growth multiplier\"\nam: 26d46e51a8\n\nChange-Id: Ief4f2993762c0fce548fc8c5efc62c33b8e89a7a\n"
    },
    {
      "commit": "11c273ddfda3e30d14af32e385570955b61bc39b",
      "tree": "d771029bda69385e3ea3297a473bf841a05bed6d",
      "parents": [
        "44f520b12bab27ef4c0719f9dd296d76c79b23cb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Oct 15 20:54:45 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 16 13:11:15 2017 -0700"
      },
      "message": "Remove low RAM special casing for heap growth multiplier\n\nMoved to change the default value in runtime.cc. This enables\nchanging the value by passing in a\n-XX:ForegroundHeapGrowthMultiplier value.\n\nThis enables devices to set the foreground heap growth multiplier\nto non 1.0 values even when low_memory_mode is true. Doing this\nreduces GC frequency and can help device performance.\n\nIncreased the limit to 5.0 since the old limit of 1.0 was bogus.\n\nBug: 67416130\nTest: test-art-host\nTest: make and flash\n\n(cherry picked from commit 2f33ad21a5c3688c33c1f36665216d76bac47f2c)\n\nMerged-In: I86166830261c034255c23611cb8f4ebcf8c43b09\nChange-Id: I6fdf82e69ebe350476fb4fe3da9d22bf671b9eac\n"
    },
    {
      "commit": "b61bb245fdf49582582cb59074343a003afd1a4e",
      "tree": "866e16192e2950007b98235bdd1a29d3e6fbf8ac",
      "parents": [
        "66fca596f806f25da7402cefcadf84ad82e9d8c0",
        "2c8fe470a4a79be7280bfa467232d7de0f6ee6d5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 16 16:42:36 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 16 16:42:36 2017 +0000"
      },
      "message": "Merge \"Add -XX:MadviseRandomAccess option\"\nam: 2c8fe470a4\n\nChange-Id: I091c0cde18625cf7111a5057b65b9fb7d374e80c\n"
    },
    {
      "commit": "c42cb0e08a7c8f7085115e57b0ea92da9eee1575",
      "tree": "05fe067296d7e15bd3e607ac8792eca8652548dc",
      "parents": [
        "6cee5e402cb206f0c0878e999f885a7206dcbb09"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 13 11:35:00 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 13 16:35:55 2017 -0700"
      },
      "message": "Add -XX:MadviseRandomAccess option\n\nIf enabled, ART will advise random access to the kernel for files\nthat are thought to have such access patterns.\n\nBug: 67772594\nTest: verify that -XX:MadviseRandomAccess:true is passed to runtime init\n\n(cherry picked from commit 087f2046dfdf41646c740a05004b4d40cbd99b11)\n\nChange-Id: I76a5f62846d563a4f2cf25e47dbd320464aee8c1\n"
    },
    {
      "commit": "8e6cf2e3f62c0e1a745c7fe9c1b522aa6638da3c",
      "tree": "d533cf086eca6baf762a96336fb47447749d7284",
      "parents": [
        "51c1365b39b32dddc150b68b26f7b284a568e6a3",
        "ce7213d88b01c8f40a7d30116048eee5fd161a29"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 11 23:37:09 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 11 23:37:09 2017 +0000"
      },
      "message": "Merge \"Add DexFileLoader class\"\nam: ce7213d88b\n\nChange-Id: I6a63d4d65b11f681ed0a095390c698ec4b7dbe85\n"
    },
    {
      "commit": "79c87da9d4698ec58ece65af0065eebd55a1cfe0",
      "tree": "399797f37712da9d20829d5b5059b6c84943cb02",
      "parents": [
        "656e97f949df4081fba908113406b32915174502"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 10 11:54:29 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 11 14:47:06 2017 -0700"
      },
      "message": "Add DexFileLoader class\n\nAdded DexFileLoader class, moved functionality from DexFile there:\n- Multidex loading logic\n- DexFile opening logic for Zip and etc\n- Some other helpers\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: Ic3dfa458947d4b69912dea5cdd836e7e8f55061c\n"
    },
    {
      "commit": "277a467a17e1d2c053eb1b07b57841f2ad8e76dd",
      "tree": "6fb5b73945d5fd8f5193faafcb920f9ea9981204",
      "parents": [
        "a43f002e7b1f025437e91fbf4d146ef911e638d0",
        "e1fe6a98d43118fe0698b5122339c7af072fc418"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 19 11:54:44 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Sep 19 11:54:44 2017 +0000"
      },
      "message": "Merge \"Handle new zygote flags in ART\"\nam: e1fe6a98d4\n\nChange-Id: I92fbfa89d45f465376d37e57f11f27a6e23ba613\n"
    },
    {
      "commit": "e1fe6a98d43118fe0698b5122339c7af072fc418",
      "tree": "46ba2d257be9267b3439bc879b9ba4688c3b02cd",
      "parents": [
        "560b7c8f7fbec6df9c5e2e64892686f1b19c7373",
        "68bf3903250ff0bea11c4705ba331818c5bf5792"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 19 11:47:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 19 11:47:58 2017 +0000"
      },
      "message": "Merge \"Handle new zygote flags in ART\""
    },
    {
      "commit": "0c5edfeae694fbf224ad9104d686a85fdc4434ef",
      "tree": "85f41c77b2d57bedf636e6893f32eafd21238b33",
      "parents": [
        "9c2ff7ac87df212cf628220afacc27908408d928",
        "e16ed6da590e717e28c07e2c9d1b342efc678870"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 19:26:23 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 18 19:26:23 2017 +0000"
      },
      "message": "Merge changes I8ef4492b,I3c61421d\nam: e16ed6da59\n\nChange-Id: I1f5c80b54c6f470b6bcc6a917b28763286edbdb6\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": "68bf3903250ff0bea11c4705ba331818c5bf5792",
      "tree": "fe6c88466f3ee941232efd5ad2fdb9b3b03c7f76",
      "parents": [
        "fe712a8b9c247d66df013f2b4b6faa6009d745bb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 07 14:40:48 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 18 13:00:20 2017 +0100"
      },
      "message": "Handle new zygote flags in ART\n\nAdd support for DISABLE_VERIFIER and ONLY_USE_SYSTEM_OAT_FILES.\n\nbug: 30972906\nbug: 63920015\n\nTest: device boots\nChange-Id: I7c4eddc070908aed980d54d374c0b261d1f32d57\n"
    },
    {
      "commit": "7021287e6b34cf6d697f4a6f78fa6bd711afc590",
      "tree": "f3089c61b5b1c736e5d1a30b2d7fc3fbcf370308",
      "parents": [
        "97256b4205607fdd067663b48540e141c7f9f69a",
        "89c2f5edb096a82b5271b4671f40e4608a6cb14e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 13 02:53:58 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 13 02:53:58 2017 +0000"
      },
      "message": "Merge \"ART: Clear JniConstants on shutdown\"\nam: 89c2f5edb0\n\nChange-Id: I9294113aa08b76adac5fca8176d9b1263976ca64\n"
    },
    {
      "commit": "c4cb7c143d8acdbacf5276991df6f0aa83ab1f35",
      "tree": "096b95eafc2b6f514cfc6d04958bf61fc482b467",
      "parents": [
        "6b411fc9fd94da3c552d8b96cee14f6414e7b734"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 11 19:57:48 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 12 15:15:31 2017 -0700"
      },
      "message": "ART: Clear JniConstants on shutdown\n\nTo permit a new runtime to repopulate the JniConstants cache,\ncall ClearJniConstantsCache() on shutdown.\n\nBug: 65522645\nTest: m\nTest: m test-art-host\nChange-Id: I340cc2ced6b2e5bcd541f1d7b9741574e37c27eb\n"
    },
    {
      "commit": "2040eaa485c443754762af1be590a569f0c46534",
      "tree": "c2ccc6afe8472a34d268c076c0695777f76bdfb3",
      "parents": [
        "4dee436b9a68b701d096fcc0e31cae376a9a82f0",
        "47d00f6c4657af33c3cc29783c0f2eb156aa1449"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 11 21:36:46 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 21:36:46 2017 +0000"
      },
      "message": "Merge changes I88fd4905,Ib8c0a28c\nam: 47d00f6c46\n\nChange-Id: I2f2640ad8daa3b2067a297d73b9fd815ad1b2865\n"
    },
    {
      "commit": "db48a79e49a900e255c1a472d6436a655016125f",
      "tree": "76aceef48f11dd471782d73b75d1fe800916eb3d",
      "parents": [
        "fe30b3e2815c6140471338df5d903a2c1d242414"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 08 22:18:30 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 11 08:14:10 2017 -0700"
      },
      "message": "ART: Clear WellKnownClasses on shutdown\n\nThe members go stale on shutdown, so delete them. This also works\naround a startup bug that is relying on null members.\n\nBug: 65500943\nTest: m test-art-host\nChange-Id: Ib8c0a28c4b6509a0614a12e123b73e7c117db319\n"
    },
    {
      "commit": "9101bb8006e0200b1019dd151720b66c422fe942",
      "tree": "6c8ed94f4b04dbafa7c46d5ffc047bae36d99bef",
      "parents": [
        "11916265c30b2fe486d310dec52792f0ae6acee5",
        "afd3acdfd02dd027689afcbf19b6bb9252751205"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 07 20:33:02 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 07 20:33:02 2017 +0000"
      },
      "message": "Merge \"ART: Change thread dump order on abort\"\nam: afd3acdfd0\n\nChange-Id: Ib00dddf7adc116cd04d9c5fd0a415aff741eb869\n"
    },
    {
      "commit": "a3f78fedfb9f791f849d0daa8b10a43232f09752",
      "tree": "c93cd8ed6c26a630882bf9b1c1a97cb46fbba9a2",
      "parents": [
        "c101222c854a0c476f5b6ae64e20adbd38126a3c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 05 09:31:04 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 06 16:04:13 2017 -0700"
      },
      "message": "ART: Change thread dump order on abort\n\nDump the aborting thread last, in an effort to have it appear in\nthe logcat.\n\nBug: 64689630\nTest: m test-art-host\nChange-Id: Ib9148b542a950545a5873e7ca71d3d3b2cefbd1f\n"
    },
    {
      "commit": "7ac34dbd32f577f865d5a35163b79aeea77bedac",
      "tree": "e34da33296df7d6b9666f0ae215369cc73c1e623",
      "parents": [
        "59a65a14beda28a184357b1dfc1676637b627576",
        "adb075e5086b296164beed3ffafb2466d7f0d5ae"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 27 17:12:41 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 27 17:12:41 2017 +0000"
      },
      "message": "Merge changes If53d3ee3,I7cc0eea1 am: 078a27af84 am: e00842c852\nam: adb075e508\n\nChange-Id: I9d21bd1ae90d3d7993e9640b02d1bcfbc67eacc1\n"
    },
    {
      "commit": "605fe24d07062a038c8332a4d98f47052e9cee6a",
      "tree": "9c6b132e5ec615d3f0f3aa4ab6f24486fb31d2bb",
      "parents": [
        "5a906fcc111ffc07d9fd1e7265e8b4a89609f00e"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu Jul 20 15:57:21 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Jul 26 16:26:23 2017 -0700"
      },
      "message": "Implemented Nested Transaction\n\nTransaction can be created recursively and every transaction knows which\nclass it is created for.\n\nThe goal of implementing nested transaction is to let every class\ninitialization (especially execution of class initializer) associates\nwith one transaction which provides the ability to track whether field\naccesses are valid. To achieve this goal, we implemented a subclass for\nClassLinker called AotClassLinker, which will be instantiated instead of\nClassLinker under AOT compiler.\n\nAll invocations of InitializeClass happens at AOT compiler will be\nwrapped with creating and destorying transactions.\n\nTransactions will be paused when rollbacking, otherwise the memory will\nnot be rollbacked properly.\n\nThe use the transaction is changed and all usage are updated,\ncorresponding with native tests mentioning transaction, including\ntransaction_test and unstarted_runtime_test.\n\nThe validation rules will be implemented and explained in another CL.\n\nTest: make test-art-host -j64\n\nChange-Id: If53d3ee3231c337a9ea917f5b885c173917765de\n"
    },
    {
      "commit": "5a906fcc111ffc07d9fd1e7265e8b4a89609f00e",
      "tree": "2bc863d6a51f5e67562653686b138ae1d3757caf",
      "parents": [
        "055761a47c4c0f591faaf44279e8d6a412c4f513"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Jul 26 15:01:16 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Jul 26 15:05:24 2017 -0700"
      },
      "message": "Add strict flag in transaction\n\nAdd a flag named strict_ indicating whether we are compiling app images,\nwhich need more strict constraints to control \u003cclinit\u003es\u0027 behavours.\n\nWhen the transaction is marked as strict mode, behaviour changes\nincluding nested transactions, field access validation, memory\nconsumption limit and time out for \u003cclinit\u003e at compile time.\n\nTest: make test-art-host -j64\n\nChange-Id: I7cc0eea161803ad0d7763725d4deaeee21858054\n"
    },
    {
      "commit": "d5ecd3875fe99dada2627c373d9cd59553418b4e",
      "tree": "66415b522ef50d3075585f80209874a8e8ae4922",
      "parents": [
        "c1d4cb3e03c66c7f1f4cd661b05078f4f6ea7179",
        "f8d07c77c43e535c66bff9d4a8617be428041b00"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 25 23:23:32 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 25 23:23:32 2017 +0000"
      },
      "message": "Merge \"ART: Move CHA to ClassLinker\" am: 34a986f9d2 am: 748ac7c47c\nam: f8d07c77c4\n\nChange-Id: Ic798551706d44276492a1ac1ab29de50e14a6dde\n"
    },
    {
      "commit": "c1ac9ee48ddf483ec770b424d63de4982262ea33",
      "tree": "f0fe2958793a2eccef85c40ac94d056b046ca7de",
      "parents": [
        "aed968d130d62d23cfe7f6051ca72c6a84fe1510"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 22:35:49 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 25 11:15:09 2017 -0700"
      },
      "message": "ART: Move CHA to ClassLinker\n\nMove the ClassHierarchyAnalysis singleton to ClassLinker. Hierarchy\nanalysis is a link-time effort and belongs to class-loading instead\nof the global Runtime object.\n\nAlso clean up to use a unique_ptr, and add null checks to allow\nbypassing the analysis.\n\nBug: 34193647\nTest: m test-art-host\nChange-Id: I14ef536e37eb19c0dede372ffd68a826c482cf71\n"
    },
    {
      "commit": "e21311e01f5ac46802c1ff28b0a854ec182a0e19",
      "tree": "950b6bf928f538b4a38212c6a3bb2f633f54b96e",
      "parents": [
        "794c2c5a0a796164ef6cbb266d72d7aa3175d69d",
        "0945bca230c73f6f18be424ca7a195dcf2056ac7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 25 01:26:35 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 25 01:26:35 2017 +0000"
      },
      "message": "Merge \"ART: Include cleanup\" am: af89a91f05 am: d46189ca94\nam: 0945bca230\n\nChange-Id: Ibcc51ebd33411e0431e981169210d8f72dade3f4\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": "e5ceff1d0ab6006421f423d73ba817d2afafa31d",
      "tree": "e877b54520682fa2bbfeeab8353102e71fb90561",
      "parents": [
        "425a4eeb4c8b101955b2cbfd45dd875e503e8155",
        "a21482933add0d5e913875021493dfa788f6cc48"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 24 21:19:47 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 24 21:19:47 2017 +0000"
      },
      "message": "Merge changes I87b3fcb3,I971edf31,I5218a57c am: b67d0c0fce am: 37aef1ce80\nam: a21482933a\n\nChange-Id: Ic4924734fc8d99cff9defcd9ccb111246adb5f52\n"
    },
    {
      "commit": "cade5c3c75588da6d873df727acdaf3378a66efa",
      "tree": "126fc494a05e39d0b2566a608f15e140e5eb915f",
      "parents": [
        "16d1dd86dca33520b44d9802695e19d3b658af3e"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu Jul 20 17:56:26 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Sat Jul 22 16:33:20 2017 -0700"
      },
      "message": "Track class initializing in transaction\n\nAdd a field and a corresponding constructor to transaction which keeps\ntrack of the class that the transaction is initializing.\n\nTo implement constraints for \u003cclinit\u003e behaviors, the transaction needs\nto know which class it is initializing.\n\nTest: make test-art-host -j64\nChange-Id: I87b3fcb3ef15914c79c6687ec8a87058265eaead\n"
    },
    {
      "commit": "16d1dd86dca33520b44d9802695e19d3b658af3e",
      "tree": "c273a6256e2b8ea49e9e1935830fe9d1748ebcf4",
      "parents": [
        "3a3abd08ca92636a706c0efa777c0410258ebd5f"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu Jul 20 17:56:26 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Sat Jul 22 16:07:03 2017 -0700"
      },
      "message": "Move transaction creation to runtime\n\nMove the transaction creation to runtime instead of passing a pointer to\nruntime when EnterTransactionMode. Because later there will be more\nplaces to create transaction so this makes the code cleaner and more\ncompact.\n\nTest: make test-art-host -j64\nChange-Id: I971edf3110eb6634b6e0f7f56256be04517a5281\n"
    },
    {
      "commit": "3725e8734d690846c4f4cf8a0c880f1b11f97630",
      "tree": "6cff885c505429ed501f82856a6e9a6bcf07af4d",
      "parents": [
        "7a0e1f02b8f6affd231d24c212f94162939659e1",
        "f90ffb6b24f8ca34dd9885687c8026de89ad3247"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 14:23:51 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 20 14:23:51 2017 +0000"
      },
      "message": "Merge \"ART: Change method lookup to be more consistent to JLS and the RI.\" am: 331f4c4e28 am: 0d7c0e75fa\nam: f90ffb6b24\n\nChange-Id: I5ed28f4523ec4941b82fcad678dbdac7d557a3ef\n"
    },
    {
      "commit": "331f4c4e287791611733120c1a1c2afd55ecdd65",
      "tree": "1fcf7810c6c8e2df8b6191bb14a69084f3c7cf11",
      "parents": [
        "13c8343a3394414c90f2fcd1e8efff70e7d2387e",
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "message": "Merge \"ART: Change method lookup to be more consistent to JLS and the RI.\""
    },
    {
      "commit": "ba118827465d12177f3996e50133960087b1c916",
      "tree": "f39728cdafc7810004d51c0bef2728b98993daa9",
      "parents": [
        "64a102dde8c5daad83b991710decb418ce43aac5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 12 15:41:56 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 13:35:06 2017 +0100"
      },
      "message": "ART: Change method lookup to be more consistent to JLS and the RI.\n\nThe method lookup for different invoke types was previously\nwidely different and didn\u0027t work well with the dex cache\nmethod array where we have only a single slot for each\nMethodId. The new behavior is to perform the same lookup for\nall cases, distinguishing only between interface and\nnon-interface referencing class, and to further align the\nbehavior with the JLS and the RI. Where the JLS conflicts\nwith the RI, we follow the JLS semantics.\n\nThe new lookup for class methods first searches the methods\ndeclared in the superclass chain (ignoring \"copied\" methods)\nand only then looks in the \"copied\" methods. If the search\nin the superclass chain finds a method that has not been\ninherited (i.e. either a private method or a package-access\nmethod where one of the classes in the chain does not belong\nto the same package, see JLS 8.4.8), we still search the\n\"copied\" methods as there may actually be a method inherited\nfrom an interface. This follows the JLS semantics where\ninherited methods are included in the search (JLS 15.12.2.1)\nbut conflicts with the RI where the private or\npackage-access method takes precedence over methods\ninherited from interfaces.\n\nNote that this search can find an accessible method that is\nnot inherited by the qualifying type, either for a package\naccess method when the referrer is in the same package but\nthe qualifying type is in another package, or for a private\nmethod where the referrer is in the same class but the\nqualifying type is actually a subclass. For the moment we\nallow such calls and we shall consider whether to throw\nan IncompatibleClassChangeError in this situation in future\nto comply with JLS 15.12.4.3.\n\nThe new lookup for interface methods searches the interface\nclass, then all the superinterfaces and then the\njava.lang.Object class, see implicitly declared methods in\ninterfaces, JLS 9.2. The search for the maximally-specific\nnon-abstract superinterface method is not yet implemented,\nbut the difference should be difficult to observe as the\nusual subsequent call to FindVirtualMethodForInterface()\nshould yield the same result for any matching method.\n\nThe new test 162-method-idx-clash exposes several cases\nwhere we previously completely messed up due to the effects\nof the DexCache, or where we were out of line with the RI.\nIt also tests a case where the JLS and the RI disagree and\nwe follow the JLS.\n\nTest: art/test/run-test --host --jvm 162-method-resolution\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --interp-ac\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nBug: 62855082\nBug: 30627598\nChange-Id: If450c8cff2751369011d649c25d28a482a2c61a3\n"
    },
    {
      "commit": "41e245c3bb3ac5d5f65648b3681cbaeefa4225d9",
      "tree": "fbf151f26de541ef117012d017fc5701f5f470a2",
      "parents": [
        "dd197eeddd50dd5dea7e0e934fad7088b4e3d86a",
        "ea3c2058250333a852bbe783012e8b2795e501f9"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Jul 19 06:22:20 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 19 06:22:20 2017 +0000"
      },
      "message": "Merge \"art: use proper nativehelper headers\" am: c5b1b067fb am: 78a95b7e12\nam: ea3c205825\n\nChange-Id: I0b7672f7e352944b3c8fae06d9c4d05feb8d91db\n"
    },
    {
      "commit": "e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7",
      "tree": "b8733533e2478069aabbdc3a34d0f40aff33e1b1",
      "parents": [
        "b98d384eb424ad7e1dc9816392ded33dce0e0372"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 16:53:49 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 18:25:55 2017 -0700"
      },
      "message": "art: use proper nativehelper headers\n\nlibnativeheader exports headers under nativeheader. These were\navailable before incorrectly as global headers in order to give\naccess to jni.h.\n\nTest: modules using art find headers\nBug: 63762847\nChange-Id: I5c820d677e94e07b2859e78610bc997fe51b41dc\n"
    },
    {
      "commit": "653d36d5886e0d0c45c4c04f0b66841fa42cf80e",
      "tree": "67ce3ad64d4a79a56e056997dcff3c0e1790b239",
      "parents": [
        "0de4131940ef637ccae852a01f4c8e4afdd7f51a",
        "356a200d0f0d866bb6340714d981ab60d2df7596"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Jun 24 03:16:50 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jun 24 03:16:50 2017 +0000"
      },
      "message": "Merge \"ART: Add stack-dump mode for contention logging\" am: d1c983a5bc am: b78c0b2de5\nam: 356a200d0f\n\nChange-Id: I21cb38333804869b5347d6a5fe105f1fd5c563dd\n"
    },
    {
      "commit": "d0210e58100e029e865e783beb7906090781f602",
      "tree": "ace7eea3b27e97e3e01060ea1d0a6ef277a8f89f",
      "parents": [
        "a0e63dfbfe2f2513a709e94b8a1ac17418396fdf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 23 13:38:09 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 23 15:51:11 2017 -0700"
      },
      "message": "ART: Add stack-dump mode for contention logging\n\nAdd a second threshold to contention logging. If this threshold\nis reached, log the owner and the contender thread to the logcat.\n\nRequires a bit of refactor in the contention logging code to hold\nthe locks correctly (different requirements for owner and contender).\nAdd -Xstackdumplockprofthreshold:ms to control the threshold value.\nAs with general contention logging, default to 0 \u003d off. Use ThreadStress\nwith --locks-only to get test coverage.\n\nBug: 62353392\nTest: m test-art-host\nChange-Id: I1b5a5130c4f908497ac06464130844f5ca42a5fb\n"
    },
    {
      "commit": "4f247ab19affe2df1bd64526b51de5c169dba44a",
      "tree": "043adfae800954f3eddded9f53c6d284749f55ef",
      "parents": [
        "dbf737a0d087f71ebbeb5f12ed8656cf14d85cb0",
        "0ffbe5f14b14e84585a75ababd4864c187afae04"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 23 17:54:28 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jun 23 17:54:28 2017 +0000"
      },
      "message": "ART: Refactor abort code\nam: 0ffbe5f14b\n\nChange-Id: I21c10d568840278905901d4e5cb6f6447b4dc483\n"
    },
    {
      "commit": "0ffbe5f14b14e84585a75ababd4864c187afae04",
      "tree": "eaf1e5a462e5d75642b9c60493f117db781f8773",
      "parents": [
        "730a89768122befb904527b136288aadfd18ba72"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 21 21:05:13 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 23 08:28:26 2017 -0700"
      },
      "message": "ART: Refactor abort code\n\nRemove Runtime::Aborter and let Runtime::Abort set the abort message\non target.\n\nThis works around a missing tail-call optimization that leads to a\nsuperfluous frame on the call-stack when aborting.\n\nPartially reverts commit 3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0.\n\n(cherry picked from commit 51d80ccca5eb2ea0eef0de836dcc03e0545f63db)\n\nBug: 62810360\nTest: m test-art-host\nTest: Manual inspection of abort dump\nChange-Id: Ie4efc8bbdc8b665b23081b37a11921fe26b182b4\n"
    },
    {
      "commit": "247fc334ca91c22b19ac57b9c8bbbd15a1735aa1",
      "tree": "e7805a8d60f2af1dc18cdd759b0ef64f4a51adf6",
      "parents": [
        "51d80ccca5eb2ea0eef0de836dcc03e0545f63db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 22 16:18:24 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 22 16:18:24 2017 -0700"
      },
      "message": "ART: Make gAborting an atomic\n\nIt\u0027s probably overkill for the abort path, but make it safe,\nnonetheless.\n\nTest: m test-art-host\nChange-Id: I8d333ea5f01ad43bb98e71cd2c89902ced1bd68d\n"
    },
    {
      "commit": "51d80ccca5eb2ea0eef0de836dcc03e0545f63db",
      "tree": "14ff2bf5b9a9ca86d8a8d6f736cf27d8a1d47554",
      "parents": [
        "19df565ffcb30cb7b5217f074771078f0bb6cc1c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 21 21:05:13 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 22 16:04:07 2017 -0700"
      },
      "message": "ART: Refactor abort code\n\nRemove Runtime::Aborter and let Runtime::Abort set the abort message\non target.\n\nThis works around a missing tail-call optimization that leads to a\nsuperfluous frame on the call-stack when aborting.\n\nPartially reverts commit 3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0.\n\nBug: 62810360\nTest: m test-art-host\nTest: Manual inspection of abort dump\nChange-Id: Ie4efc8bbdc8b665b23081b37a11921fe26b182b4\n"
    },
    {
      "commit": "b2d18fa4e33ca119654ced872c70fe198b0b2db5",
      "tree": "9f0e3ac72b9b7b08794e1ecf458620ba19437465",
      "parents": [
        "58794c5c23f46a7476a58e5a10dbeebb6321aa90"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 06 20:46:10 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 09 11:36:45 2017 -0700"
      },
      "message": "ART: Clean up asm_support.h\n\nThe includes are only ever really needed for tests. Factor out\ngeneration of the test function into asm_support_check.h\n\nFix up missing includes, mainly intern_table.h.\n\nTest: m\nTest: m test-art-host\nChange-Id: I435199e6211e368be0a06c80d8fa95b9593aca31\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": "d482e73fe26cb9161511a80e3db39e08b9808ab6",
      "tree": "0b8c874f24c211e4e3d87083f8017580aa23ff63",
      "parents": [
        "a14100ccf51cc63a5c472188d1e2d337627e49eb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 17:59:09 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 16:26:35 2017 -0700"
      },
      "message": "ART: More header cleanup - runtime.h\n\nRemove unnecessary runtime.h includes. Refactor other headers\n(move to forward declarations) to make this possible.\n\nTest: mmma art\nChange-Id: I297f0ad444ba92169edd16d8c7cbe95bb6dbb800\n"
    },
    {
      "commit": "eb71033745325ffd5682fe7a6a48900e74657b02",
      "tree": "94205bdc252062cc1a35d6f545cd87c657a115cb",
      "parents": [
        "a4bf3c33e501758fa8e707ef30f9ee67ea20511e"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed May 10 11:48:46 2017 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed May 24 11:14:10 2017 +0100"
      },
      "message": "ART: Use file descriptors handed out by tombstoned for traces.\n\nThere no longer needs to be any logic in ART to generate file\nnames and create files. The test of file creation logic has\ntherefore been deleted.\n\nTest: manual, tests in other components.\nBug: 32064548\n\nChange-Id: I9bce6ddf3270839c40060d1287e79f9bd57d75aa\n"
    },
    {
      "commit": "5f2a2fcdba7c3ee502f1fa5df1ba69be6c83da33",
      "tree": "eb96bbf4524cffb5eb49f01c3426640eba44f7e3",
      "parents": [
        "a654e0378a8d0bb149362399917e4da2959e6991"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 18 17:45:07 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri May 19 08:08:51 2017 -0700"
      },
      "message": "ART: Reserve sentinel early\n\nReserve the sentinel early. Its address is out of the way of the\nimage.\n\nTest: m test-art-host\nChange-Id: Id04a76baaab60db86e863746d5ad6966c60cd334\n"
    },
    {
      "commit": "2ac67d526eb348019433138b04eb1473d45cb0f4",
      "tree": "ccc6e87b8f7694c14e686c0b024dcb1523107405",
      "parents": [
        "c4209f024a74f1aaf7a7c2d16482b5458ae0c687"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 11 22:30:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 18:21:49 2017 -0700"
      },
      "message": "ART: Reserve sentinel fault page\n\nAttempt to reserve a single page on startup that contains addresses we\nuse for clobbering.\n\nTest: m test-art-host\nChange-Id: Ibc0a29c99ff3ff42290877faaadcb914234024e4\n"
    },
    {
      "commit": "fd4d0d3eb9b5c7fe2fa1df97d9c0763900b2be52",
      "tree": "25c774814eb3b6e595ea9c267fcb93fee03bf3eb",
      "parents": [
        "bc9a87c33a3f1553934872387a0bb3178b5140e8"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 26 19:09:47 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri May 12 12:37:40 2017 -0700"
      },
      "message": "sigchain: always call InitializeSignalChain on startup.\n\nProcesses that link against libsigchain because they might want to\ndynamically load libart.so (e.g. surfaceflinger) might never explicitly\ncall InitializeSignalChain. In this scenario, the lazy initialization\nthat occurs when sigprocmask is called can happen at unexpected times,\nsuch as from pthread_exit, leading to deadlocks or crashes.\n\nAdd __attribute__((constructor)) to InitializeSignalChain to have it be\nautomatically called upon process start. Keep the existing calls to it\nin the wrapper functions in order to sidestep problems around static\ninitialization order.\n\nBug: https://issuetracker.google.com/37119593\nTest: run-test 004-SignalTest\nTest: m test-art-host\nTest: m test-art-target\nChange-Id: I7906c1f625ccca0350ea9310140a3f43a657be4c\n"
    },
    {
      "commit": "6e6444508de1afaeaf612970fad608b58b89b009",
      "tree": "ea42cbed1450be598869ef406bb1a6c31a7e4f77",
      "parents": [
        "270970e660d3c99e62a88b18144d159dd8699c55"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 09 16:30:27 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 10 10:07:32 2017 -0700"
      },
      "message": "ART: Make GC Pause Listener more precise\n\nRefactor code to call the listener in FlipThreadRoots, after all\nthreads have been suspended.\n\nBug: 37283268\nTest: m test-art-host\nChange-Id: I313db07e014e65a997d0b58c8a70e4505425def0\n"
    },
    {
      "commit": "4e92c3ce7ef354620a785553bbada554fca83a67",
      "tree": "42029deff4d3ba7f89b5fdbf79ff410da575f431",
      "parents": [
        "549844e9ccf432d1396b19af890eedb602b8ba04"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 08 09:34:26 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 10 09:27:33 2017 +0100"
      },
      "message": "Add runtime reasons for deopt.\n\nCurrently to help investigate. Also:\n1) Log when deoptimization happens (which method and what reason)\n2) Trace when deoptimization happens (to make it visible in systrace)\n\nbug:37655083\nTest: test-art-host test-art-target\nChange-Id: I0c2d87b40db09e8e475cf97a7c784a034c585e97\n"
    },
    {
      "commit": "19052df43919bac16ce7df488f377f06a434ce4a",
      "tree": "5fb2c8b8acedcec8269e8d1dd1f286e46b979315",
      "parents": [
        "90c5ccbc1d2988f6274877547ff095c0f29ff77a",
        "c4bed16daa6689eaa2148261b19662291417ced6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 03 16:49:06 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 16:49:08 2017 +0000"
      },
      "message": "Merge \"ART: Change shutdown order\""
    },
    {
      "commit": "8275fbaccc012072948a16f537844a552db9be84",
      "tree": "7c46c5736547bc514fa8d0a0304cbe2e2697703f",
      "parents": [
        "a57c334075b193de9690fff97acf6c1b1d1283fc"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue May 02 15:58:02 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue May 02 15:58:02 2017 -0700"
      },
      "message": "runtime: Properly unload partially loaded image spaces\n\nWhen one of the (non-app) image space successfully loads,\nit sets up runtime callee-save methods.\n\nIf it is later unloaded, callee-save methods are now pointing to memory\nthat is no longer valid (viewed as all 0s in the debugger).\n\nRuntime::Init skips creating its own runtime methods if it already sees\nthat the runtime methods were set to non-null, thus dangling runtime\nmethods.\n\nThis crash would nominally manifest itself in unwinding the first time, or as a DCHECK\nfailure in the interpreter bridge invocation during aborting if debugging was enabled.\n\nTo get into this state:\n* Fill up the /data partition (but perhaps leave a little bit of room\nfor one image, but not all images)\n* Reboot the device or run zygote manually.\n\nTest: adb shell dd if\u003d/dev/zero of\u003d/data/local/tmp/tempFiller.deleteMe bs\u003d1024 count\u003d50g ; adb reboot\nBug: 36033084\nChange-Id: I728c1058b003fcf5e98dc2746d53e44b688c4605\n"
    },
    {
      "commit": "c4bed16daa6689eaa2148261b19662291417ced6",
      "tree": "56d03d48010091acb6f2551e1381097b6148d106",
      "parents": [
        "7113885fcd983b33ee1e350865d21517d6297843"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 01 13:46:24 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 02 14:01:41 2017 -0700"
      },
      "message": "ART: Change shutdown order\n\nAdd explicit Shutdown method to ThreadList, doing the work that\nwas previously in the destructor. Call sid method before unloading\nplugins and stopping the debugger.\n\nModulo daemon threads, this ensures that thread events will have\nquiesced when plugins stop.\n\nBug: 37763974\nTest: m test-art-host\nChange-Id: I11d22f2c89a68e9f6720d61967b8e5aea41188dc\n"
    },
    {
      "commit": "4e868fa7b8c47600695ff92deeb373674956a67d",
      "tree": "acdb92a2b765cc87a08459267e430a8866e608cf",
      "parents": [
        "4dc06e2ef900132d8395539842c35533da8b912a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 21 17:16:44 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 27 16:04:13 2017 +0100"
      },
      "message": "Make vdex and dexlayout compatible.\n\nUnquicken the vdex before dexlayout, to keep the dex integrity.\n\nbug: 37558732\nTest: run-test with speed-profile\n\nChange-Id: Ifcd5c2e4378ccb0df0a66d07f68df31d94b83220\n"
    },
    {
      "commit": "4dc06e2ef900132d8395539842c35533da8b912a",
      "tree": "2114165e7cb3fe775537d2ebc728bbd5ed696479",
      "parents": [
        "8e2252df6fbd1313ca17724be36199d32e8e44cc",
        "49cda06d5bf003f588ba7839bbf89d606237dfa7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 27 11:40:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 27 11:40:07 2017 +0000"
      },
      "message": "Merge \"Rename and obsolete compiler filter names.\""
    },
    {
      "commit": "cf7d5d6b352442a7abf02a5b53a4575d395d0e97",
      "tree": "2e2a597932142a128b6151571ad5495ff11d89a8",
      "parents": [
        "7ac443c24be22c6b9dd67e35b6d6c2b7abc27c6e",
        "84695aef89a3c42ea81c23f0590ae2ceca09ce6f"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Apr 25 13:28:51 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 25 13:28:51 2017 +0000"
      },
      "message": "Merge \"ART: Support per PID stack trace files.\""
    },
    {
      "commit": "84695aef89a3c42ea81c23f0590ae2ceca09ce6f",
      "tree": "2b9d8c239e4296fd7f07b06ea8d07c5b4ea6fabd",
      "parents": [
        "aa03f6fa38da0166790f2b22b679e6568ad56f7d"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 07 15:41:41 2017 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Apr 25 11:30:33 2017 +0100"
      },
      "message": "ART: Support per PID stack trace files.\n\nIntroduce an -Xstacktracedir argument that supplies a directory\nunder which stack traces are written, with a unique file created\nper trace. The location of the actual directory in a production\nsystem is still not decided, and follow up changes might be\nintroduced to supply a per process override.\n\nBug: 32064548\nTest: test-art-host, test-art-target\n\nChange-Id: If377ce6a2abe8b325f6441d8de222b1ea3f40ec9\n"
    },
    {
      "commit": "c15a2f4f45661a7f5f542e406282c146ea1a968d",
      "tree": "50ad6104b0b8739f272782c35a7022cca64d2601",
      "parents": [
        "9ae527f615f61aec4aaca310c52f373e8c3d8d58"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 12:09:39 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 16:48:00 2017 -0700"
      },
      "message": "ART: Add object-readbarrier-inl.h\n\nMove some read-barrier code into a new header. This prunes the\ninclude tree for the concurrent-copying collector. Clean up other\nrelated includes.\n\nTest: mmma art\nChange-Id: I40ce4e74f2e5d4c692529ffb4df933230b6fd73e\n"
    },
    {
      "commit": "49cda06d5bf003f588ba7839bbf89d606237dfa7",
      "tree": "bc97607c6ae33a69ebdea2346c781f7ac238c9e3",
      "parents": [
        "aa03f6fa38da0166790f2b22b679e6568ad56f7d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 21 13:08:25 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 21 13:25:15 2017 +0100"
      },
      "message": "Rename and obsolete compiler filter names.\n\nART side of the change.\n\nbug:34715556\ntest: test-art-host, jdwp, libcore\nChange-Id: I3a73ae4af2d602431150c8ecfceaddb9ba519cee\n"
    },
    {
      "commit": "a25504e7026109227691ca944f9359ca23d733ab",
      "tree": "ebf4288caea3d996e585b7521971897b21b51532",
      "parents": [
        "741a81af441cbcb7255229bf250bc009d2894e92"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 18 16:14:19 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 18 23:24:07 2017 +0000"
      },
      "message": "Call mirror::CallSite::VisitRoots\n\nNeeded to visit CallSite static class root.\n\nTest: test/run-test --no-patchoat --relocate --host --64 --interpreter --gdb 952\n\nBug: 33191717\n\nChange-Id: I1fad3df8ad810c5c7905afadfa25cdc0901ef035\n"
    },
    {
      "commit": "1d4950167b45369299fe30d7381516c3b5380a01",
      "tree": "fd07613cfb67795d927afac0d9876b4a71257803",
      "parents": [
        "ef6787bd892b55588ebb2835cc3a3bc4e9e08d04"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 11 17:50:00 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 11 19:15:32 2017 -0700"
      },
      "message": "Fix -XX:DumpGCPerformanceOnShutdown for debug builds\n\nThere was a failing DCHECK from CheckUnattachedThread. The fix is\nto dump after attaching the shutdown thread.\n\nBug: 35644369\nTest: test-art-host\n\nChange-Id: I3d927e380888418167c101b2f09d1e547fe728cf\n"
    },
    {
      "commit": "f9c917f8c149afc07e51604ea48508fbabcb4a3f",
      "tree": "2ca19e609090a81a2df5fd11e8878023b191bee8",
      "parents": [
        "1a5a1e55276eb32747a8094937cb19040b193bb8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 31 14:49:09 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 03 18:02:29 2017 -0700"
      },
      "message": "Allow -Xjitsaveprofilinginfo for system server\n\nsetenforce 0 is still required to prevent selinux violations.\n\nTest: adb shell setprop dalvik.vm.extra-opts \"\u0027-Xusejit:false -Xint -Xjitsaveprofilinginfo\u0027\" \u0026\u0026 adb shell start\n\nBug: 34927277\nBug: 36457259\n\n(cherry picked from commit 449f0589c8c8572e32c57befee089123e9eea1ba)\n\nChange-Id: I644cefe8aebf9ff47dc736eda8143d2f6258c324\n"
    },
    {
      "commit": "fe4b2231ce32109a5c4f83a69cec962190db9b13",
      "tree": "c46354558157fd0ab9bfe047d2eb318789f1337a",
      "parents": [
        "10f9467522f63168336cfdb1bfc71698a356d1a1",
        "9545f6db8b2487ecb940f91c29ce814ec6b1ea25"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 17 22:03:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 17 22:03:49 2017 +0000"
      },
      "message": "Merge \"Accept output profile path from dalvikvm command\""
    },
    {
      "commit": "9545f6db8b2487ecb940f91c29ce814ec6b1ea25",
      "tree": "96975e0fb443225542455d33cee5d481896debdc",
      "parents": [
        "a345d3144c56e510866848fd677b05adc7780189"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 16 19:05:09 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 17 11:38:52 2017 -0700"
      },
      "message": "Accept output profile path from dalvikvm command\n\nTest: run dalvikvm with -Xps-profile-path\nBug: 36032648\n\nChange-Id: I34640afe1cf0e7b192ad082ccde2784faab1ba4c\n"
    },
    {
      "commit": "8f2b925473cfdc7650cef407102957befe0c6bb5",
      "tree": "4af3395adaf03cb4a60cd40e7b3ee4196645eb9e",
      "parents": [
        "de9b8d63ef548d56de9c9d4657a7b916050d81ad",
        "6b2dc3156a2140a5bfd9cbbf5d7dad332ab5f5bd"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 17 09:05:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 17 09:05:56 2017 +0000"
      },
      "message": "Merge \"ART: Get rid of most of java.lang.DexCache.\""
    },
    {
      "commit": "6b2dc3156a2140a5bfd9cbbf5d7dad332ab5f5bd",
      "tree": "a335cae93c0eabae63e39b8bc13ef3e15f4f7e50",
      "parents": [
        "f83f3f6ecb1153d96cc8007e8a0d1e35af4d3f38"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Mar 14 13:26:12 2017 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Mar 16 17:56:04 2017 +0000"
      },
      "message": "ART: Get rid of most of java.lang.DexCache.\n\nAll remaining functionality is moved over to native. The DexCache\nobject itself is allocated in the Java heap, even though there\u0027s no\nlonger much of a reason to do so. It can be changed in a future change\nif needed.\n\nThis also renames mirror::Class:GetInterfaces to GetProxyInterfaces\nsince it\u0027s supposed to be called only for proxies.\n\nTest: test-art-host, cts -m CtsLibcoreTestCases\n\nChange-Id: Ie261f22a9f80c929f01d2b456f170c7a464ba21c\n"
    },
    {
      "commit": "a345d3144c56e510866848fd677b05adc7780189",
      "tree": "e17b48d6bffe0174f3307b00f1d8c70d39409eea",
      "parents": [
        "51e417b45fa13050318715d2ad3da99d90b5f334"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 14 18:45:55 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 15 17:19:45 2017 -0700"
      },
      "message": "Ensure the profile is written to disk at shutdown\n\nForce profile saving during shutdown. It will make benchmark automation\nmuch easier.\n\nTest: test-art-host\nBug: 26719109\nChange-Id: I529aa1a7b1192c53960fdb4ddc13b10b99e846cc\n"
    },
    {
      "commit": "77651c4bbd56d502bcf05347e641061bbebca099",
      "tree": "7965e6e8cf29f1c78fc15e3eb3d645bb681a3f7d",
      "parents": [
        "f9d80d72a686048200bcf6a7f37192f9eb75d5bd"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 03 18:04:02 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 07 11:38:22 2017 -0800"
      },
      "message": "ART: Clean up code related to foreign dex use\n\nWe simplified the way we track whether or not a dex file is used by\nother apps. DexManager in the framework keeps track of the data and we\nno longer need file markers on disk.\n\nTest: device boots, foreign dex markers are not created anymore\n\nBug: 32871170\n\n(cherry picked from commit 868515e2606820ea96f8b9022b442f5bcc770867)\n\nChange-Id: If51b3301c845a8c3bbaf87d0e35a12c700e1d0aa\nMerged-In: I5a04d3bba29581dedf05e21b8b20d79afa9b405a\n"
    },
    {
      "commit": "e00e5590a9cfb72c89294dd7a5480e5fa69a90b9",
      "tree": "7eb9254bd6cfe10b2c4005e9cdec3a7cfbb2f442",
      "parents": [
        "06f658ab309a5f1930b8a6bc306ef79d0ef0616e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 24 14:58:29 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 27 16:31:42 2017 +0000"
      },
      "message": "Fix java.lang.Void.TYPE (void.class) initialization.\n\nDo not rely on the DexCache resolved types now that entries\ncan be evicted.\n\nTest: 157-void-class\nTest: testrunner.py --host\nBug: 35652776\nBug: 30627598\nChange-Id: Ic384174ae1849072568dd6d2ff9cc60d7f7f1880\n"
    },
    {
      "commit": "ea9465eaaa55646b0de242d2a21f9c1f0f0aa01f",
      "tree": "12590422d05d459a63a56937e77520e84cf4c288",
      "parents": [
        "4c9c57054578022d9ab8442264fbc661769f97f5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 16 15:38:35 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 17 08:33:06 2017 -0800"
      },
      "message": "Move InMemoryDexClassLoader to be a subtype of BaseDexClassLoader\n\nAlso write a test that class transformation works with this type of\nclass loader.\n\nTest: mma -j40 test-art-host\n\nChange-Id: Ibc2214191e04876ff7bbea010be6ec03b6f41904\n"
    },
    {
      "commit": "c069a30d42aefd902c20e8bc09dfad1683f07ded",
      "tree": "8bbf72bea7ea5d243b57f8e0ab64b687a9f60e4b",
      "parents": [
        "3f38398380b80d1ded078ebed1211b7e4f51460f"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 18 09:23:12 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 14 14:04:33 2017 +0000"
      },
      "message": "ART: invoke-custom support\n\nAdds invoke-custom instruction to the interpreter.\n\nBug: 33191717,30550796\nTest: art/test/run-test --host 952\nChange-Id: I3b754128649a8b3a00ade79ba2518d0e377f3a1e\n"
    },
    {
      "commit": "4471e4f7c5874bdaf93762b6047d4a4bebc465df",
      "tree": "b4fb94ac604334a59046db0acc5ee6c6360c311b",
      "parents": [
        "b78a8af993e877d74c5938f65f95feaf2fa01321"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 30 16:40:49 2017 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 03 15:10:38 2017 -0800"
      },
      "message": "Revert \"Revert \"ART: Give JIT thread pool workers a peer\"\"\n\nThis reverts commit 9dfb707ba2f8c2ff67d42c26e3214f5d7142b6d3.\n\nAccept a live Java thread for the JIT, and adjust the tests\naccordingly.\n\nBug: 31684920\nTest: m ART_TEST_JIT\u003dtrue ART_TEST_INTERPRETER\u003dtrue test-art-host\nChange-Id: I92cbae1eaae05711b9069335cf1a5f7eb58b9fd8\n"
    },
    {
      "commit": "500d4918e5fb6eafb76b36c4ec736f974835b94c",
      "tree": "5c6be88b473e60296ae9df22bfc55cfca85a3d28",
      "parents": [
        "fdd869faca8dff54a456ccb5f1a68ecb44143721",
        "433b79a9130df5f2375b9d3d7518c1f3fb84a467"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 20:56:11 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 30 20:56:11 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Make --debuggable rely on JIT code.\"\"\""
    },
    {
      "commit": "433b79a9130df5f2375b9d3d7518c1f3fb84a467",
      "tree": "dddc053886464b99be29b9ca69039d74d49605ca",
      "parents": [
        "81356645157af44152c7b7db383596b5cf3479b5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 20:54:45 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 20:54:45 2017 +0000"
      },
      "message": "Revert \"Revert \"Make --debuggable rely on JIT code.\"\"\n\nFixed by https://android-review.googlesource.com/#/c/330165/\n\nThis reverts commit 81356645157af44152c7b7db383596b5cf3479b5.\n\nChange-Id: Ifb74e1cc90ab6dea621f7f54a00b540d6ccd0cf6\n"
    },
    {
      "commit": "d7c4ad030c2c316f5e1b2049ff8fa925b56bee2b",
      "tree": "fee68e3431cd62d6f5d6da89c1e105993bfb5528",
      "parents": [
        "f22bf9f809def57c96a19d932467a175bbd9c08c",
        "81356645157af44152c7b7db383596b5cf3479b5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 20:20:19 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 30 20:20:20 2017 +0000"
      },
      "message": "Merge \"Revert \"Make --debuggable rely on JIT code.\"\""
    },
    {
      "commit": "81356645157af44152c7b7db383596b5cf3479b5",
      "tree": "59aca3792abfa47c7424e4dac13248651e4662b2",
      "parents": [
        "a0619e25aacf8b8074132f4951f75fdbcfd42925"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 20:18:02 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 20:19:28 2017 +0000"
      },
      "message": "Revert \"Make --debuggable rely on JIT code.\"\n\nBreaks 137-cfi with ART_TEST_RUN_TEST_DEBUGGABLE\u003dtrue\n\nThis reverts commit a0619e25aacf8b8074132f4951f75fdbcfd42925.\n\nbug: 28769520\nChange-Id: Ifd7b8fc7c9b72c0a523fd57c4b1b80edd3547caa\n"
    },
    {
      "commit": "8f28bd479af445293474867191a0bf1cf0f08a4f",
      "tree": "2bf92d368a6ad5b766bef70a3ee9c35d7af6db71",
      "parents": [
        "ab5afeedfcb496026d8fe0774de99ee895888119",
        "a0619e25aacf8b8074132f4951f75fdbcfd42925"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 15:09:44 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 30 15:09:45 2017 +0000"
      },
      "message": "Merge \"Make --debuggable rely on JIT code.\""
    },
    {
      "commit": "a0619e25aacf8b8074132f4951f75fdbcfd42925",
      "tree": "dddc053886464b99be29b9ca69039d74d49605ca",
      "parents": [
        "ca21dc47adeed92a15a9d3fd090bdd0e6654679c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 20 13:57:43 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 12:41:52 2017 +0000"
      },
      "message": "Make --debuggable rely on JIT code.\n\nRemoves -Xfully-deoptable in the process, which was added as a\ntemporary workaround until this CL.\nPartial revert of https://android-review.googlesource.com/#/c/302232/\n\nMakes things consistent with existing infrastructure:\n\n- Parse the --debuggable from the compiler options, just like\n  --compiler-filter.\n\n- Add DEBUG_JAVA_DEBUGGABLE, passed by the zygote, for debuggable apps.\n\n- Java debuggable now solely relies on JIT for simplicity.\n\n- Debugging under userdebug for non-java-debuggable apps is still\n  best effort.\n\nTest: test-art-host, jdwp\n\nbug: 28769520\nChange-Id: Id0593aacd85b9780da97f20914a50943957c858f\n"
    },
    {
      "commit": "91aa238401ff8b7b6b6268d76a50be0699b022dd",
      "tree": "6d7ba198ee537ec9d82ab5f94b71cd5da9f60bf7",
      "parents": [
        "27d829a10c9fabcf7241f21029a5709fd15fc04f",
        "9dfb707ba2f8c2ff67d42c26e3214f5d7142b6d3"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 28 04:41:10 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 28 04:41:11 2017 +0000"
      },
      "message": "Merge \"Revert \"ART: Give JIT thread pool workers a peer\"\""
    },
    {
      "commit": "9dfb707ba2f8c2ff67d42c26e3214f5d7142b6d3",
      "tree": "961791f6d7534fc875a4a22c8cabe2a1d4cfaf7e",
      "parents": [
        "1ee6dd71e1b9e51e15aae4d3bc95d799f11dbd04"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Jan 28 02:35:31 2017 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Jan 28 02:35:31 2017 +0000"
      },
      "message": "Revert \"ART: Give JIT thread pool workers a peer\"\n\nThis reverts commit 1ee6dd71e1b9e51e15aae4d3bc95d799f11dbd04.\n\nHas unintended consequences that need to be discussed.\n\nBug: 31684920\nChange-Id: If0ff1b5d7473f98cb3a0efc3b4bb2c0f96ad684d\n"
    },
    {
      "commit": "27d829a10c9fabcf7241f21029a5709fd15fc04f",
      "tree": "8880ce99166b4fccf1ef7321ab5d0c5d24a57d6e",
      "parents": [
        "dbdd53535231009242c50217a0e01512e8981c04",
        "1ee6dd71e1b9e51e15aae4d3bc95d799f11dbd04"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 28 00:51:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 28 00:51:56 2017 +0000"
      },
      "message": "Merge \"ART: Give JIT thread pool workers a peer\""
    },
    {
      "commit": "1ee6dd71e1b9e51e15aae4d3bc95d799f11dbd04",
      "tree": "8aa0400bcac644fdb75bb1d60bf0a1083936df57",
      "parents": [
        "b15de0c0580633701c19c32bb60bcd64f30da867"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 24 13:33:57 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 27 14:45:40 2017 -0800"
      },
      "message": "ART: Give JIT thread pool workers a peer\n\nTo allow reporting those threads, give JIT pool threads a peer.\nThis is necessary as the compiler may load classes.\n\nBug: Bug: 29547798\nBug: 31684920\nTest: m ART_TEST_JIT\u003dtrue test-art-host\nChange-Id: I7c8e44132475f38995542da76285ca3dd63c559a\n"
    },
    {
      "commit": "bd2fed5a813b68fa42fe941b07325ba4ff3190b0",
      "tree": "2e8ce7221f842133a1b7b8e6fc4793acbf4ed8f6",
      "parents": [
        "ca21dc47adeed92a15a9d3fd090bdd0e6654679c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Jan 25 10:46:54 2017 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Jan 27 13:47:50 2017 +0000"
      },
      "message": "MethodHandles: Support and tests for revealDirect / reflectAs.\n\nWe need runtime support to materialize a Constructor, Field or\nMethod object from a MethodHandle and its associated ArtField\nor ArtMethod pointer.\n\nAn alternate approach might be to have all handles hold a reference\nto their associated Field or Method object (in addition to the\nraw ArtField or ArtMethod) but that seems unnecessary given that\nthese APIs are not expected to be called often.\n\nTest: test-art-host\n\nChange-Id: I9450706b9c30359edebf2e8a7afbc8d89bd68b26\n"
    },
    {
      "commit": "01fd70b531a8bd8ebb2238f20c3e651f6b065285",
      "tree": "7f4f6a9514638aafbd8fa94791676567f1bb0c3c",
      "parents": [
        "5ea54a33a81ce48156fbb2685e9a61d0748644dc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 25 10:03:08 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 25 11:38:25 2017 -0800"
      },
      "message": "ART: Remove experimental flags for plugins and agents\n\nRemove experimental flags guarding plugins and agents.\n\nPartial revert of commit 7233c7e752c0d26387d143ee74420e9cd1f09390.\nPartial revert of commit 185d134a3b43ab7529053e965917e0fa74bceba4.\n\nBug: 31455788\nTest: m test-art-host\nChange-Id: I11a19f24b88ced8da7a28e2cb7a2f602aab884a8\n"
    },
    {
      "commit": "95cf7e42526d4da84086f197dd7d670e407938e0",
      "tree": "07d6a9b93a7adedf5c87670bd93182d2f80598cd",
      "parents": [
        "c51842b8dd2ad57a1b05f31ab20ad01123443c50",
        "eafaf57557939bcabeb7a7388fb4951e74661a53"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 23 18:08:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 23 18:08:02 2017 +0000"
      },
      "message": "Merge \"ART: Add ThreadStart \u0026 ThreadEnd\""
    },
    {
      "commit": "3fceaf500d570722122f2d092f302d27769e3a51",
      "tree": "1c38d3a72559cb2f9454e445e3d5ddc7168170df",
      "parents": [
        "388df9e0943fd4c858b99f268d9655336df17062"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 22 13:33:40 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 22 13:45:44 2017 -0800"
      },
      "message": "Use higher default thread suspend timeout for run tests\n\nIncrease the default for tests from 10s-50s to 500s. This is done\nby adding a run-test option \"--suspend-timeout\" that defaults to\n500000.\n\nExample when passing a low value of 100:\ntest/run-test --host --suspend-timeout 100 --dev 004-ThreadStress\n\nResults in:\ndalvikvm32 F 01-22 13:33:31 12067 12118 thread_list.cc:669] Timed\nout waiting for threads to suspend, waited for 100.114ms\n\nThis should fix some of the recent test flakiness.\n\nTest: test-art-host\n\nChange-Id: I303c4f198e560e9f38ec375e9d7a80a5e61f776e\n"
    },
    {
      "commit": "eafaf57557939bcabeb7a7388fb4951e74661a53",
      "tree": "c540c5d06e483b2903d767db40064fdd6ae30786",
      "parents": [
        "a90b3dd3f22ce0674970365a5903571276a8fc01"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 20 12:34:15 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 20 21:10:38 2017 -0800"
      },
      "message": "ART: Add ThreadStart \u0026 ThreadEnd\n\nAdd support for ThreadStart and ThreadEnd events. Add tests.\n\nBug: 31684920\nTest: m test-art-host-run-test-924-threads\nChange-Id: I516993402747ffdc9a7d66985b21b95c059be107\n"
    },
    {
      "commit": "96eca7895813ec70bbbbdb2aff7a3a03dcd3b21e",
      "tree": "153890b5de0ff2278011fd2ef89b3896be78a55b",
      "parents": [
        "c93d203b5d9d6e5672ebfdc87f2b72ef99ae8c09"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 19:45:30 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 23:15:31 2017 -0800"
      },
      "message": "ART: Add GetPhase\n\nExtend RuntimePhaseCallback. Add support for GetPhase.\nAdd tests.\n\nBug: 31455788\nTest: m test-art-host-run-test-901-hello-ti-agent\nChange-Id: I33b1934a0789bc713675f21c2c9f676c9d3a1ed1\n"
    },
    {
      "commit": "4886411a81077e893a6e38c56938a252888ddd0e",
      "tree": "62f6effd04ae42206c76510ab64b5000b9c45a96",
      "parents": [
        "2c19ea93088d7cd187524f49137417279e99096d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 17:23:17 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 19:35:49 2017 -0800"
      },
      "message": "ART: Add runtime phase callback\n\nAdd callback that describes the current runtime phase, one of\nstarting, initialized and death. Add test.\n\nBug: 31684920\nTest: m test-art-host-gtest-runtime_callbacks_test\nChange-Id: I08ae7c45851572f8b3e446c07f0498f66bb032d3\n"
    },
    {
      "commit": "a5814f9de6009cc1763523109f50aae6bd1ff99e",
      "tree": "4b09ef54cd9db04dbf87ec8374d5cfc336f9c6ef",
      "parents": [
        "ac30fa2151095d2b5fe42f169a02ed09fea312b4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 18 21:43:16 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 16:09:02 2017 -0800"
      },
      "message": "ART: Add SigQuit Callback\n\nAdd callback being triggered when the runtime handles SigQuit.\n\nBug: 31684920\nTest: m test-art-host-gtest-runtime_callbacks_test\nChange-Id: I23e3b256c654b6078c79b3897439d893ea79d96e\n"
    },
    {
      "commit": "ac30fa2151095d2b5fe42f169a02ed09fea312b4",
      "tree": "e8ec1355dd7a307c696c1d38775aba5656ac33c6",
      "parents": [
        "0f01b583c3952d0219696480654a0db8fac4b661"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 18 21:02:36 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 15:14:19 2017 -0800"
      },
      "message": "ART: Make RuntimeCallbacks unique_ptr\n\nReduce the transitive closure of headers on runtime.h\n\nTest: m\nChange-Id: Ib5a3632c28b08bf07773f217a7ad711c1f12af6b\n"
    },
    {
      "commit": "0f01b583c3952d0219696480654a0db8fac4b661",
      "tree": "33184022e0c9bc0a6af4d89b21864fd460f32df4",
      "parents": [
        "04bbb5be5b9c0f0b3a72116353d23ea63c8bc5e9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 18 15:22:37 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 15:12:12 2017 -0800"
      },
      "message": "ART: Add ClassLoadCallback\n\nAdd callback for class-load and class-prepare events. Move Dbg\nover. Add tests.\n\nBug: 31684920\nTest: m test-art-host-gtest-runtime_callbacks_test\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost\nChange-Id: I871f6b3c54448fd6ece8d9a7571b2042be50d525\n"
    }
  ],
  "next": "04bbb5be5b9c0f0b3a72116353d23ea63c8bc5e9"
}
