)]}'
{
  "log": [
    {
      "commit": "aea05c17f8c12ac7032e252f997a4c61c071e2d6",
      "tree": "4b6a33b180103e1b8ee36099ed189224f7b2fb6c",
      "parents": [
        "1c5b42f00933b8f28b447f039fb93a7d9a9db06f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri May 19 08:45:02 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 21 12:55:47 2017 -0700"
      },
      "message": "ART: Move debug-checks to runtime-debug-flags\n\nCurrent slow checks:\n* Class status checking in ArtMethod\n* Read barrier invariant checking\n\nBug: 35644369\nTest: m test-art-host\nChange-Id: I66138a9accc601fa0fa675cf600412ad3629d28f\n"
    },
    {
      "commit": "1c5b42f00933b8f28b447f039fb93a7d9a9db06f",
      "tree": "ac46a2fb5bc0a246222a7b2d5e6c2602099b1897",
      "parents": [
        "b96ed2c271a56fb8be0c8f30231710095e66a201"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 15 18:20:45 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 21 12:52:47 2017 -0700"
      },
      "message": "ART: Add support for runtime debug checks\n\nAdd support for runtime-switchable debug flags. These flags are only\nenabled in debug mode, and a constexpr false in release mode. This\nallows to distinguish fast from slow checks, for example.\n\nTo simplify usage, two macros should be used. DECLARE_RUNTIME_DEBUG_FLAG\ndefines a static class member or constexpr as the flag. DEFINE_RUNTIME_DEBUG_FLAG\ndefines the static storage and registers it, if needed. See the\ndocumentation in logging.h.\n\nAs is, runtime checks are disabled by default. Pass -XX:SlowDebug\u003dtrue\nto enable them on startup.\n\nAdd logging_test. Fix up tests and scripts to enable slow debug checks.\n\nBug: 35644369\nTest: m test-art-host\nChange-Id: Icc1cb0bb921d863514c55abef794c5c96f8af801\n"
    },
    {
      "commit": "36a296ff674e0aea16b29db965f84f81866b1375",
      "tree": "9d940463852089016a0d0932368923d04da2c3fe",
      "parents": [
        "77c7d1093281bec76d3055541fe41145cdc5f807"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 13 14:11:11 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 19 16:21:58 2017 -0700"
      },
      "message": "ART: Refactor stack.h\n\nFactor out LockCountData, ShadowFrame and JavaFrameRootInfo and leave\nstack.h for the StackVisitor. Move single-use function to user to remove\nDexFile dependency.\n\nTest: m test-art-host\nChange-Id: I53d2880917bdf6782856fd2b16f38a0293f3aefc\n"
    },
    {
      "commit": "b7edcda968bb0cbaa69a3ad387fcd3194f5612be",
      "tree": "50748aac195d20a7e8f6d59a6e499f3fe69418de",
      "parents": [
        "049f2a58ea9276dfd162760271ad443570f2e660"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 27 13:20:31 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 09 10:54:02 2017 -0700"
      },
      "message": "Add method tracing JVMTI callbacks\n\nAdd MethodEntryHook and MethodExitHook callbacks and associated\ncapabilities.\n\nSplit --jvmti-stress option in run-test into --jvmti-trace-stress and\n--jvmti-redefine-stress to test each different component.\n\nNB 3 differences from RI found:\n  1) RI will call methodExitHook again if the method exit hook throws\n     an exception. This can easily cause an infinite loop and the test\n     is specifically tweaked to prevent this from happening on the RI.\n  2) RI always includes the method being exited in the stack trace of\n     errors thrown in the hooks. In ART we will not include the method\n     if it is native. This is due to the way we call native methods\n     and would be extremely difficult to change.\n  3) The RI will allow exceptions thrown in the MethodEnterHook to be\n     caught by the entered method in some situations. This occurs with\n     the tryCatchExit test in 989. In ART this does not happen.\n\nBug: 34414073\nTest: ./test.py --host -j40\nTest: ART_TEST_FULL\u003dtrue DEXTER_BINARY\u003d\"/path/to/dexter\" \\\n      ./test/testrunner/testrunner.py --host -j40 -t 988\nTest: ART_TEST_FULL\u003dtrue DEXTER_BINARY\u003d\"/path/to/dexter\" \\\n      ./test/testrunner/testrunner.py --host -j40 -t 989\nTest: lunch aosp_angler-userdebug; \\\n      m -j40 droid build-art \u0026\u0026 \\\n      fastboot -w flashall \u0026\u0026 \\\n      ./test.py --target -j4\n\nChange-Id: Iab229353fae23c2ea27c2b698c831627a9f861b1\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": "0bb4031b976aeb2bad88db81115fea46b19878f0",
      "tree": "7762ab7eef86e27d8205866342357409cbb5341a",
      "parents": [
        "1656ca9e6996cb555b4463e5efd4bd7e3f4fb816"
      ],
      "author": {
        "name": "Bharadwaj Kalandhabhatta",
        "email": "bharadwajsk@google.com",
        "time": "Thu Jun 01 10:47:00 2017 -0700"
      },
      "committer": {
        "name": "Bharadwaj Kalandhabhatta",
        "email": "bharadwajsk@google.com",
        "time": "Fri Jun 02 10:26:56 2017 -0700"
      },
      "message": "Added DexFileAsanRegistrar and necessary additions\n\nThis class was made so that sections of dex files\ncan be easily poisoned to check accesses to those sections.\n\nIn order to enable logging of reads to poisoned sections,\nuse art/tools/add_package_property.sh along with package\nname on the device and art/tools/asan.sh.\n\nBug: 37754950\nTest: export ART_DEX_FILE_ACCESS_TRACKING\u003dtrue ; mm -j \u0026\u0026 mm -j\nSANITIZE_TARGET\u003daddress SANITIZE_LITE\u003dtrue test-art-host;\n\n(cherry picked from commit ecfa103caf2ccead029bd0e1bfcee02601a0c212)\n\nChange-Id: Ie57aa935b7f5f6854ba53d7740cc0d1547b40847\n"
    },
    {
      "commit": "513061a792b22c417c938d31c19581390709561c",
      "tree": "80b4fdce03711170626aa5640d07b07de4a326a1",
      "parents": [
        "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 09:17:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 12:59:13 2017 -0700"
      },
      "message": "ART: Clean up thread.h and thread_list.h\n\nRemove dependency on stack.h and gc_root.h. Remove unused object\ncallbacks include. Factor out ManagedStack into its own set of files.\nFix up users of transitive includes.\n\nTest: m test-art-host\nChange-Id: I01286c43d8c7710948c161b1348faabb05922e59\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": "6fb693a39b263af3e62b97f8d9f2c2289cab3c1a",
      "tree": "59487355e5e81ae552c0f00ab36f8eb16bac25a6",
      "parents": [
        "ed00ddb614d68559931d831cb74d3ba8f01599c9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 08:49:45 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 10:25:32 2017 -0700"
      },
      "message": "ART: Delete dex_instruction_visitor\n\nUnused visitor and test.\n\nTest: m test-art-host\nChange-Id: Idb9403a1d41b6b2142b1e10cd9172a1771d6c5be\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": "6d7abbd2324f544c6b6da42bb6b9b531df0ce3cd",
      "tree": "669705a042bbc77c7963c117a9bf6f7a2308f9c8",
      "parents": [
        "0dfc315a096bf5678cb5182771e3fdcca8ea4433"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 13:19:09 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 14:18:45 2017 -0700"
      },
      "message": "ART: More header cleanup - method_verifier.h\n\nMove enumerations to own header. Move the compiler interface (of what\nthe compiler can tolerate) into its own header. Replace or remove\nmethod_verifier.h where possible.\n\nTest: mmma art\nChange-Id: I075fcb10b02b6c1c760daad31cb18eaa42067b6d\n"
    },
    {
      "commit": "9dd326eb801c962a7ff6df5917aa9f4b88db250a",
      "tree": "e3b5afc9de9151785fcacd1082ad752e4fabb82b",
      "parents": [
        "498305d881ee0a4678a0498692fb1425361d5055",
        "c15a2f4f45661a7f5f542e406282c146ea1a968d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 22 02:22:47 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 22 02:22:49 2017 +0000"
      },
      "message": "Merge \"ART: Add object-readbarrier-inl.h\""
    },
    {
      "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": "1ca689096b532e007dc9f8ba16db4731e6afd719",
      "tree": "e07c8c5c0eba7494d7dba628caaa1cd2bbe6066f",
      "parents": [
        "9ae527f615f61aec4aaca310c52f373e8c3d8d58"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 18 11:26:22 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 21 15:55:16 2017 -0700"
      },
      "message": "More robust GC verification and corruption dumping\n\nAdded a test for GC heap corruption dumping, added more info to the\ndump like adjacent bytes and card table.\n\nAdded heap corruption detection in\nConcurrentCopying::MarkNonMoving().\n\nBug: 37187694\nBug: 12687968\n\nTest: mm test-art-host-gtest-verification_test -j20\n\nChange-Id: I8c90e45796d0784265aa091b2f8082f0cfb62719\n"
    },
    {
      "commit": "b95c74b9788886b24b04db782ce64867cb4960d5",
      "tree": "f9b01a5b509d70bf66cfb69433f23d7019b892ce",
      "parents": [
        "d68677c5fde1ace16ea58d65733776c954e7acb4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 20 19:43:21 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 09:41:03 2017 -0700"
      },
      "message": "ART: Move InlineMethodAnalyzer into compiler\n\nMove the infrastructure, which is now only used by the compiler.\n\nTest: mmma art\nChange-Id: I4a61e35f23736b226523d7349f49208ad852ad2f\n"
    },
    {
      "commit": "682282eaac86202652e17752ef32f14c89e2ccda",
      "tree": "c779c7a48e7fa41b4aad0cb1f7bb4953fde241cc",
      "parents": [
        "c36a970fcd4878eafd03d41eeff0a4cbdd400326"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 17 18:31:26 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Apr 18 14:04:20 2017 -0700"
      },
      "message": "base: add SafeCopy.\n\nAdd a function that uses process_vm_readv on Linux to safely\ndereference pointers without the risk of segfault.\n\nBug: http://b/30836730\nTest: safe_copy_test on host\nChange-Id: I10bafcffe2172e17b00f65455d1dd6a08aa631d7\n"
    },
    {
      "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": "78f1bdc6bbf0ac07a333ada2396987e8391eee49",
      "tree": "148edb8b92b9df1da50b61448417267c00d014a3",
      "parents": [
        "fddc19338d9fdee24c4e10b758db1a6997004e2e"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 01 10:55:57 2017 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 08 09:22:05 2017 -0800"
      },
      "message": "Interpreter intrinsics\n\nFirst of several intrinsic CLs.  This one provides the basic\nmechanism plus a handful of the most simple examples.  Note that\nIntrinsic support is limited to Mterp both to keep the switch\ninterpreter as a pure reference, and to avoid mixing debugging\nand intrinsics.\n\nBug: 30933338\n\nTest: ART_TEST_INTERPRETER m test-art-host\nTest: Note: existing 082-inline-execute, 123-inline-execute2\nTest:   cover intrinsics enabled by this CL.\n\nChange-Id: I9d79e23a84bf00cadb54e1db52d8ed193bbf8887\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": "e77b48b7d0df3cd7aa650ded8373f86974556373",
      "tree": "397def95ccf39a0d2c777e4a656cf4f2a0fdf69c",
      "parents": [
        "88837a783d8c700f597da55b8e0e091b4d44f87c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 22 11:08:06 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 23 13:11:51 2017 -0800"
      },
      "message": "Check stacks for unmodifiable frames\n\nWe keep a generate a list of classes that have unmodifiable frames\nduring the zygote fork and check for them in IsModifiableClass.\n\nTest: Start apps on aosp_marlin-userdebug phone with libartd.so\n\nChange-Id: I6bbaa20d307c3803a5808fb4108638365895e802\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": "2a46b682b8fd0276c62e82a56a1f2ac63b210a95",
      "tree": "fca44701850a648a243d496dc547bab0e3ef5cd0",
      "parents": [
        "2d98ba68f13dc219c088a12f369c5778bf398f14",
        "c069a30d42aefd902c20e8bc09dfad1683f07ded"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 14 16:02:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 16:02:33 2017 +0000"
      },
      "message": "Merge \"ART: invoke-custom support\""
    },
    {
      "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": "84f50aecdeed2d9ed3206681820e41ad6af73a9c",
      "tree": "8b2b6de40365dcfc41d9139c9c5d73b95a541b67",
      "parents": [
        "69bcf2c940d26d65767bea7417317cf9a0431e0c"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Feb 06 15:12:45 2017 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Feb 14 09:14:20 2017 +0000"
      },
      "message": "Remove remaining uses of DexFile::GetChecksum.\n\nRemove or replace with DexFile::GetMultiDexChecksums as appropriate.\n\nBug: 34604632\nTest: m test-art-host, added image_space_test to test ValidateOatFile.\nChange-Id: I1042e87f29a242046d055f0be374ad9fbce4671a\n"
    },
    {
      "commit": "2bb70d31ee7749b18b5e0e5ce50a12d30bc1f27c",
      "tree": "789efed4ffafdd03ac9ffd1c06d7f74ea962d2d2",
      "parents": [
        "7b220d60e3cb58c384a0d245106406080c6f3e37"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Feb 06 10:34:14 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Feb 06 10:49:57 2017 -0800"
      },
      "message": "Revert \"Revert \"build: Generate asm_support_gen.h from the build, validate up-to-date\"\"\n\nThis reverts commit 592505c340e82091a6e13e2dff3d8589255df0bb.\n\nFix HOST_PREFER_32_BIT\u003dtrue causing buildbot\nto fail with the new asm_support genrule.\n\nTest: SOONG_ALLOW_MISSING_DEPENDENCIES\u003dtrue HOST_PREFER_32_BIT\u003dtrue\\\n      make -j32  build-art-host-tests\nOriginal-Change-Id: I1f0f94914d328c396906583d0732e281c076e69f\nChange-Id: Ie08a11fdb9486b697d6cef4cec41b23ff120b205\n"
    },
    {
      "commit": "4ec69e576f304410686af081f605b7c8456d28a4",
      "tree": "bdffd02c01bdfd33acccf50f31694009a6c52a13",
      "parents": [
        "1e27211c5551f28b595e4c0cbbcc25aebe446061",
        "592505c340e82091a6e13e2dff3d8589255df0bb"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Sat Feb 04 03:26:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Feb 04 03:26:56 2017 +0000"
      },
      "message": "Merge \"Revert \"build: Generate asm_support_gen.h from the build, validate up-to-date\"\""
    },
    {
      "commit": "592505c340e82091a6e13e2dff3d8589255df0bb",
      "tree": "70075f3e50afc6f1709d0ff296b7e2e8dd223f3b",
      "parents": [
        "2449a154c457eaa2c6a30e11184bb7381903cfd5"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Sat Feb 04 03:26:14 2017 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Sat Feb 04 03:26:14 2017 +0000"
      },
      "message": "Revert \"build: Generate asm_support_gen.h from the build, validate up-to-date\"\n\nBreaks the build bot:\n\nerror: art/tools/cpp-define-generator/Android.bp:41:1: dependency \"cpp-define-generator-data\" of \"cpp-define-generator-asm-support\" missing variant \"arch:linux_x86_64\"\n\nThis reverts commit 2449a154c457eaa2c6a30e11184bb7381903cfd5.\n\nChange-Id: I05ae3fa3c56a10238d48c52faa10b8c9c82d9d24\n"
    },
    {
      "commit": "44959ec32a7b6b5badfe97d31bb2a574a30afee8",
      "tree": "307f6eb5bdb39df7b28ef2a8e882b6fa83ca6ddd",
      "parents": [
        "9779c896a2e9e6e59e2f3702bf6e26b7fc9e7944",
        "2449a154c457eaa2c6a30e11184bb7381903cfd5"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Sat Feb 04 00:47:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Feb 04 00:47:06 2017 +0000"
      },
      "message": "Merge \"build: Generate asm_support_gen.h from the build, validate up-to-date\""
    },
    {
      "commit": "90b936ddda63139ff46a6755c3b83ad6e4ab4ac5",
      "tree": "c7ce2c3004eecc16ab41ed7cde105c3019638d4b",
      "parents": [
        "b78a8af993e877d74c5938f65f95feaf2fa01321"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 31 08:58:55 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 03 10:03:52 2017 -0800"
      },
      "message": "ART: Refactor verify_object.h\n\nMove the actual VerifyObject check into a new cc file, as we\ncommonly don\u0027t enable the check at all. This allows to cut the\n-inl include from almost all current users.\n\nThis also exposes missing -inl includes. Also fix up some of our old\nmess where .h defined functions require -inl.h defined functions.\n\nTest: m\n\nChange-Id: I3dd821bbe2015564a29bf1ed9be00f7a7276ad61\n"
    },
    {
      "commit": "2449a154c457eaa2c6a30e11184bb7381903cfd5",
      "tree": "e6f66104451b46f4fe0dce618a11b861a382f08a",
      "parents": [
        "27374ae7b59094e115ff23139c54ac97088eb01f"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Feb 02 14:33:39 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Feb 02 16:18:27 2017 -0800"
      },
      "message": "build: Generate asm_support_gen.h from the build, validate up-to-date\n\nWhen building libart/libartd, also generate asm_support_gen.h\nautomatically. In addition, verify that our checked-in version\n(runtime/generated/asm_support_gen.h) is up-to-date with what the build\ngenerates.\n\nFurthermore, add a presubmit hook that runs with \u0027repo upload\u0027\nthat validates that the up-to-date version of asm_support_gen.h\nis being uploaded to gerrit.\n\nThis makes it significantly more difficult to accidentally\nmerge a CL that doesn\u0027t have the auto-generated headers updated\nand break the build as a result.\n\nBug: 34387670\nTest: make libart libartd\nTest: cd art \u0026\u0026 tools/repohooks/pre-upload.py\nChange-Id: I1f0f94914d328c396906583d0732e281c076e69f\n"
    },
    {
      "commit": "97c381e3ce34cd327c2ec35fa850bd0eaa9b697f",
      "tree": "4a21b2db89c578cdb2908547547e0546748eec7f",
      "parents": [
        "3cb871ab1af47576959fd24a99d370381b8f193e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 01 15:09:58 2017 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 01 15:51:42 2017 -0800"
      },
      "message": "Separate art::Exec from utils\n\nThe rest of utils.cc does not depend on art::Runtime. This separates\nthe part dependent on that class, so that including utils.cc in the\nbuild does not require the entire Runtime. Another preparatory cleanup\nto getting tools to build on Windows.\n\nBug: 22322814\nTest: test-art\nChange-Id: I194ff363fc2ab87e5311ecea6973a2d0fad2621d\n"
    },
    {
      "commit": "0c765f7f0681d620714e27c7f9aa2ce2c77ad726",
      "tree": "a178aa3c85885d0a644fcff5baf59c508987290f",
      "parents": [
        "50a676848d644bbfafa9f47eff0ca9d2ccba6e4b",
        "2f27abd6685f9be3a0923552afa1147751b438f9"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Feb 01 09:10:27 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 01 09:10:28 2017 +0000"
      },
      "message": "Merge changes I1ab9ec9f,I0fe01760\n\n* changes:\n  Revert^2 \"OatFileAssistant: look at vdex file for IsDexOptNeeded\"\n  Check vdex file is valid in VdexFile::Open.\n"
    },
    {
      "commit": "b8ab63ac7b58fe6747676dfc220e663a539eea90",
      "tree": "064b9e676f0b16fd53ea9dfcc1b1b7134f594c01",
      "parents": [
        "202d9ac328d9e37cf956b473cc2c1083622df1a4"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Jan 31 11:27:37 2017 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Jan 31 13:56:40 2017 +0000"
      },
      "message": "Check vdex file is valid in VdexFile::Open.\n\nTest: m test-art-host, including new vdex_file_test.\nBug: 34339100\nChange-Id: I0fe01760779f3876d6790a5443785a4f7289a717\n"
    },
    {
      "commit": "b49cc5506bdf8c3aa406eab5579bcd64fdaa3a43",
      "tree": "7b678661da3477e999af415d4856476ab369f9c7",
      "parents": [
        "de85642741f1e3bc847670d3c6d6445f94b2fe41",
        "21482ad3cd5fc113b0c601c93febdb9e8a9484ea"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jan 31 13:30:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 31 13:30:03 2017 +0000"
      },
      "message": "Merge \"Optionally dump ART crash information to logcat when running on Android.\""
    },
    {
      "commit": "21482ad3cd5fc113b0c601c93febdb9e8a9484ea",
      "tree": "7ea6a29fe89f72257c453ba9387b8159049222a6",
      "parents": [
        "f6fe51ddf1e37597482928017856ae139595667e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jan 19 20:04:27 2017 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jan 30 18:13:51 2017 +0000"
      },
      "message": "Optionally dump ART crash information to logcat when running on Android.\n\nThis logging feature does not use debuggerd.  It is only\nenabled when the environment variable ANDROID_ROOT is set\nto something different than \"/system\".\n\nAlso, refactor runtime/runtime_android.cc and\nruntime/runtime_linux.cc.\n\nTest: Observe device logcat when dalvikvm crashes\nBug: 32466479\nChange-Id: If59ce838fdb5b9bb6638b73fcd074b7065275c6c\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": "36eb313c805713c1367e5b9d73897ade1c24174b",
      "tree": "a2485977f12299a493217ead13a0cb5510c4251d",
      "parents": [
        "d713d29507fb98bea3eee9277f05422a9b641ca1"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jan 13 16:32:38 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jan 24 11:29:34 2017 -0800"
      },
      "message": "Add dexoptanalyzer tool\n\ndexoptanalyzer is a command line tool which analyzes whether or not a\ngiven dex file needs to be dexopted. It is a wrapper around\nOatFileAssistant::GetDexOptNeeded and its results have a mapping to\nOatFileAssistant::DexOptNeeded.\n\nThis is needed for the management of secondary dex file. We need a way\nto retrieve the DexOptNeeded status from installd outside system server.\nWe can\u0027t simply use the system server path (as we do for the main apks)\nbecause system server can\u0027t access content writable by the apps.\n\nBug: 32871170\nTest: m test-art-(host|target)\nChange-Id: Ife1534560ca2658079d4a38a30bc8d94f35fe9c8\n"
    },
    {
      "commit": "04bbb5be5b9c0f0b3a72116353d23ea63c8bc5e9",
      "tree": "51ee41e14d6bfccc88ccde91938cac901c0e39a9",
      "parents": [
        "a58bc2e74441ac89cb706b49c5a6d096df97080b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 17:49:03 2017 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 15:12:06 2017 -0800"
      },
      "message": "Revert \"Revert \"ART: Start RuntimeCallbacks\"\"\n\nThis reverts commit bf6331a45f730e1f1044af2ce43bceda660ae6fc.\n\nSwitch to using the mutator lock.\n\nBug: 31684920\nTest: m test-art-host-gtest-runtime_callbacks_test\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost --debug\nChange-Id: I6ce0f71de2aa9f90cd23cfca7723a793b560b16b\n"
    },
    {
      "commit": "33083d626dbf2c8b06badfd73f50e98114483059",
      "tree": "f6f5db21855a6182b591b57e6a34e5c1fc41b7d0",
      "parents": [
        "fd5f52b60cfa217fb0c4d7dcabdd0336b55990d7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jan 18 15:29:12 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jan 18 19:00:21 2017 -0800"
      },
      "message": "Rename offline_profiling_info to profile_compilation_info\n\nThis solves a long standing TODO to align the names of the files and the\nclass.\n\nBug: 32434870\nTest: test-art-host\n\nChange-Id: I2707da8fef8736a7223189d894fc00ff11bfab12\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "db70ce5e788404f36cb5dbb137c6a8f79f34a2a0",
      "tree": "b291c40e1b6c44f3744404f085706f4b07cbb73c",
      "parents": [
        "7d785fca4fd6cf3507aaa807681b3d73ed586c9b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 12 11:06:59 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 13 10:12:07 2016 -0800"
      },
      "message": "Address some review comments\n\nAddressed comments in dex cache and class table. Added class table\ntest.\n\nTest: mm test-art-host-gtest-class_table_test -j20\n\nChange-Id: I3ec0282247187acb1ec7af25b309501f001a1c3e\n"
    },
    {
      "commit": "063fc772b5b8aed7d769cd7cccb6ddc7619326ee",
      "tree": "bc165781989087a998721991504e589a7d5b0926",
      "parents": [
        "48d08a4233ee4450b0d5073d41445f9dd1f17191"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Aug 02 11:02:54 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Dec 01 11:15:47 2016 -0800"
      },
      "message": "Class Hierarchy Analysis (CHA)\n\nThe class linker now tracks whether a method has a single implementation\nand if so, the JIT compiler will try to devirtualize a virtual call for\nthe method into a direct call. If the single-implementation assumption\nis violated due to additional class linking, compiled code that makes the\nassumption is invalidated. Deoptimization is triggered for compiled code\nlive on stack. Instead of patching return pc\u0027s on stack, a CHA guard is\nadded which checks a hidden should_deoptimize flag for deoptimization.\nThis approach limits the number of deoptimization points.\n\nThis CL does not devirtualize abstract/interface method invocation.\n\nSlides on CHA:\nhttps://docs.google.com/a/google.com/presentation/d/1Ax6cabP1vM44aLOaJU3B26n5fTE9w5YU-1CRevIDsBc/edit?usp\u003dsharing\n\nChange-Id: I18bf716a601b6413b46312e925a6ad9e4008efa4\nTest: ART_TEST_JIT\u003dtrue m test-art-host/target-run-test test-art-host-gtest\n"
    },
    {
      "commit": "ba28f9f62f9908e04be3097f900db4701dd3d392",
      "tree": "86e4807d97e144812495706f7f9d0d2cfab96540",
      "parents": [
        "689a331aded82340d2ab144d0adb9bbbbd4b53ff"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Oct 26 10:56:25 2016 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Nov 08 06:20:28 2016 +0000"
      },
      "message": "Argument conversions for setter/getter MethodHandles.\n\nTest: m test-art-host-run-test-959-invoke-polymorphic-accessors\nBug: 30550796\n\nChange-Id: I9898605fc9f9f8a80f47f9559f3ccb99b02b07c8\n"
    },
    {
      "commit": "f657ed0472ea64e12a6d5aa7c98967c8abcf361b",
      "tree": "e9f2cdc66cda734b4e2a07e705d3ffe4724fdd8d",
      "parents": [
        "b85fd6fd73aa65bf0d65a1034ea2b6ed748a6a51"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 04 15:31:17 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Nov 07 10:53:16 2016 -0800"
      },
      "message": "Support genrules with multiple tools\n\nTo allow genrules with more than one tool, rename the tool property to\ntools and make it an array, replace $tool with $(location \u003clabel\u003e),\nand use $() for other variables for consistency.\n\nBug: 31948427\nTest: compare build.ninja\nChange-Id: I8d53510ac081ae20835b3ab7dfee3d74c520ab4d\n(cherry picked from commit 7d332965ea44f54ddeedc9b7fadcf2e5b3259f3a)\n"
    },
    {
      "commit": "d62515891b15e73bc8eebb55cc09cb4dec4fcf21",
      "tree": "20c485231c93fa83384312e428202d8140dfa09d",
      "parents": [
        "77a0e4541a29c26dba21ed8c1ed1c29ef8d0ce4c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 31 11:12:30 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 02 12:55:10 2016 -0700"
      },
      "message": "Add ClassExt mirror.\n\nWe add the ClassExt type to hold values in Class that are not always\nneeded without making the Class type larger. For the initial change we\nmove the verifyError field into this type. It is expected to grow as\ntime goes on.\n\nTest: mma test-art-host\n\nChange-Id: I1d97df2e1267203841ad47b2effcb66dd76ac12a\n"
    },
    {
      "commit": "000e1885701c8fdad07a784e3771881fa9be1d8a",
      "tree": "77d11180fb1d93903fa6c6cd58383d91a82affc5",
      "parents": [
        "b5cc1d1321e36d38cd48ae079438a8758b82edc1"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 24 17:14:25 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Oct 28 14:11:45 2016 +0100"
      },
      "message": "method_handles: Complete support for emulated stack frames.\n\nMost of this change is a refactor that templatizes the code\nthat performs argument conversions. This allows us to copy arguments\nbetween two shadow frames, or an emulated stack frame and a shadow\nframe.\n\nTest: make test-art-host\nBug: 30550796\n\nChange-Id: I23e65735a2dbd28f3c7b7d1ccf9762e77e0cf1f1\n"
    },
    {
      "commit": "0802518a6a5af8182131eb3fe66bf58dd77f9fe2",
      "tree": "94b84da33a0ef542f6c4c3888e786dc8762ff1b2",
      "parents": [
        "f30b1582c20079a1266f1fdcac621d4df2d7ce79"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 25 17:20:18 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 26 12:41:10 2016 +0100"
      },
      "message": "Save the non-verified classes in the VerifierDeps.\n\nWe will need that information when taking an OTA to make sure\nthe same set of classes needs to be verified at runtime.\n\nCurrently, the vdex file will contain a list of unverified\nclasses. We could alternatively encode a bit vector of the size\nof the type_id array, but the few experiments I did show that\nthe bit vector is actually larger. We can refine this later.\n\nbug: 30937355\ntest: m test-art-host\ntest: verifier_deps_test.cc\n\nChange-Id: I2670e4fd2e54ee7a148246baa705fda3a56617ff\n"
    },
    {
      "commit": "a1ff30fcb3c23b855872ef83b87e6ee19f03cb8e",
      "tree": "43d6533d594bc898ffeb016bc8895bd8da3efe1e",
      "parents": [
        "5065b09332328477d489b8ce26c3a1381e6f8d49"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 27 12:19:45 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 10 14:29:26 2016 -0700"
      },
      "message": "ART: Switch to name-based IMT hashing\n\nUse a hash scheme based on the name. This keeps IMT slots stable\nwhen dex tables change.\n\nThis incurs a severe performance penalty for computing the slot.\nMeasurements on host degraded from 30ns to an average of 85mus.\nHowever, calls in compiled code will not incur this overhead.\n\nAdded a test comparing similar interfaces in similar dex files.\n\nBug: 31594153\nTest: test-art-host\nChange-Id: Ibb86679ee94bec561984ea25826e56b1a7964cd0\n"
    },
    {
      "commit": "afa48270228832ecd7df4506915354d1a41f374a",
      "tree": "7d63c5bde346eb129f3159b07b2a66dfa86aeb41",
      "parents": [
        "72795d0a3368a7f921ce2f470917131cd946b717"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 03 12:46:58 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Sep 29 13:15:32 2016 +0100"
      },
      "message": "java.lang.invoke: Add mirror types for MethodHandle / MethodType.\n\nBug: 30550796\nTest: make test-art-host\nChange-Id: I096160464bc6e84f7e5ad021306a7e462cf3b0c5\n"
    },
    {
      "commit": "3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0",
      "tree": "f38d8d8aae51f53e7ee6b474f47597b784fc2316",
      "parents": [
        "0cfe19af3b7395658210ea6044a65c9811962a7a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 13 10:47:28 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 10:59:22 2016 -0700"
      },
      "message": "ART: Use libbase logging\n\nMove most of our logging infrastructure over to system/core/base.\nRetain VLOG.\n\nUsing unified Android infrastructure has two main advantages. First,\nit reduces the complexity/maintenance burden in ART. Second, it\nallows to detach logging for the cases where we do not want or need\na runtime, e.g., dexdump, the disassembler, etc. As a part of the\nlatter, libbase is also supported for all hosts (including Windows).\n\nFrom a developer viewpoint, there are minor behavior changes for the\nLOG statements (see above), but otherwise usage is the same. Explicit\nseverity enum items are in the android::base namespace now.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: I5abcb2f45f5b03d49951874c48544f72a283a91b\n"
    },
    {
      "commit": "1d3038f45782d5e71b1415d0660d43cc7645fc86",
      "tree": "2ed38789a55cc909cb986cd2f79e37eafeb388f8",
      "parents": [
        "c16672a0262a0269af9c91b5c2b67e485bbef59b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 23 16:52:05 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 23 16:52:05 2016 -0700"
      },
      "message": "Use liblog for liblog (instead of libcutils)\n\nBecause one wouldn\u0027t use libcutils if there is a liblog.\n\nBug: http://b/31289077\nBug: http://b/27171986\nTest: remove liblog from libcutils and make\nChange-Id: I5e7eb3a67a483835933e1b5587d43b697e39ceac\n"
    },
    {
      "commit": "0e8443995af602bcc2e70dcef1d20ee48acec934",
      "tree": "2d81b8db23bea139e40e33e4e9b8c69027fb1e56",
      "parents": [
        "c4cb3d532db8a500c1a15e8a0052895960259209"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Sep 08 13:43:31 2016 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Sep 21 11:42:21 2016 +0100"
      },
      "message": "Collapse ART\u0027s AbstractMethod class into Executable\n\nAfter the OpenJDK 8 pull there is now a common base class\nfor Method and Constructor that can be used instead.\n\nMethods that are abstract on Executable but on Android\nwere implemented in AbstractMethod are now consistently\nrenamed to \"{method}Internal\", declared final and\ngiven package-protected access.\n\nFor consistency with all other private, natively\nimplemented methods, the method getDeclaredAnnotations()\nhas been renamed getDeclaredAnnotationsNative().\n\nBug: 28666126\nBug: 31052885\nTest: make test-art-host and cts run of CtsLibcoreTestCases\nChange-Id: Ibfe6af6a47fe0cfffd0859ffbe58980aeb84e053\n"
    },
    {
      "commit": "afd3c9ea7f238afebd5073c1143d3c832ab10a71",
      "tree": "ea95e66ac119b6f86f637ebbeba22e956d3a4c4e",
      "parents": [
        "be3a3ee02f148345ba6e1a0361532a3f7e8c0002"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Sep 16 13:47:21 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 19 10:10:42 2016 -0700"
      },
      "message": "Convert art runtests to Android.bp\n\nBuild the art runtest libraries with Android.bp.  The host test\nlibraries move from out/host/linux-x86/lib[64] to\nout/host/linux-x86/nativetest[64], and the device test libraires from\n/data/artest/${TARGET_ARCH} to /data/nativetest[64]/art/${TARGET_ARCH},\nwhich requires adding nativetest to the library search path, and fixing\nsome tests to support multiple entries in library search paths.\n\nTest: m -j test-art-host\nTest: m -j test-art-target\nChange-Id: I2118a3292f22f275954ddd7cdd4e12287fe47808\n"
    },
    {
      "commit": "ca3c8c33501bf199d6fd0a5db30a27d8e010cb23",
      "tree": "12a6c3a4266bd17c6b9fe7066fd0b25cb8d9b2d6",
      "parents": [
        "0764877e21f1230e718923d5b84b048cd4346afa"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 06 14:04:48 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Sep 16 10:08:18 2016 +0100"
      },
      "message": "Collect verifier dependencies\n\nMethodVerifier tests whether a DEX method is valid w.r.t. the classes\nin class path. Since the APK does not change across OTA updates, it\nis not necessary to analyze the bytecode again with MethodVerifier,\nas long as its dependencies on the class path (which may have changed)\nare satisfied.\n\nThis patch introduces VerifierDeps, a class path dependency collector,\nand adds hooks into MethodVerifier where classes/methods/fields are\nresolved and where assignability of types is tested.\n\nTest: m test-art-host-gtest-verifier_deps_test\nBug: 30937355\nChange-Id: Iee0b321d772a5c7d1cb471aaa6e13918310b7e2f\n"
    },
    {
      "commit": "6e95dd56e43b3a29fb8360bd94e31cd2eaab1d3d",
      "tree": "c536c5588f8a96f4559ca00921c7852a82558ea5",
      "parents": [
        "6b22aa5106e60545119b9eeaceaa9f87ee597305"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 12 15:37:10 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Sep 15 12:27:06 2016 -0700"
      },
      "message": "Convert art gtests to Android.bp\n\nThis splits the compilation and running of the art gtests into two\nseparate locations.  The tests are now compiled in multiple Android.bp\nmodules in each directory.  art.go collects the installed locations of\neach test and exports it as make variables.  art/build/Android.gtest.mk\nconverts the list into the rules to run the tests.\n\nThis has a few changes in behavior:\n  - The rules to build tests are now always defined, and will build as\n    part of mmma art or make checkbuild.\n  - Host tests are no longer installed into out/host/linux-x86/bin, they\n    are in out/host/linux-x86/nativetest[64]/\u003cmodule name\u003e/\u003ctest name\u003e\n  - Target tests are now in\n    /data/nativetest[64]/art/\u003carch\u003e/\u003cmodule name\u003e/\u003ctest name\u003e\n\nTest: mmma -j art\nTest: m -j test-art-host\nTest: m -j test-art-target\nChange-Id: Iabcd99d43890e6b693688422b07a283c3226a496\n"
    },
    {
      "commit": "6b22aa5106e60545119b9eeaceaa9f87ee597305",
      "tree": "ab26f42ac9fb9fff52c6f0683561c0bcdebd9569",
      "parents": [
        "6b4d988feb18559204f7175914851baf28febd8c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 12 14:35:39 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Sep 15 12:24:25 2016 -0700"
      },
      "message": "Convert libart-gtest to Android.bp\n\nChange-Id: Ibea17e3e002e6ad3f82158cd3c69d087fa9b15c9\n"
    },
    {
      "commit": "9323e6e44060545d6c4f925139572868f65b7fe3",
      "tree": "65f3f380605d75f34d49aec49fca494bec26ef5b",
      "parents": [
        "58735fbfbb2da0c0a19b3239da07c2353c40767d"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Sep 13 08:58:35 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Sep 14 08:01:39 2016 -0700"
      },
      "message": "Separate annotations from dexfile reading.\n\nBug: 22322814\nChange-Id: I867d66da407dd80394a10d19903ebbc1ec3986ff\nTest: test-art\n"
    },
    {
      "commit": "c9568796e8f9957be75a0e669a954902795d7562",
      "tree": "8a6783bb177692c3b8084e0798d8fbf5c4b44789",
      "parents": [
        "9ef68a3ad02eb7e2242a6d7f6a208c7a9b8ac407",
        "60458a072c4f0b24038420b0f1bed0fe94c72965"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Tue Sep 13 09:02:35 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 13 09:02:35 2016 +0000"
      },
      "message": "Merge \"Track libcore Executable.getParameter() changes\""
    },
    {
      "commit": "7b49e6cade09bc65b3b5f22d45fc9d0a7184e4f2",
      "tree": "36bb77d376708ba0f054c9820f4b7ed51437fbb2",
      "parents": [
        "3bac5443975cd6312e7c6282b94014db25f369d7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Sep 01 11:06:18 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 12 14:39:07 2016 +0100"
      },
      "message": "Introduce VDEX file, use it for DEX files\n\nThis patch introduces a new output file called VDEX. In the future,\nVDEX files will store pre-validated DEX files which do not need to be\nre-extracted and re-verified when recompiling, e.g. due to new\nprofiling information or after a system update.\n\nWith this CL, the OatWriter writes DEX files into the VDEX and the\nrest of its output into OAT. The OatFile class and related classes\nare updated to load the VDEX at runtime and mmap the DEX file section\nfrom it. Patchoat creates symlinks to the source VDEX files in the\ntarget directory or copies the files if passed in as file descriptors.\n\nThe feature can be disabled by setting the environment variable\nART_ENABLE_VDEX to false.\n\nTest: m test-art-host\nBug: 30937355\nChange-Id: I54dcaececf6814c258c80524ec15e2e2ef69c8dd\n"
    },
    {
      "commit": "f61df9b450f8734b84584671ad22fa4f29d386e4",
      "tree": "a97f593b18e8f03fb01c0bf23703cf0fc7638f5d",
      "parents": [
        "9d185da3bef8caf015d3dbf4ad79c520af7ce3b1"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 07 07:12:29 2016 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 07 07:42:27 2016 -0700"
      },
      "message": "ART: Remove computed-goto interpreter\n\nART currently has 3 interpreters: a baseline switch-statement based\ninterpreter, a C++ computed goto interpreter and a fast assembly\ninterpreter (mterp).\n\nThe C++ computed goto interpreter was intended to get some of the\nbenefits of the old Dalvik mterp interpreter - which it did.  However,\nwe now have the faster assembly interpreter, so it is no longer\nneeded.\n\nTest: m test-art-host\nTest: m ART_TEST_INTERPRETER\u003dtrue test-art-host\nChange-Id: I0e8f139ab6bc48d0568951af1f83e2b1c00835f8\n"
    },
    {
      "commit": "60458a072c4f0b24038420b0f1bed0fe94c72965",
      "tree": "e1e10a29c99f99538695c12da1af914d84ddd4c3",
      "parents": [
        "9d185da3bef8caf015d3dbf4ad79c520af7ce3b1"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Sep 01 15:32:44 2016 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Sep 07 11:12:02 2016 +0100"
      },
      "message": "Track libcore Executable.getParameter() changes\n\nExecutable.getParameter() has been added which added\ntwo new fields to java.lang.reflect.Executable,\nimpacting class arrangements and padding.\n\nThe java.lang.reflect.Parameter class has been added\nwhich has some associated native code and support\nmethods in DexFile.\n\nTest: make test-art-host\nBug: 28666126\nChange-Id: I4ff6469388879651a6c9e568eca0b1cd716f0c0d\n"
    },
    {
      "commit": "38c8fcd78dcb6707e30b489b57d61c1232ee5757",
      "tree": "e6fad5418efaa5f834aefc6ce4f66a0c16b9cf32",
      "parents": [
        "011af10c4b11f1693fa9c79c1d8dbd2faa35e99b",
        "a4c2a054ca946eb14496fe8e9fd6057a59ccf692"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Sep 05 09:11:36 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 05 09:11:36 2016 +0000"
      },
      "message": "Merge \"Support for loading classes from DEX files stored in a ByteBuffer.\""
    },
    {
      "commit": "a4c2a054ca946eb14496fe8e9fd6057a59ccf692",
      "tree": "e6ba8afbff39b30775c24d81a05ee255fcc9457b",
      "parents": [
        "79c3e4e558215ffae1601fc6d5f1626e063a4b22"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Aug 17 10:51:42 2016 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 02 11:40:21 2016 +0100"
      },
      "message": "Support for loading classes from DEX files stored in a ByteBuffer.\n\nBug: http://b/26878838\nTest: test-art-target-gtest-dex_file_test\n\nChange-Id: I68845c35784386bde6270102f0079d4f07bc4d03\n"
    },
    {
      "commit": "1c155f8631d30863f625adcb3649898743a2aef1",
      "tree": "c342d5e12c7c218a125e2b22b7f493738108d90f",
      "parents": [
        "69a0032b99002dc1318c4e0abbb17d8dddd374dc",
        "95aab05792480107437d005a71795c9a589da2f9"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Sep 01 22:29:52 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 01 22:29:52 2016 +0000"
      },
      "message": "Merge changes Id2bc87dc,I17c191ec\n\n* changes:\n  Fix naming of libartd-simulator\n  Fix debug flag ordering\n"
    },
    {
      "commit": "e534a160337bb188fa946b671d34fdcfd87ef2da",
      "tree": "7d9571e3e4db98f77d5aee9696ded56265556a4a",
      "parents": [
        "a2ab404b622c1f3d6daffd70cf7744b3a882ea59",
        "aaadff8c182bc95f42eba7375737fb56da572863"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 31 19:37:50 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 31 19:37:50 2016 +0000"
      },
      "message": "Merge \"ART: Use libbase\""
    },
    {
      "commit": "19a3f556e777de889d8f377b4d1be143f25f39c3",
      "tree": "b59a42c9c9e02520f53dae73f84994612dabdee1",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c",
        "da8ffec70e9019fe1208ac38444a7048958fc206"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 31 09:41:23 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 31 09:41:23 2016 +0000"
      },
      "message": "Merge \"Add entrypoint type information.\""
    },
    {
      "commit": "c564406ac428dc6de9998a48d97c445a03201338",
      "tree": "80719542a56eb137a58be9eb50ceefb9d01f668a",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Aug 30 15:41:08 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Aug 30 15:43:41 2016 -0700"
      },
      "message": "Fix debug flag ordering\n\nart_debug_defaults needs to come first in the defaults list so that its\nprepended flags come after the art_defaults flags.\n-Wno-frame-larger-than\u003d also needs to be inside a target block to match the\nway the -Wframe-larger-than\u003d flags are inserted by art.go so that they\ncome after.\n\nChange-Id: I17c191ec9dcc393db1e0805cd058c768e4d09400\n"
    },
    {
      "commit": "aaadff8c182bc95f42eba7375737fb56da572863",
      "tree": "7fcbf58a92978817678f815e8fef2c429a875559",
      "parents": [
        "3079bc2b73666320a5d2d3454f5c418ef0d37519"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 29 09:53:48 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 29 12:54:23 2016 -0700"
      },
      "message": "ART: Use libbase\n\nMove to using standard macros from libbase. Required so that we\ncan use libbase in libart-disassembler to disconnect from libart.\n\nBug: 15436106\nTest: m\nTest: m ART_BUILD_HOST_STATIC\u003dtrue\nTest: m test-art-host\nChange-Id: I1f1723d875d20689d73835f6ab78c27a8efcf27a\n"
    },
    {
      "commit": "20ada11641ae22fb9ce6ab7bac378f04d5071849",
      "tree": "7dc9b155ad2bc703044fca94095b488547c83a6a",
      "parents": [
        "04bbe22d21480fcb4598dcf72e12d0dbe2af7a16"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 29 08:51:15 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 29 08:51:15 2016 -0700"
      },
      "message": "ART: Fix symbols\n\nFollow-up to 1f7f3bd26ecad4366c904b7e7d05587fc7a83ea2\n\nTest: m test-art-host\nTest: readelf -s $OUT/system/lib/libart.so\nChange-Id: I70b25bf65e09eb984d0f533fa19638ffbec12b3c\n"
    },
    {
      "commit": "da8ffec70e9019fe1208ac38444a7048958fc206",
      "tree": "a6dc41bc2dfe6c5afc6fcc3bdd77c35063ad4e6a",
      "parents": [
        "c0ee1f5af12298e11aaadab4c9838b2f1395972e"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@linaro.org",
        "time": "Wed Mar 09 12:02:11 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 26 16:07:58 2016 +0100"
      },
      "message": "Add entrypoint type information.\n\nFor some of the runtime calls we do not need to generate stack maps. For\nexample, the Optimizing compiler implements HRem Floating Point by\ncalling libm\u0027s fmod().\n\nSince this is a leaf method that does not suspend the execution, we do\nnot need to treat the fmod() invoke as a possible suspend point and thus\nwe do not need to create a stack map for the particular PC.\n\nFor now conservatively only tag the maths runtime entrypoints with this\ninformation.\n\nTest: m test-art-target\nChange-Id: Iab73dcf8047d2edaa7a570113ee792e46ccbc464\n"
    },
    {
      "commit": "19f28f1216a03ba65369636851e54b6b5a6651e6",
      "tree": "cf5c260a7203d39a9089fcd5897da79c54d940e8",
      "parents": [
        "766ea43e99e1219a1825410034c128556e83be18"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Aug 25 16:42:09 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Aug 25 16:42:09 2016 -0700"
      },
      "message": "Fix mac builds\n\nAdd libz-host back as a dependency to fix darwin builds.\n\nChange-Id: I1abc9e2f336e029592a5fcc27a79f94ad235547e\n"
    },
    {
      "commit": "1f7f3bd26ecad4366c904b7e7d05587fc7a83ea2",
      "tree": "73f5c720f744303bc8ae9dad0891264f4788767a",
      "parents": [
        "521691ae4dfad47cf6b46858347fa5fa32fd7bcc"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jul 27 10:12:38 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Aug 25 13:42:11 2016 -0700"
      },
      "message": "Convert libart and dependencies to Android.bp\n\nRe-landing I73839046a5a53eb34cd28eea53149911c568e411, with fixes for mac\nbuild (only apply -Wl,--keep-unique to device x86 builds), typo in\nchecking for ART_HEAP_POISONING environment variable, and removing\n-Wframe-larger-than for debug builds.\n\nTest: mma -j, m -j test-art-host\nChange-Id: If88492174cbcb0d9a8758176c006163a29eaaa63\n"
    }
  ]
}
