)]}'
{
  "log": [
    {
      "commit": "d2f13ba7153aa7b77e4662844233c848535f8aac",
      "tree": "9a0f9bda0e886b1652cc306dba4a05648385beb0",
      "parents": [
        "e7d7e9dd01b6ce5a079ebc7e369f4a8d4e42f7d8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 04 16:48:58 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 06 08:02:04 2019 +0000"
      },
      "message": "Remove requirement of a ProfilingInfo for jitted code.\n\nWhen pre-jitting (zygote or system server in jit zygote mode),\nthe profiling info is just memory overhead. Remove the need to have\none.\n\nBug: 119800099\nTest: boot, testrunner.py --jit\nChange-Id: Ie74d870eebef72c903225542e9b41dfe98132419\n"
    },
    {
      "commit": "df1ab205c78fbfae152947e9618d8871a42a744b",
      "tree": "d7c461bba27009dd8304a2da1b0cea5b031a1a7b",
      "parents": [
        "743600d5ae654817a5d81179fb480816e0cd139d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sun Jun 02 16:45:03 2019 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jun 04 15:34:07 2019 +0000"
      },
      "message": "ART: Avoid shared cache lines for JIT code allocations\n\nDual view JIT exhibits some hygiene issues that causes crashes on\ndevices with 32-bit kernels.\n\nThis change makes JIT code allocations cache aligned. This is based on\nguidance in the v7_coherent_user_range() that says \"it is assumed that\nthe Icache does not read data from the write buffer\".\n\nBug: 132205399\n\nTest: \u003e2000 boot tests on affected device with no zygote crashes.\nTest: No crashes running ART JIT benchmarks on go/lem\nTest: No failures with Treehugger\n\nChange-Id: I901e2e5c07b9502876b33f572be63ec1dca19cbe\n"
    },
    {
      "commit": "7989ac9ef0f50db26ce5844e7e6f9a659994c244",
      "tree": "a71974b358b1b06cdd9d740b83cbab41493db4b3",
      "parents": [
        "6dfdfef85b210dc104a7cd221c6717e1a2123a13"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 10 12:42:30 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 12 16:10:51 2019 +0000"
      },
      "message": "Save the JIT compiled code when the class isn\u0027t initialized yet.\n\nWhen a class isn\u0027t initialized, we put resolution stubs to its\nstatic methods. In order to fetch the compiled code at the point of\ninitialization, save it in the profiling info.\n\nBug: 119800099\nTest: start an app, no JIT compilation of boot classpath methods\nChange-Id: I32b947318dbcb1010c94a11b51ea39d992d247e3\n"
    },
    {
      "commit": "226805d9b81ba442251d0e2c4baedc36fcda6592",
      "tree": "3a256b1d36894d8d43ec9650f2a3f55c90c4730c",
      "parents": [
        "96453b7d6aa445c6609aa465df5d66ae0beb7956"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 14 10:59:02 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 19 09:22:01 2018 +0000"
      },
      "message": "Deoptimize zygote compiled methods in DeoptimizeBootImage.\n\nThose methods don\u0027t get compiled with the \"debuggable\" flag,\nso we need to deoptimize them.\n\nAlso fix a bug revealed by the new test where a concurrent\nJIT collection happens when trying to disable it.\n\nAlso make DeoptimizeBootImage truly mutator lock exclusive.\n\nTest: 689-zygote-jit-deopt\nChange-Id: I00607dbe100350c5328293c35c87946fa97924b8\n"
    },
    {
      "commit": "ce9ed3669d041d9eb2f5489596f133248d90f497",
      "tree": "f95fc9d6fc78119686fe91db5c2aaabd31b6abb1",
      "parents": [
        "69431d3ba1c560f0b23bd2ad6257949deb679aa7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 29 03:19:28 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 06 14:12:34 2018 +0000"
      },
      "message": "Enable JIT in zygote.\n\nbug: 119800099\nTest: boot test\nChange-Id: I92dc59adeaf1202a984d363b1420ef26e53ebe84\n"
    },
    {
      "commit": "c9de61cf9477e221e0dcc6470de9bf73c0559cf0",
      "tree": "db42f9c3b26d7543b7c378397debfc0595925ba6",
      "parents": [
        "763cd98161424cf19af2f113a6802f04860dcd6e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 27 17:34:31 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 27 18:01:19 2018 +0000"
      },
      "message": "Revert^2 \"Refactor code around JIT creation.\"\n\nThis reverts commit 763cd98161424cf19af2f113a6802f04860dcd6e.\n\nBug: 119800099\n\nReason for revert: Updated the DCHECKo take into account current state\nof zygote not having a thread pool.\n\nChange-Id: I1181ff85e7aebd062ee892548b80ab3de06a5ac7\n"
    },
    {
      "commit": "763cd98161424cf19af2f113a6802f04860dcd6e",
      "tree": "bfb50d986ad25030ecfde9b3a4e1ffd8983e30f6",
      "parents": [
        "7a2c7c2f7062d9fef21b72ff9c10ca8ef863eb8b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 26 18:21:45 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 26 18:21:45 2018 +0000"
      },
      "message": "Revert \"Refactor code around JIT creation.\"\n\nThis reverts commit 7a2c7c2f7062d9fef21b72ff9c10ca8ef863eb8b.\n\nReason for revert: Breaks boot in debug mode\n\nBug: 119800099\nChange-Id: I6d015b04c480f76824ead936238cbf49b164b7e3\nTest: N/A\n"
    },
    {
      "commit": "7a2c7c2f7062d9fef21b72ff9c10ca8ef863eb8b",
      "tree": "909d18e31d319313a0729019258418980c810d79",
      "parents": [
        "c754cc8e1c2dbcb1331ec2bed3ea0787bdd2b5c3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 20 10:03:13 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 21 11:09:49 2018 +0000"
      },
      "message": "Refactor code around JIT creation.\n\n- Create the JIT early on.\n- Have dedicated zygote spaces, that get assign after the fork.\n- Re-parse compiler options after fork to take into account customization\n  of debug flags by the child.\n\nCurrently, we only create the thread pool in the child, so the zygote\nisn\u0027t jitting yet.\n\nBug: 119800099\nTest: test.py, device boots\nChange-Id: I591ce933ebf54a67937ab1d05206534f55ef2f65\n"
    },
    {
      "commit": "b9f1af59681a73a33c86dd5919cc11874623d9d8",
      "tree": "d31e900f951201e406c524efd75318ebdbe4d649",
      "parents": [
        "b321ac28f726a7ed41f277382d85702ffdfbe00f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 16 10:30:29 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 16 10:30:29 2018 +0000"
      },
      "message": "Small cleanups in jit_code_cache.\n\nMake methods private, remove dead code.\n\nTest: test.py\nChange-Id: I4554d35c64115c6dd5308b6d509659e5c60346b1\n"
    },
    {
      "commit": "ad28f5e02b3adc8ee7fec2f323eeb42bc96d596a",
      "tree": "53722e481afd203846ec45bf3d65ef3e32b5d419",
      "parents": [
        "fe79b5939696c87f66d9d39540fe0f38369c5158"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Oct 17 09:08:17 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Oct 31 06:32:12 2018 +0000"
      },
      "message": "ART: add hook for framework to set SELinux context\n\nAdds a new zygote hook for system server, nativePostForkSystemServer,\nso the process can transition between the system_server_startup and\nsystem_server SELinux domains.\n\nMemory resources for the JIT are allocated in the hook as setting the\nSELinux domain with setcon() requires that the process is still single\nthreaded.\n\nBug: 66095511\nTest: device boots\nTest: art/test.py --host --64\nChange-Id: Ic840634c5c59906b8d344c2edffafeb9b13a409f\n"
    },
    {
      "commit": "1d3fd0803db51012e4d85b72b0f8096879c77af4",
      "tree": "0029858bb34c244282f91bd64705226d5dee28fb",
      "parents": [
        "cac3267b3516571ef64bd28f916f52659796253f"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 28 09:38:35 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sun Sep 30 19:37:35 2018 +0100"
      },
      "message": "Revert^4 \"ART: Dual mapping of JIT code pages\"\n\nThis reverts commit 1bfce389e8aba4ca7276918f2f86e5b13c5b5840.\n\nThis change adds a fix for stale data in the JIT code cache when dual\nmappings of the code cache are employed. With dual mappings, newly\ncompiled code is written into the non-executable mapping of the code\ncache. An additional data cache flush is needed to ensure the new\ncode is written out to the point of unification in the memory\nhierarchy.\n\nTest: manual\nBug: 66095511\nBug: 116761923\n\nChange-Id: Ib5fa83f22ee4fee1d0f80e16b974e1677c20af9b\n"
    },
    {
      "commit": "1bfce389e8aba4ca7276918f2f86e5b13c5b5840",
      "tree": "e00d19a342ff429fc514bf70bf52ff005a00911c",
      "parents": [
        "0e904ffc3376fe6fd272fee809752463f10e27f5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 28 01:41:04 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 28 01:41:04 2018 +0000"
      },
      "message": "Revert^3 \"ART: Dual mapping of JIT code pages\"\n\nThis reverts commit 0e904ffc3376fe6fd272fee809752463f10e27f5.\n\nReason for revert: Seems to break for 32-bit arm\n\nBug: 66095511\nBug: 111199492\nBug: 116761923\nChange-Id: I7d4bc78a1d5748a85ce63e2c57f32a8bdb768354\n"
    },
    {
      "commit": "0e904ffc3376fe6fd272fee809752463f10e27f5",
      "tree": "2cc5b4abdd378b6448d9d84e0034b23dc2430da8",
      "parents": [
        "5d7015cd64085068b1685d44339b4b705ef3f065"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Sep 24 08:40:54 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Sep 24 11:30:18 2018 +0100"
      },
      "message": "Revert^2 \"ART: Dual mapping of JIT code pages\"\"\n\nAvoid setting footprint on code heap mspace when the heap size is zero.\n\nBug: 66095511\nBug: 111199492\nTest: art/test.py --host --64 --interpreter --no-image -r -t 595-profile-saving\n\nChange-Id: I8c475e135f7558915f799d3cb451595833e832a6\n"
    },
    {
      "commit": "604e234e7a98d793d1a9591a477d64f30849f709",
      "tree": "b5f824c5bc0aa1621a59bc1d53dea46e172607ad",
      "parents": [
        "6fa1729be6d2e38a31fc804025ed44cd08a4eb04",
        "60eaabebac20034571ed37f5096158a6623461ea"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 21 16:48:45 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 21 16:48:45 2018 +0000"
      },
      "message": "Merge \"Revert \"ART: Dual mapping of JIT code pages\"\""
    },
    {
      "commit": "60eaabebac20034571ed37f5096158a6623461ea",
      "tree": "50f77c45386702a8e2248d44ed4a2bf9954f402c",
      "parents": [
        "0e314f08cb0080799e86f639e3bc0306c5e74344"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 21 16:41:27 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 21 16:41:27 2018 +0000"
      },
      "message": "Revert \"ART: Dual mapping of JIT code pages\"\n\nThis reverts commit 0e314f08cb0080799e86f639e3bc0306c5e74344.\n\nReason for revert: Breaks test-art-host-run-test-debug-prebuild-interpreter-no-relocate-ntrace-cms-checkjni-no-image-pictest-ndebuggable-no-jvmti-cdex-fast-595-profile-saving64.\n\nBug: 66095511\nBug: 111199492\nChange-Id: I6ca09e6c60e49647dfe6cc52708b1843c8acc89a\n"
    },
    {
      "commit": "d75a268d2efdcc063d483c965c4899875aaf42b1",
      "tree": "b02acaa8b6443db2aed026a3529761773f68afba",
      "parents": [
        "8f676995c00154f48d6b68b1656b654d0cd4593c",
        "0e314f08cb0080799e86f639e3bc0306c5e74344"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 21 14:29:38 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 21 14:29:38 2018 +0000"
      },
      "message": "Merge \"ART: Dual mapping of JIT code pages\""
    },
    {
      "commit": "0e314f08cb0080799e86f639e3bc0306c5e74344",
      "tree": "ab4cf915ea5399b42c8dbf304d752e110f905ea0",
      "parents": [
        "9b1e90ef5c8c026253099066e8414803a9880bf9"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Sep 04 11:28:31 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 21 10:35:43 2018 +0100"
      },
      "message": "ART: Dual mapping of JIT code pages\n\nAdd support for a two mappings of JIT code pages. One mapping is used\nfor executing code, the other for updating it. The latter mapping is\nnever executable.\n\nFallback to the existing regime when the required support is missing.\n\nNo longer allocate mappings for JIT code when cache exists only for\nprofiling purposes.\n\nBug: 66095511\nBug: 111199492\nTest: art/test.py --host\nTest: art/test.py --64 (angler - single view)\nTest: art/test.py --64 (other - dual view)\nTest: walleye boots\n\nChange-Id: I9920534c81cbf16f375f1dd554d5952716bf3253\n"
    },
    {
      "commit": "ac3ac681a1d1d5d5d4662b7e4d3cf8e0b4d53d27",
      "tree": "803b02eabfb6af718561d0dfd83d61e4bccbfa28",
      "parents": [
        "8402166d0e3b5d91ab867a7dcd7218f824afe3ff"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 20 11:01:43 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 20 15:48:38 2018 +0100"
      },
      "message": "Pass JIT roots as a vector\u003cHandle\u003c\u003e\u003e to JIT cache.\n\nThis avoids creating an object on the heap and thus\nprevents issues for the 904-object-allocation in the\nJIT-at-first-use configuration.\n\nTest: run_build_test_target.py -j48 art-jit-on-first-use\n      (test 904 passes; test 1935 still failing).\nBug: 116189667\nChange-Id: I58c0c8cb2d78edc63dab7d72e69b882abbfb79fd\n"
    },
    {
      "commit": "c34bebf39410f5571d3d5813157b61f274d435c3",
      "tree": "73909d3b34a2908e9de44cc60c4a2ff74eabefd7",
      "parents": [
        "f345404c725330914b8313d2c1af17226c5b92ca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 16 16:12:49 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 21 13:51:00 2018 +0100"
      },
      "message": "Remove unnecessary indirection from MemMap.\n\nAvoid plain MemMap pointers being passed around by changing\nthe MemMap to moveable and return MemMap objects by value.\nPreviously we could have a valid zero-size MemMap but this\nis now forbidden.\n\nMemMap::RemapAtEnd() is changed to avoid the explicit call\nto munmap(); mmap() with MAP_FIXED automatically removes\nold mappings for overlapping regions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nChange-Id: I12bd453c26a396edc20eb141bfd4dad20923f170\n"
    },
    {
      "commit": "33b7b5da331e0a10fc615c8df72ba2aefad4e3fb",
      "tree": "4894623ad71bf957c25009e35e1b57ba501bb9c3",
      "parents": [
        "134380d7c70d95962ed818458185e608ad17ff08"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 07 19:13:51 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Aug 17 14:40:51 2018 -0700"
      },
      "message": "Revert^2 \"Fix race in CommitCodeInternal and cleanup\"\n\nThis reverts commit 8dde74eb7bec8e989f34d86a01c26b0f5c7e6443.\n\nWe were failing to do a null check in cha.cc. Due to compiler\noptimizations this would actually run without error on non-asan\nbuilds, causing the error to pass testing.\n\nReason for revert: Fixed issue causing asan issue.\nTest: run asan tests\n\nChange-Id: Ic5492c69b7735555108d8b18c8e687ce510c4549\n"
    },
    {
      "commit": "8dde74eb7bec8e989f34d86a01c26b0f5c7e6443",
      "tree": "e94f5e620f27b3d6dcb3b634bc25bf0274b1143b",
      "parents": [
        "a2af2b0c761a04d1e1ba4b1ccdc2efb4692e9c9c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 07 19:11:05 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 07 19:11:05 2018 +0000"
      },
      "message": "Revert \"Fix race in CommitCodeInternal and cleanup\"\n\nThis reverts commit a2af2b0c761a04d1e1ba4b1ccdc2efb4692e9c9c.\n\nReason for revert: Seems to cause the asan gtests to fail.\n\nChange-Id: I0c7b4720de16f9b2b4e1e27c3c4e57a018c59a0c\nTest: none\n"
    },
    {
      "commit": "a2af2b0c761a04d1e1ba4b1ccdc2efb4692e9c9c",
      "tree": "6c84decdf15db52cf8c20074f55b6f4fc89f9520",
      "parents": [
        "d0c6ec392756fd038ebb8aeaad19aed94c5fd1a5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 19 14:39:24 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 01 09:15:23 2018 -0700"
      },
      "message": "Fix race in CommitCodeInternal and cleanup\n\nJitCodeCache::CommitCodeInternal had a race where it gained the\ncode-cache lock to allocate memory, then drops it and potentially\nsuspends. It relied on the time for a code-collect being strictly more\nthan the time this function took, creating a race. This CL Changes the\nlock ordering of CHA to allow us to cleanup the CommitCodeInternal\nfunction and remove the race.\n\nTest: ./test.py --host --jit\nChange-Id: I13c7ec6c56f07660778009ad8ce9c8c10bc2d57d\n"
    },
    {
      "commit": "8cd54547cec8a4537db5682c2da8be22843b1310",
      "tree": "fb1158993bab2e027984cedab59b402c051a45a7",
      "parents": [
        "91f0fdb4372d3f2bcfcd9db67afcbe7ee1901048"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jul 15 23:58:44 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Aug 01 14:49:40 2018 +0100"
      },
      "message": "Move MethodInfo to CodeInfo.\n\nThere is no need to treat it specially any more,\nbecause of the de-duplication at BitTable level.\n\nThis saves 0.6% of oat file size.\n\nTest: test-art-host-gtest\nChange-Id: Ife7927d736243879a41d6f325d49ebf6930a63f6\n"
    },
    {
      "commit": "8808756b8fba036a9c73a45c800a56be09872364",
      "tree": "9b28f314ff516d1d9b85d07f71bdc77fad465e48",
      "parents": [
        "dda4e8b5f2ffed24a2dcdb99d2301d9fc0eb91e2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Jun 23 22:05:56 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 27 15:03:06 2018 +0100"
      },
      "message": "Remove frame info from OatQuickMethodHeader.\n\nThe information has been moved to CodeInfo,\nwhere it is stored in much more compact way.\n\nThe old CL which added the data to CodeInfo cost 0.7%.\nThis CL saves 2.5% of .oat file size so a win overall.\n\nTest: test-art-host-gtest\nChange-Id: I07fcf6f2776c96218f995ba3b57a1e6ccbf5e317\n"
    },
    {
      "commit": "d25eb2cf85d04ae8565dcefb347afb108268b374",
      "tree": "db3d326e3ba40af8e7fd3e3aeea5e3752b07c700",
      "parents": [
        "d7da3147fea647ade418337aed6a8f9402412611"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 19 12:17:04 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 19 12:17:04 2018 +0000"
      },
      "message": "Revert^5 \"Rewrite JVMTI method tracing to use trampolines\"\n\nThis reverts commit d7da3147fea647ade418337aed6a8f9402412611.\n\nReason for revert: Tests are still failing on the buildbot.\n\nChange-Id: Iaaac38137b1c4bed8e3a15b0c0c14730654025f6\n"
    },
    {
      "commit": "d7da3147fea647ade418337aed6a8f9402412611",
      "tree": "74907194b84807ae327ba9aff876e1f9d4bbf7a4",
      "parents": [
        "eee2ee8e17aa65656e9946c5beb4a0a49fee7509"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 18 15:39:16 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 18 16:10:50 2018 -0700"
      },
      "message": "Revert^4 \"Rewrite JVMTI method tracing to use trampolines\"\n\nSince we are unable to change the semantics of ClassLoaded and\nClassPrepared due to b/111394423 for the moment changes were made in\nlibjdwp to remove the deadlock between the jit being stopped and\njit-threads trying to lock JVMTI monitors in libjdwp.\n\nUntil some resolution for b/111394423 is implemented agents should be\nvery careful about gaining locks in the ClassLoaded, ClassPrepared or\nVMObjectAlloc events if said lock is held over a call to\nSetEventNotificationMode, SetExtensionEventCallback,\nRetransformClasses, or RedefineClasses. These locks can only be\nsafely held if the object argument to the event is not an array-class\nobject or the thread is known not to be a jit thread.\n\nThis reverts commit bf2ca05ccf658a9f626d1cb3f1adca6087ece7b8.\n\nBug: 111394423\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost --debug\n\nReason for revert: Fixed issue with libjdwp deadlocking on jit threads\n\nChange-Id: I8baeb8311f67062cbc26286eb221da34e1972f27\n"
    },
    {
      "commit": "bf2ca05ccf658a9f626d1cb3f1adca6087ece7b8",
      "tree": "8de1c48dd0a83091ffef6bf321ffc4ffc05b1147",
      "parents": [
        "460c6ce61766196fc47ec5744417254fa2d6e364"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 18 13:26:11 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 18 13:26:11 2018 +0000"
      },
      "message": "Revert^3 \"Rewrite JVMTI method tracing to use trampolines\"\n\nThis reverts commit 460c6ce61766196fc47ec5744417254fa2d6e364.\n\nReason for revert: I believe this is breaking libjdwp jit tests.\n\nChange-Id: I51297763c1d12555b32f3d37c0ceaa3b5720fff5\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost --variant\u003dX64 --debug\n"
    },
    {
      "commit": "460c6ce61766196fc47ec5744417254fa2d6e364",
      "tree": "70831d1dd48b3e65e1266da179d01c7d27cc1e47",
      "parents": [
        "53570676750d74416cecdf5a8e01f3cf9a8d4169"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 11 16:13:24 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 17 11:03:27 2018 -0700"
      },
      "message": "Revert^2 \"Rewrite JVMTI method tracing to use trampolines\"\n\nThis reverts commit 8772eb7ced96101e6202d8884edc84224ee1f1fd.\n\nWe had issues with trampolines confusing the libgcc _Unwind_Backtrace\nfunction and jit suspension deadlocking with user-code suspension.\n\nReason for revert: Fixed issue causing test 989 to fail in some\n                   configurations.\nTest: ./test.py --host --gcstress --cms\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\n\nChange-Id: Id83aa0d71f4523fe1b5e448d49887779f911a1a2\n"
    },
    {
      "commit": "dca6840055c5255ad05f7516b0227e44ef6310a2",
      "tree": "1ec755d20b31dbe4c57a4e29afcd468eb3751568",
      "parents": [
        "f3c3e83d3a98bd3ca388fca32f1c277a7945e1e3",
        "8772eb7ced96101e6202d8884edc84224ee1f1fd"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 11 16:11:29 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 11 16:11:29 2018 +0000"
      },
      "message": "Merge \"Revert \"Rewrite JVMTI method tracing to use trampolines\"\""
    },
    {
      "commit": "8772eb7ced96101e6202d8884edc84224ee1f1fd",
      "tree": "24df91603efe9ce8c4a2efd09ac402aceb10df4e",
      "parents": [
        "25bf44622d6359c1d49c2a8a8b45938ff099f811"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 11 16:10:48 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 11 16:10:48 2018 +0000"
      },
      "message": "Revert \"Rewrite JVMTI method tracing to use trampolines\"\n\nThis reverts commit 25bf44622d6359c1d49c2a8a8b45938ff099f811.\n\nReason for revert: Seems to break jit-gcstress test 989\n\nChange-Id: Ia59833a2b80c6ab5a67483bf076bf08ba6769a40\nTest: None\n"
    },
    {
      "commit": "25bf44622d6359c1d49c2a8a8b45938ff099f811",
      "tree": "d1a0e1f8069001d6880723f77e95efb01385ca71",
      "parents": [
        "d109e30eab8ba25f8d89be2a83d9036e2d541af2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 11 10:28:06 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 08:44:52 2018 -0700"
      },
      "message": "Rewrite JVMTI method tracing to use trampolines\n\nNow that we have working instrumentation trampolines we can rewrite\nthe MethodEntry and MethodExit events to use these instead of the\ninterpreter. This will improve performance of code being traced in\nthis way by allowing the actual code to still use optimized jit code.\n\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xjitthreshold:0 --jit\nTest: ./test/testrunner/testrunner.py --host --jit --debug --runtime-option\u003d-Xplugin:libtracefast-trampolined.so\nTest: ./test/testrunner/testrunner.py --host --jit --debug --runtime-option\u003d-Xjitthreshold:0 --runtime-option\u003d-Xplugin:libtracefast-trampolined.so\nTest: ./test/testrunner/testrunner.py --host --debuggable --run-test-option\u003d\u0027--with-agent libtifast.so\u003dMethodEntry,MethodExit\u0027\nTest: ./test/testrunner/testrunner.py --host --debuggable --jit --runtime-option\u003d-Xjitthreshold:0 --run-test-option\u003d\u0027--with-agent libtifast.so\u003dMethodEntry,MethodExit\u0027\nTest: adb shell am start-activity -S --attach-agent /data/local/tmp/libtifast.so\u003dMethodEntry,MethodExit \u003csome app\u003e\n\nChange-Id: I37c2ece14b1b12a79390da7d668ebbefa2966f87\n"
    },
    {
      "commit": "3e36a9c24f591097b4403fe77b1d426c03aeb56a",
      "tree": "64f9c8896038ada2f7a17bd7cc62c488027dd548",
      "parents": [
        "25bf44622d6359c1d49c2a8a8b45938ff099f811"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 19 09:45:05 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 08:44:52 2018 -0700"
      },
      "message": "Move back to jit code on trace removal\n\nThis changes the lock hierarchy so the lock checker is able to\ncorrectly determine that we will not deadlock. This lets us replace\nthe jit code in the method when tracing is removed.\n\nTest: ./test.py --host\n\nChange-Id: I14dd4eb9814c73fa3639239bb56d91c8303cec60\n"
    },
    {
      "commit": "2d441b1253cca39bf3078422e8f0b2f4ec1bb408",
      "tree": "3db740023b1322749856f943c4b25b8158da8a44",
      "parents": [
        "e824cfdcfd41d400237a806ff93caca7f2e51878"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 08 15:33:21 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 08:44:17 2018 -0700"
      },
      "message": "Make instrumentation trampoline able to jump to jit code\n\nIn order to get the benefit of the instrumentation trampoline it must\nbe able to jump to jit code. This patch adds support for doing that\nand adds code to ensure that we will not be jumping back and forth\nbetween the trampoline and the interpreter all the time if the jit has\nnot yet compiled the current method.\n\nNote we also disable the jit-gc when turning on these trampolines\nsince otherwise we could end up either sending instrumentation events\nmultiple times or running uninitialized memory.\n\nBug: 110263880\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xplugin:libtracefast-trampolined.so\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xplugin:libtracefast-trampolined.so --runtime-option\u003d-Xjitthreshhold:0\nTest: ./test.py --host\n\nChange-Id: Ie6e92ec6367452fe4fde24d520d808b7af91d1b5\n"
    },
    {
      "commit": "f0f3c594404aeb3d758e31ba748be400dc5b78a9",
      "tree": "e5c247c1aedfbf4de832d2fc3ccf415aca8366c6",
      "parents": [
        "a98d9e76ed2486db9a7490a6e421a509ab2f6e2d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 26 13:28:00 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 27 08:37:43 2018 -0700"
      },
      "message": "ART: Clean up jit_code_cache.h\n\nRefactor to reduce transitive includes.\n\nTest: mmma art\nChange-Id: I32caf422dc9a59b8e3d495b88b182f072ef4de84\n"
    },
    {
      "commit": "607624f043af1de59f0069cfe6a68a00f950510e",
      "tree": "8cd8d113838b4a6d14db992db11ca62c156137da",
      "parents": [
        "bae5e4e8e1cc93edd938ee0ee2303b7f5ad6b4dc"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 11 10:10:46 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 11 10:18:17 2018 +0100"
      },
      "message": "ART: Rename JitCodeCache::FreeCode(const void*)\n\nRename FreeCode(const void*) to FreeCodeAndData(const void*). Leaves\nremaining FreeCode(uint8_t*) as responsible for freeing code.\n\nBug: b/66095511\nTest: art/test.py --host --64 --jit -r\nChange-Id: I87eb21a2f0c82c92f5bac3add8f9fc25c294dfc5\n"
    },
    {
      "commit": "016fcbe2d24a99b688ae2b5c03ce13d270a97886",
      "tree": "96ec3e56325a6ea7618613ef96b04022612f7907",
      "parents": [
        "d10995609f9fd8b85db1a5143b124195805ca5bb"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 03 19:47:35 2018 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 09 22:11:54 2018 +0000"
      },
      "message": "Support system server ART-profiling\n\nWe don\u0027t have to map the code cache as executable if we only want to save\nprofiles. This enables system server profiling without disabling SElinux\nto bypass the jit code cache exec-mapping.\n\nTest: m test-art-host\n      boot a device with system server profiling enabled.\nBug: 73313191\n\nChange-Id: I7f25a905e0b23456183e39e58ad8f4b829ddf0c5\n"
    },
    {
      "commit": "0117908dab58511fd64da161369f538fc587a51b",
      "tree": "395dc2d9fd5f66d030e24e2253ff0c7262a0b7c3",
      "parents": [
        "7075583146f52a754c6d7c91757a6333bf1b95da"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 26 13:53:21 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 26 13:53:21 2018 +0100"
      },
      "message": "ART: Remove unused atomic field from JitCodeCache\n\nBug: 31023171\nTest: art/test.py --host -j32\nChange-Id: If72ecbe4ddeaa6b404226579c92cac1e24dbdd98\n"
    },
    {
      "commit": "312f3b2fd0094c028a7d243b116947a35a745806",
      "tree": "3d7ec049ded98c489098c87250c75e3f711f8290",
      "parents": [
        "0a3d5eb2ff9e70fa5785638da938439835d0337e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 19 08:39:26 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 19 11:02:48 2018 -0700"
      },
      "message": "Move some remaining dex utilities\n\nThere were several utilities related to building/walking/testing dex\nfiles that were not in libdexfile.  This change consolidates these.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Id76e9179d03b8ec7d67f7e0f267121f54f0ec2e0\n"
    },
    {
      "commit": "c431b9dc4b23cc950eb313695258df5d89f53b22",
      "tree": "422273559c3ae52caff0c6b1cf1a62a8312f0e26",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 02 12:01:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 05 13:58:20 2018 -0800"
      },
      "message": "Move most of runtime/base to libartbase/base\n\nEnforce the layering that code in runtime/base should not depend on\nruntime by separating it into libartbase.  Some of the code in\nruntime/base depends on the Runtime class, so it cannot be moved yet.\nAlso, some of the tests depend on CommonRuntimeTest, which itself needs\nto be factored (in a subsequent CL).\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host\n\nChange-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2\n"
    },
    {
      "commit": "67bf42e89592c3a1c648f927f2ce3ccb189a1161",
      "tree": "054d5b7adf7cc62d4d2a2118a70c0fbdd1751610",
      "parents": [
        "d961043ff1dd6fddb68aa90c1f939cfafec24219"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Feb 26 16:43:04 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 28 15:08:21 2018 -0800"
      },
      "message": "Header library to remove dependence on runtime/\n\nAdd a new header library to remove libdexfile and others\u0027 dependence on\nruntime (typically runtime/base) includes in libdexfile.  Also a small step\nto tease dexlayout and profman away from relying on these as well.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n\nChange-Id: I38e2fe399a75f4bc6318c77a71954c00ea73ec2b\n"
    },
    {
      "commit": "2196c651ecc77e49992c6c329dfce45f78ff46cb",
      "tree": "4eb151632fc7b851101b4264286ce5e900fa06b5",
      "parents": [
        "dc93cac66f1db225474cec5bf0350fd7a148085e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 30 16:16:07 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 30 16:20:39 2017 +0000"
      },
      "message": "Revert^4 \"JIT JNI stubs.\"\n\nThe original CL,\n    https://android-review.googlesource.com/513417 ,\nhas a bug fixed in the Revert^2,\n    https://android-review.googlesource.com/550579 ,\nand this Revert^4 adds two more fixes:\n    - fix obsolete native method getting interpreter\n      entrypoint in 980-redefine-object,\n    - fix random JIT GC flakiness in 667-jit-jni-stub.\n\nTest: testrunner.py --host --prebuild --no-relocate \\\n      --no-image --jit -t 980-redefine-object\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 056d7756152bb3ced81dd57781be5028428ce2bd.\n\nChange-Id: Ic778686168b90e29816fd526e23141dcbe5ea880\n"
    },
    {
      "commit": "056d7756152bb3ced81dd57781be5028428ce2bd",
      "tree": "154ae8968a450a2e02d88207fa09e380fd380553",
      "parents": [
        "e7441631a11e2e07ce863255a59ee4de29c6a56f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 30 09:12:13 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 30 09:12:13 2017 +0000"
      },
      "message": "Revert \"Revert \"Revert \"JIT JNI stubs.\"\"\"\n\nStill seeing occasional failures on 667-jit-jni-stub\n\nBug: 65574695\nBug: 69843562\n\nThis reverts commit e7441631a11e2e07ce863255a59ee4de29c6a56f.\n\nChange-Id: I3db751679ef7bdf31c933208aaffe4fac749a14b\n"
    },
    {
      "commit": "e7441631a11e2e07ce863255a59ee4de29c6a56f",
      "tree": "a0488fac018ea391d01b751b7254719937bdee8f",
      "parents": [
        "aa25db7d2a6f7f507c27ce49c99a33daf3059f8f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 29 13:00:56 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 29 14:04:26 2017 +0000"
      },
      "message": "Revert \"Revert \"JIT JNI stubs.\"\"\n\nThe original CL,\n    https://android-review.googlesource.com/513417 ,\nhad a bug for class unloading where a read barrier was\nexecuted at the wrong time from\n    ConcurrentCopying::MarkingPhase() -\u003e\n    ClassLinker::CleanupClassLoaders() -\u003e\n    ClassLinker::DeleteClassLoader() -\u003e\n    JitCodeCache::RemoveMethodsIn() -\u003e\n    JitCodeCache::JniStubKey::UpdateShorty() -\u003e\n    ArtMethod::GetShorty().\nThis has been fixed by removing sources of the read barrier\nfrom ArtMethod::GetShorty().\n\nTest: testrunner.py --host --prebuild --jit --no-relocate \\\n      --no-image -t 998-redefine-use-after-free\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 47d31853e16a95393d760e6be2ffeeb0193f94a1.\n\nChange-Id: I06e7a15b09d9ff11cde15a7d1529644bfeca15e0\n"
    },
    {
      "commit": "47d31853e16a95393d760e6be2ffeeb0193f94a1",
      "tree": "344b0fddbbcc9a64bed2ba20dbe73fb227c2bdf4",
      "parents": [
        "3417eaefe4e714c489a6fb0cb89b4810d81bdf4d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 28 18:36:12 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 28 18:36:12 2017 +0000"
      },
      "message": "Revert \"JIT JNI stubs.\"\n\nSeems to break 998-redefine-use-after-free in\nsome --no-image configuration.\n\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 3417eaefe4e714c489a6fb0cb89b4810d81bdf4d.\n\nChange-Id: I2dd157b931c17c791522ea2544c1982ed3519b86\n"
    },
    {
      "commit": "3417eaefe4e714c489a6fb0cb89b4810d81bdf4d",
      "tree": "fe97f5191d25d26ef4250280f4c599b3a50f2059",
      "parents": [
        "7bdc6e73fd97eb75f30b77f183e4fe6c2c599a09"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 21 18:14:28 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 28 13:00:09 2017 +0000"
      },
      "message": "JIT JNI stubs.\n\nAllow the JIT compiler to compile JNI stubs and make sure\nthey can be collected once they are not in use anymore.\n\nTest: 667-jit-jni-stub\nTest: Pixel 2 XL boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --jit\nTest: testrunner.py --target --jit\nBug: 65574695\nChange-Id: Idf81f50bcfa68c0c403ad2b49058be62b21b7b1f\n"
    },
    {
      "commit": "b0b68cfc0d2444e2333adcc5a6bc6f670b89fe83",
      "tree": "2cd71b6d221470f3c26fd089e68c6349009bdd80",
      "parents": [
        "f4580f43bcb74061ba8b7847ec65f2fe160f1751"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 14 18:11:50 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 14 18:29:20 2017 +0000"
      },
      "message": "ART: Clean up #includes in jit_code_cache.h .\n\nAnd fix code that relied on those indirect #includes.\n\nAlso remove forward declaration of art::LinkerPatch because\nwe actually use art::linker::LinkerPatch.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 65574695\nChange-Id: I102affed9a3eacbd21b79c370fbc72b5fc762c96\n"
    },
    {
      "commit": "d1ee20fed62cd8db8fd496c4e5760dc554136020",
      "tree": "3252b0983fc23118846b68e0fc9b65b86af030eb",
      "parents": [
        "2ade881db8642f10007c1c46b5e7f073d463c2d3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 17 09:21:16 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 17 10:38:57 2017 +0100"
      },
      "message": "Revert^4 \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\n\nFix a DCHECK() failure while visiting references for non-CC\nmoving GC by avoiding the DCHECK(); reference equality may\ngive false negatives at that stage as we may compare the new\nreference against an old one for the same object.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --jit\nTest: testrunner.py --host --gcstress\nTest: ART_DEFAULT_GC_TYPE\u003dSS ART_USE_READ_BARRIER\u003dfalse \\\n      testrunner.py --host --gcstress -t 048-reflect-v8\n\nThis reverts commit 76ccd09c3d98317dfbd179c6f5c231dcfc5d6996.\n\nChange-Id: I13cc339d5b31fceedf39ea9a77f27369ba72279f\n"
    },
    {
      "commit": "76ccd09c3d98317dfbd179c6f5c231dcfc5d6996",
      "tree": "07f1546ce7a090af8c88110598920769bfb5e669",
      "parents": [
        "c42fab35f18539957debb8703195eeb76c9718f7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 15 19:11:54 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 15 19:11:54 2017 +0000"
      },
      "message": "Revert^3 \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\"\n\nStill failling:\n\n+dalvikvm64 F 08-15 18:54:16 218912 218912 art_method-inl.h:395] Check failed: !GetDeclaringClass()-\u003eIsResolved() || interface_method-\u003eGetDeclaringClass()-\u003eIsAssignableFrom(GetDeclaringClass()) \n\n\nThis reverts commit c42fab35f18539957debb8703195eeb76c9718f7.\n\nChange-Id: I91b51f8c1e7f6e0ae876b751d8e9cd3b8acb62f6\n"
    },
    {
      "commit": "c42fab35f18539957debb8703195eeb76c9718f7",
      "tree": "65bcf5256213282a315a34621b3fbc73786c1585",
      "parents": [
        "f0c66eb04db3c9fc513f50dfaad1385cf703820e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 15 14:11:49 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 15 15:18:07 2017 +0100"
      },
      "message": "Revert^2 \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\n\nFix a DCHECK() to ignore unresolved proxy classes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --jit\nTest: testrunner.py --host --gcstress\n\nThis reverts commit 7ef52f75dd6e981e1e8c7567f593c197e8a94dcc.\n\nChange-Id: Idccdb04958a8bdb1c58b529dfb92885993ac62ea\n"
    },
    {
      "commit": "7ef52f75dd6e981e1e8c7567f593c197e8a94dcc",
      "tree": "9685b783f628e290c6307d6ead024aac749a11ab",
      "parents": [
        "0888cf1821d6622fd623db31000be19b9365f81c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 14 18:52:32 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 14 18:52:32 2017 +0000"
      },
      "message": "Revert \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\n\nBroke a few tests with:\n+dalvikvm64 F 08-14 18:36:32 136697 136697 art_method-inl.h:392] Check failed: interface_method-\u003eGetDeclaringClass()-\u003eIsAssignableFrom(GetDeclaringClass()) \n\n\nThis reverts commit 0888cf1821d6622fd623db31000be19b9365f81c.\n\nChange-Id: Idc93b6686392f9dfeca3bc11bd22104948fd9fd3\n"
    },
    {
      "commit": "0888cf1821d6622fd623db31000be19b9365f81c",
      "tree": "fc1e251066fa30ffd475b8a51c15f17bc976b13f",
      "parents": [
        "f9fd236b047a4851f24a3829acfd7e3340676305"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 28 12:55:17 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 14 14:06:49 2017 +0100"
      },
      "message": "ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\n\nThis immensely simplifies the interface method retrieval\nand removes one dependency on dex_cache_resolved_methods_.\nWe may later consider removing that member if we deem the\nmemory savings worth the performance impact.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --jit\nChange-Id: Id76349c69e4c4dea4e3b297bd504db8f98f1b7cc\n"
    },
    {
      "commit": "dbd05fe1a6ed2c3e23c9f6b372dd439ad59e777b",
      "tree": "81968f4f0a16cb37b57933be5cea6542795488a1",
      "parents": [
        "1d2d8b1b6b359f5f476ef78662baa4b8782be530"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Aug 10 11:41:35 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Aug 10 11:57:53 2017 +0100"
      },
      "message": "Revert recent JIT code cache changes\n\nFlakiness observed on the bots.\n\nRevert \"Jit Code Cache instruction pipeline flushing\"\nThis reverts commit 56fe32eecd4f25237e66811fd766355a07908d22.\n\nRevert \"ARM64: More JIT Code Cache maintenace\"\nThis reverts commit 17272ab679c9b5f5dac8754ac070b78b15271c27.\n\nRevert \"ARM64: JIT Code Cache maintenance\"\nThis reverts commit 3ecac070ad55d433bbcbe11e21f4b44ab178effe.\n\nRevert \"Change flush order in JIT code cache\"\nThis reverts commit 43ce5f82dae4dc5eebcf40e54b81ccd96eb5fba3.\n\nRevert \"Separate rw from rx views of jit code cache\"\nThis reverts commit d1dbb74e5946fe6c6098a541012932e1e9dd3115.\n\nTest: art/test.py --target --64\nBug: 64527643\nBug: 62356545\nChange-Id: Ifa10ac77a60ee96e8cb68881bade4d6b4f828714\n"
    },
    {
      "commit": "56fe32eecd4f25237e66811fd766355a07908d22",
      "tree": "7c2c75d54edf0865598c106cb013f8c3794bd767",
      "parents": [
        "84b65e977302e1cf16d188636c22c164c7793554"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 21 11:42:10 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jul 24 17:29:40 2017 +0100"
      },
      "message": "Jit Code Cache instruction pipeline flushing\n\nRestores instruction pipeline flushing on all cores following crashes\non ARMv7 with dual JIT code page mappings. We were inadvertantly\ntoggling permission on a non-executable page rather than executable.\n\nRemoves the data cache flush for roots data and replaces it with a\nsequentially consistent barrier.\n\nFix MemMap::RemapAtEnd() when all pages are given out. To meet\ninvariants checked in the destructor, the base pointer needs to be\nassigned as nullptr when this happens.\n\nBug: 63833411\nBug: 62332932\nTest: art/test.py --target\nChange-Id: I705cf5a3c80e78c4e912ea3d2c3c4aa89dee26bb\n"
    },
    {
      "commit": "d1dbb74e5946fe6c6098a541012932e1e9dd3115",
      "tree": "7c3ad5ffd888ea97ee24e255bccb7c1a7acf4466",
      "parents": [
        "2f0ac4fb4486e7d9e5c1545d45a2b9b818a80dc3"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Jul 17 11:20:38 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jul 18 11:38:13 2017 -0700"
      },
      "message": "Separate rw from rx views of jit code cache\n\nCreate two separate mappings of the ashmem region used for the JIT code\ncache.  These two mappings have unrelated addresses.\n\nBug: 62356545\nTest: make -j test-art-target\nChange-Id: If176552e6d72ef71e17c96994901f3f3baac44f6\n"
    },
    {
      "commit": "d38b67c9892b603f57a6b51a1b9d7f4e610158aa",
      "tree": "4bb95ce9f7733f8b9e54b6e80eaeb3751b4e78a8",
      "parents": [
        "af14a86fb40f83b3d76185dd8bd09c1e7c409d2f",
        "eced692a34d2cf63d584c703704592984cc50394"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 14 05:50:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 14 05:50:42 2017 +0000"
      },
      "message": "Merge \"ART: Add JIT cache race test\""
    },
    {
      "commit": "eced692a34d2cf63d584c703704592984cc50394",
      "tree": "97240d0eae41b0b3596d92c17419f2dc3ae7b674",
      "parents": [
        "cff1b21b3e19c5d3a2d726fdb60dacd7de2a6f0d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 01 10:54:28 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 08 13:08:34 2017 +0100"
      },
      "message": "ART: Add JIT cache race test\n\nAdds a test for the JIT code cache that attempts to trap races between\nthreads generating code and executing it.\n\nBug: 38417984\nTest: run-test --jit 707\nChange-Id: I408b2680b1d266ebe624d6e39113f0261d538e8a\n"
    },
    {
      "commit": "5d08fcc21a14190c4dba3028a3e35d281afdd016",
      "tree": "c42de65ced190778342d9b022e400f4a7f9d346b",
      "parents": [
        "57cf00bde719ddc84a6015b107b90a20169e3099"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 17:56:46 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 20:28:16 2017 -0700"
      },
      "message": "ART: More header cleanups\n\nPull out more dependencies through forward declarations.\n\nTest: m test-art-host\nChange-Id: I7d86726928937f788b956ec9eac91532d66d57ae\n"
    },
    {
      "commit": "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": "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": "cbcedbf9382bc773713cd3552ed96f417bf1daeb",
      "tree": "58eed766a69ddddbc41d21624244e14547fa1dff",
      "parents": [
        "ef62210a1466c133056c4bfdae9f8f5417065eff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 12 22:24:50 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 16 10:20:34 2017 -0700"
      },
      "message": "Add method info to oat files\n\nThe method info data is stored separately from the code info to\nreduce oat size by improving deduplication of stack maps.\n\nTo reduce code size, this moves the invoke info and inline info\nmethod indices to this table.\n\nOat size for a large app (arm64): 77746816 -\u003e 74023552 (-4.8%)\nAverage oat size reduction for golem (arm64): 2%\n\nRepurposed unused SrcMapElem deduping to be for MethodInfo.\nTODO: Delete SrcMapElem in a follow up CL.\n\nBug: 36124906\n\nTest: clean-oat-host \u0026\u0026 test-art-host-run-test\n\nChange-Id: I2241362e728389030b959f42161ce817cf6e2009\n"
    },
    {
      "commit": "169722b0d6c680db33a6a2d602735a09db83e71d",
      "tree": "a616720d9e00f7e078d0689b616b29b39ac751a9",
      "parents": [
        "43e07b6b16d3a84014bb4747211635b9ef3d1801"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 27 14:01:59 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 27 22:03:36 2017 +0000"
      },
      "message": "Add hooks to avoid collecting code for run-tests.\n\nensureJitCompiled ensures a method gets compiled, but does\nnot prevent it from being GC\u0027ed. Add a hammer hook to avoid\ndoing any JIT code cache GC.\n\ntest: test-art-host with gcstress and jit.\nChange-Id: I3881f10f454ded9c7a3b385d326c2e08932d39bf\n"
    },
    {
      "commit": "940eb0c00ef531dd9a0a68dbd61e377832e81eb4",
      "tree": "c65e43a702bb781b7a2f4ebedfb6b3d131fd8312",
      "parents": [
        "9fb10fb39bcb3d9a4dc7e16f8c1d38dcc112639c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jan 30 19:30:44 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 16 13:52:56 2017 -0800"
      },
      "message": "Add inline caches to offline profiles\n\nAdd support for inline caches in profiles:\n- extract inline caches from the jit cache when the profile saver\nqueries the hot methods\n- bump profile version to support the new data\n- add new tests\n- inline caches are only supported for same-apk calls (including\nmultidex)\n\nTest: m art-test-host-gtest-profile_compilation_info_test\nBug: 32434870\nChange-Id: I38b4ca0a54568d2224765ff76023baef1b8fd1a2\n"
    },
    {
      "commit": "dba61481035b7944173181ec9ee02aea41dd0e29",
      "tree": "8629775e657cc8968e2f8fa2af6256c7a58c7dd4",
      "parents": [
        "cb2ce333ee2d1053919fe0acc390369bea3ad77e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 21 08:20:29 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 21 11:43:14 2016 -0800"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Basic obsolete methods support\"\"\"\"\n\nA GetDeclaringClass()-\u003eGetDexCache() got inserted during the\nmerge/review process meaning that we would try to access incorrect\ndex-cache in obsolete methods in some situations.\n\nAlso when using tracing we would loop forever (or at least until an\nOOM error) in test 916 due to tracing forcing InterpretOnly mode\nmeaning methods would never be jitted.\n\nBug: 32369913\nBug: 33630159\n\nTest: ART_TEST_TRACE\u003dtrue \\\n      ART_TEST_JIT\u003dtrue   \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\n\nThis reverts commit f6abcda293b115a9d7d8a26376ea2dcf2d1dc510.\n\nChange-Id: I0773bfcba52e3cd51a83be815c6a50c189558f48\n"
    },
    {
      "commit": "f6abcda293b115a9d7d8a26376ea2dcf2d1dc510",
      "tree": "a30ce596848d14c95a73449dbf2bfccf26a510b9",
      "parents": [
        "ce77fc0e7f60a15354bb20c356537cbf8b53b722"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 09:26:18 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 09:26:18 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Basic obsolete methods support\"\"\"\n\nFails in tracing mode\n\nBug: 32369913\nBug: 33630159\n\nThis reverts commit ce77fc0e7f60a15354bb20c356537cbf8b53b722.\n\nChange-Id: I1bdcf6ad467f2e31f9c5d0c3c987b90a4f5efc69\n"
    },
    {
      "commit": "ce77fc0e7f60a15354bb20c356537cbf8b53b722",
      "tree": "b4301967c423ab190a4274409d99a3d6e23f0e8a",
      "parents": [
        "d54f43ca39dfa92f08c2d760123f185f0f65fb86"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 01:05:52 2016 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 19 14:26:18 2016 -0800"
      },
      "message": "Revert \"Revert \"Basic obsolete methods support\"\"\n\nThis reverts commit b81a9840b44480bfeacd74b8d9f51e06f295411d.\n\nThere were 2 issues with the original CL\u0027s test 916-obsolete-jit that\ncaused it to sporadically fail.\n\nFirst, when checking if we had jitted the function under test in\n916-obsolete-jit we failed to check to see if the function \u0027doCall\u0027,\nwhich is used to work-around bugs in our deoptimization \u0026 compilation\nsystems, had also been jitted.\n\nIn the case where the \u0027sayHi\u0027 function had been jitted but the\n\u0027doCall\u0027 function had not we would (correctly) fail to redefine the\n\u0027Transform\u0027 class since we would not be able to deoptimize the \u0027sayHi\u0027\nfunction since it is under a quick_to_interpreter_bridge (runtime)\nframe.\n\nSecondly, the function Main.isInterpretedFunction was incorrect and\nwould always return false, regardless of the actual state of the\nfunction. This would cause the test to fail as the\nquick_to_interpreter_bridge frame prevented deoptimization of the\nobsoleted function. Usually the warm-up period was enough to make sure\nthe methods were jitted anyway but this was not guaranteed.\n\nBoth of these problems become more likely to occur on systems with\nmore cpu contention such as the buildbots.\n\nTest: stress --cpu 60 \u0026; while ./test/run-test --host --jit 916; do ; done\n\nReason for revert: Fixed bug in test that was causing failures.\n\nOriginal Tests:\n\nTest: ./test/run-test --host 914\nTest: ./test/run-test --host 915\nTest: ./test/run-test --host 916\nTest: mma -j40 test-art-host\nTest: ART_TEST_JIT\u003dtrue \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --no-jit\n\nBug: 32369913\nBug: 33630159\n\nChange-Id: If1a92e47b90965a7dc21c5826185debe62bd1554\n"
    },
    {
      "commit": "ed015acdd0fbb1b837b3f74e8c5f624956189691",
      "tree": "b8ec86c504bf665cd59074fae49136dfe7c6c9f5",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 15 17:58:48 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 15 18:01:52 2016 +0000"
      },
      "message": "Flush JIT data cache when committing code.\n\nOtherwise, executing compiled code may see old data from\nthe data cache.\n\nTest: ART_TEST_JIT\u003dtrue test-art-target on arm/arm64\nTest: run-libcore-tests.sh (especially jsr166) on arm/arm64\nChange-Id: Id037c68897aa0e9ccacd4c5121f3743fb722c6f3\n"
    },
    {
      "commit": "b81a9840b44480bfeacd74b8d9f51e06f295411d",
      "tree": "d79a3567b272b6eb4fb94d66a537cf92bef455db",
      "parents": [
        "d8936da27b792d1ca02e59c92456a1a53c7b9905"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 00:59:05 2016 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 00:59:05 2016 +0000"
      },
      "message": "Revert \"Basic obsolete methods support\"\n\nThis reverts commit d8936da27b792d1ca02e59c92456a1a53c7b9905.\n\nReason for revert: Some sort of race in JIT\n\nChange-Id: Ibb4e520bb0721d6d7aa2c841a52eb5baff07740e\n"
    },
    {
      "commit": "d8936da27b792d1ca02e59c92456a1a53c7b9905",
      "tree": "6a593dd426e7f4a15c651dd3b872f22fb64f09ce",
      "parents": [
        "7c73bf3518eea7544406eadfed6946411c54a267"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 28 16:24:32 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 14 13:01:27 2016 -0800"
      },
      "message": "Basic obsolete methods support\n\nAdd support for executing obsolete methods following redefinitions.\nThis support includes methods that have been jitted. This does not add\nany additional validity checks to our redefinition functions.\n\nNote using work-arounds to ensure 916 works pending some fixes to the\ncompiler, deoptimizer, or both.\n\nTest: ./test/run-test --host 914\nTest: ./test/run-test --host 915\nTest: ./test/run-test --host 916\nTest: mma -j40 test-art-host\nTest: ART_TEST_JIT\u003dtrue \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --no-jit\n\nBug: 32369913\nBug: 33630159\n\nChange-Id: I78ef95f484146f1fb93c37fc50f56575bdab2432\n"
    },
    {
      "commit": "063fc772b5b8aed7d769cd7cccb6ddc7619326ee",
      "tree": "bc165781989087a998721991504e589a7d5b0926",
      "parents": [
        "48d08a4233ee4450b0d5073d41445f9dd1f17191"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Aug 02 11:02:54 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Dec 01 11:15:47 2016 -0800"
      },
      "message": "Class Hierarchy Analysis (CHA)\n\nThe class linker now tracks whether a method has a single implementation\nand if so, the JIT compiler will try to devirtualize a virtual call for\nthe method into a direct call. If the single-implementation assumption\nis violated due to additional class linking, compiled code that makes the\nassumption is invalidated. Deoptimization is triggered for compiled code\nlive on stack. Instead of patching return pc\u0027s on stack, a CHA guard is\nadded which checks a hidden should_deoptimize flag for deoptimization.\nThis approach limits the number of deoptimization points.\n\nThis CL does not devirtualize abstract/interface method invocation.\n\nSlides on CHA:\nhttps://docs.google.com/a/google.com/presentation/d/1Ax6cabP1vM44aLOaJU3B26n5fTE9w5YU-1CRevIDsBc/edit?usp\u003dsharing\n\nChange-Id: I18bf716a601b6413b46312e925a6ad9e4008efa4\nTest: ART_TEST_JIT\u003dtrue m test-art-host/target-run-test test-art-host-gtest\n"
    },
    {
      "commit": "c9e2fc27c57d4c007d26081a8e60b244ecba8665",
      "tree": "cd59bdb099bf2342f4400c37cfbf6ea827a56632",
      "parents": [
        "9ebca690fdfb36fe1a689fd32c3d05d999497768",
        "e51ca8bfa8a193b64901ad214842f213adca92eb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 30 13:57:30 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 13:57:30 2016 +0000"
      },
      "message": "Merge \"Move inline caches GC handling in JitCodeCache.\""
    },
    {
      "commit": "e51ca8bfa8a193b64901ad214842f213adca92eb",
      "tree": "b07b2534edc592d68b5461a3bdb8a31241892d54",
      "parents": [
        "eb9c58e88f8e0f4a0a413efce04b49b183ad23e3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 14:49:31 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 29 21:05:51 2016 +0000"
      },
      "message": "Move inline caches GC handling in JitCodeCache.\n\nMake the classes they hold weak references and visit\nthem during SweepJitRoots.\n\nThis fixes the newly introduced deadlock:\n\nThread1:\n1) Lock JitCodeCache lock to create Profiling info for\n  ArtMethod m.\n2) m is a copied method, we need to track the actual holder,\n   needing to decode a weak reference.\n3) Weak references are not accessible due to GC.\n\nGC Thread:\n- Disallow weak reference access.\n- Wait for checkpoint.\n\nThread2:\n- Try to lock JitCodeCache lock\n- Deadlock, as Thread1 owns the JitCodeCache lock.\n\nTest: test-art-host\nbug: 31289185\nbug: 33198826\n\nChange-Id: I7ee17631015450ace8d2a0264415a81c5a902bb8\n"
    },
    {
      "commit": "f46501c6ad11025843682267c10f221323a206b1",
      "tree": "a5b77de81f5ab31e66082b02b225e7fe56877f98",
      "parents": [
        "71d15102b52af67e8fe1193192aa2b4cd1956ae0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 13:45:36 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 14:21:31 2016 +0000"
      },
      "message": "Clear the right data pointer.\n\nInternally, stack_map_data is an offset of the roots_data allocation.\nPass both to the ClearData method, which will use the right pointer\nto deallocate.\n\nTest: test-art-host in debug mode\nChange-Id: Ibfe38e7f1853870076048427f2efe7121c11c136\n"
    },
    {
      "commit": "132d8363bf8cb043d910836672192ec8c36649b6",
      "tree": "42ee8b08f0323e9762675333b50a4c218ecdefc7",
      "parents": [
        "e89667815b9d0a1eacb91678fed2a7518bb07cc2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 16 09:19:42 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 18 14:31:30 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"JIT root tables.\"\"\"\"\n\nTest: 626-set-resolved-string, test-art-host, test-art-target\nTest: run-libcore-tests.sh\nTest: phone boots and runs\n\nThis reverts commit 3395fbc20bcd20948bec8958db91b304c17cacd8.\n\nChange-Id: I104b73d093e3eb6a271d564cfdb9ab09c1c8cf24\n"
    },
    {
      "commit": "3395fbc20bcd20948bec8958db91b304c17cacd8",
      "tree": "e0d00b412961e2aaa0dff91317a9f4168189e5fb",
      "parents": [
        "75afcdd3503a8a8518e5b23d21b6e73306ce39ce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 14 12:40:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 14 12:40:52 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"JIT root tables.\"\"\"\n\nlibcore failures:\ndalvikvm32 F 11-14 03:04:06 14870 14870 jit_code_cache.cc:310] Check failed: new_string !\u003d nullptr\n\nThis reverts commit 75afcdd3503a8a8518e5b23d21b6e73306ce39ce.\n\nChange-Id: I5a6b6b48aa79a763d1ff1ba4d85d63811254787d\n"
    },
    {
      "commit": "75afcdd3503a8a8518e5b23d21b6e73306ce39ce",
      "tree": "b49afc4772fa72319475f96ed66d744bb03e803c",
      "parents": [
        "ee48b0f11df812d98de5c989e1f6d95a21515564"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 10 10:38:11 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 11 13:18:24 2016 +0000"
      },
      "message": "Revert \"Revert \"JIT root tables.\"\"\n\nAlso  contains Revert \"Support kJitTableAddress in x86/arm/arm64.\"\n\nThis reverts commit 4acd03638fcdb4e5d1666f8eec7eb3bf6d6be035.\nThis reverts commit 997d1217830c0a18b70faeabd53c04700a87d7d9.\n\nTest: ART_USE_READ_BARRIER\u003dtrue/false test-art-host test-art-target\n\nChange-Id: I77cb1e9bf8f1b4c58b72d3cf5ca31ced2aaa1ea3\n"
    },
    {
      "commit": "4acd03638fcdb4e5d1666f8eec7eb3bf6d6be035",
      "tree": "1220262d0ed22d91777c68a8a568348cddf820cb",
      "parents": [
        "ac3ebc3150760425ed00abd56da48f9a6e0666bc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 17:30:31 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 17:30:31 2016 +0000"
      },
      "message": "Revert \"JIT root tables.\"\n\nMay be the offender for jit-gcstress failure of 902.\n\nThis reverts commit ac3ebc3150760425ed00abd56da48f9a6e0666bc.\n\nChange-Id: I9ea6c9236fd1729fed7d1868dd8a111172932308\n"
    },
    {
      "commit": "ac3ebc3150760425ed00abd56da48f9a6e0666bc",
      "tree": "3c5c923bb00a898e035c0e7c4b8a6a684a578419",
      "parents": [
        "76ad2405b40547e0ab4fc401fb8303189ff783eb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 05 13:13:50 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 08 17:21:30 2016 +0000"
      },
      "message": "JIT root tables.\n\nImplement root tables for the JIT. Each JIT compiled method\ngets a table allocated before the stack maps.\n\nThe table gets visited through Runtime::SweepSystemWeaks.\n\nImplement String roots for x86_64 as an example.\n\nTest: test-art-host test-art-target\n\nChange-Id: Id3d5bc67479e08b52dd4b253e970201203a0f0d2\n"
    },
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "65975776f807d55c83af6cca1e447f8daa794413",
      "tree": "3b30b9a6ba00e72df89f59387c383ef747772025",
      "parents": [
        "3f3201a89ec19257b3bc93c25b20abdcfe61f3e4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 05 10:46:36 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 09 10:45:18 2016 -0700"
      },
      "message": "Card mark holding class instead of declaring class\n\nFor profiling info, we need to mark the card of the holding class\ninstead of declaring class. This is required for GC correctness since\nthe GC relies on the card table to track cross space references.\n\nTest: test-art-host ART_TEST_JIT\u003dtrue\n\nBug: 30655270\n\nChange-Id: Ia4690219ded0df38032b644440273e06bc303956\n"
    },
    {
      "commit": "cf48fa030780c3185f225d558b704c396f7713cc",
      "tree": "5905f8636ede57661450c057d56bb912bb1a532c",
      "parents": [
        "3d733104c99ce02f5fd042d69c1cecf295208872"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jul 30 22:49:11 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jul 30 22:49:11 2016 +0100"
      },
      "message": "Put the deletion of profiling info under a GC critical section.\n\nOtherwise the GC could see dangling pointers.\n\nbug:30033802\nChange-Id: I839c4f6e537aba98769e99e4d75ff869c9ff13eb\n"
    },
    {
      "commit": "9962962eb26f906e8f92cde1d6854dadbbc5e8ad",
      "tree": "1cf89988fdb5b572b798310ea00b137bc7e6fb1e",
      "parents": [
        "6543933527f4d2b3f6bb65532c8af166547f9bac"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 19 16:33:46 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 22 16:16:19 2016 +0100"
      },
      "message": "ProfileSaver: query profiling_infos instead of the code_map\n\nThis is the first step in being able to record profiles without jit\nbeing active.\n\nBug: 27916886\n\n(cherry picked from commit e2d066d0337b7c81d47e4806e6025b70d83fcd56)\n\nChange-Id: Ie36c4b4a11d3b6e5de959121a1acea22a9e25121\n"
    },
    {
      "commit": "71cd50fb67fa48667b0ab59aa436a582c04ba43d",
      "tree": "9f99f187060b0ef3a118120db367555d8f757f0c",
      "parents": [
        "9b863613454ee139370d24e65adb41fabe75d482"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 14 15:00:33 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 15 15:42:31 2016 +0100"
      },
      "message": "Add weight to compiled/interpreter transitions.\n\nAlso:\n- Cleanup logging.\n- Check ArtMethod status before adding compilation requests.\n- Don\u0027t request osr compilation if we know AddSamples does not come\n  from a back edge.\n\nBug: 27865109\n\nChange-Id: I84512f7d957b61ce2458360ed430adb151830278\n"
    },
    {
      "commit": "454b3b6774fe07765273b917ccc97da2eba776ac",
      "tree": "3fbfefeb7901e22181011ba311de1b9cec1e367d",
      "parents": [
        "2c6760a0eb1e05d3a89a6cca9d2746da3d547e9e"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Apr 07 14:42:47 2016 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Apr 08 09:09:07 2016 -0700"
      },
      "message": "ART: Fix race in on-stack replacement\n\nThe expected sequence of events for on-stack replacement is:\n\n   1. Method goes warm, triggering enhanced profiling\n   2. Method goes hot, triggering method compilation\n   3. Method goes really hot, triggering an osr method compilation.\n   4. Interpreter polls for the existence of an osr entry point,\n      and transitons to compiled code if found.\n\nWe have a race problem if #2 and #3 happen closely together, and\nthe osr method compilation begins before the regular method\ncompilation.  In that case, the jit sees that the method is\nalready being compiled (the osr method - but it does not\ndistinguish the two), and discards the normal compilation request.\nSo, the osr version is compiled and the normal version is discarded.\nIn #4, the MaybeDoOnStackReplacement() check assumes that a normal\nversion of the compiled method must exist before doing an on-stack\nreplacement, so it keeps returning false.\n\nThis is why we were seeing sporadic timeout failures of\n570-checker-osr when the mterp fast branch profiling was\nintroduced.  The branch profiling performance enhancements\ngreatly reduced the time between #2 and #3, increasing the liklihood\nof losing the race.  Further, the new code clamped hotness to avoid\nwrap-around.  The race existed (and likely occurred) in the previous\nversion, but because hotness counters were allowed to overflow and\nwrap around you\u0027d eventually hit the threshold a second time and\ntry again - masking the problem.\n\nTip \u0027o the hat to Serguei Katkov for identifying the problem.\n\nA possible solution (taken in this CL) is to differentiate osr\ncompilations from normal method compilations.\n\nBug: 27939339\nChange-Id: I71044516b35dc69de9fc2d2a445e33809ac650ed\n"
    },
    {
      "commit": "9d07e3d128ccfa0ef7670feadd424a825e447d1d",
      "tree": "dfb677fd75f0f297fef9bc49311cf1d22c770f56",
      "parents": [
        "eb98c0ded592cfca8187c744393c82efd1020b2a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 31 12:02:28 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 04 17:50:20 2016 +0100"
      },
      "message": "Clean up OatQuickMethodHeader after Quick removal.\n\nThis reduces the size of the pre-header by 8 bytes, reducing\noat file size and mmapped .text section size. The memory\nneeded to store a CompiledMethod by dex2oat is also reduced,\nfor 32-bit dex2oat by 8B and for 64-bit dex2oat by 16B. The\naosp_flounder-userdebug 32-bit and 64-bit boot.oat are each\nabout 1.1MiB smaller.\n\nDisable the broken StubTest.IMT, b/27991555 .\n\nChange-Id: I05fe45c28c8ffb7a0fa8b1117b969786748b1039\n"
    },
    {
      "commit": "933330a192d43d7c7304120999907857a89c2f96",
      "tree": "a413b4df2a4b9fdb804983204168ee23cd9c9eb7",
      "parents": [
        "f808e8a0cc218c2b98023ef0e91f3c5b74ad2962"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 14:20:06 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 14:20:26 2016 +0000"
      },
      "message": "Add more statistics for memory use of the JIT.\n\nCollect data for stack maps, profiling info, and compiled code.\n\nbug:27520994\n\nChange-Id: Ic87361230c96ce0090027a37d750e948d806c597\n"
    },
    {
      "commit": "07e3ca9a46801990d662c48d0fddedc63c4c053c",
      "tree": "94fedc96b28c6a46d2b83c80b2cfefd4c2898f4a",
      "parents": [
        "b7f257f353b1eb2db2732939a0404c118316891d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 11 09:57:57 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 11 09:57:57 2016 +0000"
      },
      "message": "Fix thread race when fetching the ProfilingInfo object.\n\nProblem is:\n1) Compiler fetches the ProfilingInfo of A, it\u0027s null.\n2) Mutator creates the ProfilingInfo.\n3) Compiler notifies it\u0027s not using A anymore, calls\n   ProfilingInfo::DecrementInlineUse -\u003e Crash as we expected\n   ProfilingInfo::IncrementUse to be called before.\n\nAlso update some namings to better reflect what is going on.\n\nChange-Id: I55ea4c5d81988131467095e18a0d13a8be9d0ef7\n"
    },
    {
      "commit": "b6e20ae17d0881a66c22532e4152ce6779454a92",
      "tree": "35d7fbfb812aef11ea51010794dce26eb91c1ae4",
      "parents": [
        "8a8c84114b16b8971bc2d3c5c7e0e31470d1a68b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 07 14:29:04 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 09 17:25:19 2016 +0000"
      },
      "message": "Clear inline caches at each full GC.\n\nThis fixes occasional failures of 141-class-unload.\n\nAlso fix a bug where clearing inline caches also cleared the dex\npc associated with it.\n\nbug:26846185\nbug:23128949\nChange-Id: I77bf1dee229d7764c3cc21440829c7fba7b37001\n"
    },
    {
      "commit": "9abb2978f09643227664ab70c0677744b8f6e946",
      "tree": "69b4bb602fa5c58d6d0eabdf5f79aee2f6a60c52",
      "parents": [
        "a3ed89f687dbaa9b5321b2d38d41b487a4208b80"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 04 14:32:59 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 04 15:15:28 2016 +0000"
      },
      "message": "Fix very rare bug around JIT code cache collection.\n\nThe bug is the following:\n1) JIT thread: We start a code cache collection.\n2) JIT thread: We mark all code that is in the call stack of all\n   threads.\n3) Mutator thread: after marking its stack, resumes and does call\n   that pushes JIT compiled code to the call stack.\n4) Mutator thread: deoptimizes compiled code of ArtMethod Foo,\n   and therefore updates the entry point of Foo through\n   JitCodeCache::InvalidateCompiledCodeFor.\n   (Note that updating the entrypoint could also be done through\n   instrumentation).\n5) JIT thread: Call JitCodeCache::RemoveUnusedAndUnmarkedCode.\n   The method used to remove entries that were not entrypoints.\n   It sees the compiled code for Foo but that is not an entrypoint\n   anymore, so deletes it.\n6) Mutator thread problem: it now has compiled code in its call\n   stack that is deleted.\n\nIf it\u0027s only one mutator thread, we only hit a DCHECK when walking\nthe stack, as we are now seeing an invalid pc. The deoptimization\nwill longjmp to the caller of that invalid entry anyway.\n\nHowever, if multiple mutator threads are involved, one thread\nmight invalidate the compiled code while the other is still\nrunning it. And we end up deleting code that is in the call\nstack of a thread, and we will crash.\n\nThe fix is to mark entrypoints before marking call stacks,\nso that anything a thread might jump to is marked and kept.\n\nbug:27424509\nbug:23128949\nbug:26846185\n\nChange-Id: I07cd08cedd96b9900629f7535e95404f622104ea\n"
    },
    {
      "commit": "bcd94c8ea9bde4e075c25fbdfb3a2ef6858eed7b",
      "tree": "2719f29261e1fced1c94ef309e12230ef103a79e",
      "parents": [
        "e283588e56df7eebabd795b98264003105b20ece"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 03 13:23:33 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 03 14:02:16 2016 +0000"
      },
      "message": "Refine statistics around the JIT.\n\n- Better namings.\n- Now also time the code cache collection time.\n- Random cleanups.\n\nbug:23128949\nbug:27445008\nbug:27442890\n\nChange-Id: I1dd52544bea678af868e7c47907f7a0fc9a146c3\n"
    },
    {
      "commit": "e283588e56df7eebabd795b98264003105b20ece",
      "tree": "56572fedc4552ec3ddbca891c2e3923f3a5befc6",
      "parents": [
        "e4cec517faf1c74d6895e0e5b512a6e2f83a0e06",
        "1e7da9bd04bdd2664a4196f1d7e285c010f8881f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 03 09:26:46 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 03 09:26:46 2016 +0000"
      },
      "message": "Merge \"Do a TryLock when allocating a ProfilingInfo from the interpreter.\""
    },
    {
      "commit": "35122443e5f8606cc5a660ac32745a06aefb341b",
      "tree": "be44db33797ae729342c671fb95b7746e363e799",
      "parents": [
        "f9f3c5b0ebacbfed59af9c5c81fe9752e6b1258c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 02 12:05:30 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 02 16:35:18 2016 +0000"
      },
      "message": "Revert \"Revert \"Use the interpreter as a heartbeat for the JIT.\"\"\n\nBug: 27398183\nBug: 23128949\nBug: 26846185\n\nThis reverts commit a96917a6983a5abbe973255a3846fda549fb1657.\n\nChange-Id: I5c4f0d87d3293a6a7ab56a33396670704b66a347\n"
    },
    {
      "commit": "a96917a6983a5abbe973255a3846fda549fb1657",
      "tree": "aa03a2a6d0f70faa20f3579458abde24f71abb04",
      "parents": [
        "7273a5d045d3ceb3ff011ad65765356b69b155e8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 22:18:02 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 22:18:02 2016 +0000"
      },
      "message": "Revert \"Use the interpreter as a heartbeat for the JIT.\"\n\nHits a DCHECK testing libcore.\n    art F 11973 12675 art/runtime/jit/jit_code_cache.cc:644] Check failed: it.second-\u003eGetProfilingInfo(sizeof(void*)) !\u003d nullptr \n\n\nBug: 27398183\nBug: 23128949\nBug: 26846185\n\nThis reverts commit 7273a5d045d3ceb3ff011ad65765356b69b155e8.\n\nChange-Id: I6614a82e775ea71aa16f041313f67546db41eac8\n"
    },
    {
      "commit": "1e7da9bd04bdd2664a4196f1d7e285c010f8881f",
      "tree": "4d028a231ecbc684eebe1b4a5a3022ff46801769",
      "parents": [
        "09294dc760d77d64ea4168c1fd6d96fbfbe38018"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 14:11:40 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 14:13:17 2016 +0000"
      },
      "message": "Do a TryLock when allocating a ProfilingInfo from the interpreter.\n\nThis removes some thread contentions just for allocating ProfilingInfo.\n\nbug:23128949\n\nChange-Id: I9ff7d44c4b0ee272425cf4c6248d3065f67958f3\n"
    },
    {
      "commit": "7273a5d045d3ceb3ff011ad65765356b69b155e8",
      "tree": "addf5dcdc82e54605cfb9a622d284bf06b849327",
      "parents": [
        "c3bcf40e905c53ec857ec40a9ae45f4c86738929"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 29 15:35:39 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 14:03:32 2016 +0000"
      },
      "message": "Use the interpreter as a heartbeat for the JIT.\n\nWhen doing a partial code cache collection, update all entrypoints to\ninterpreter, so that the next full collection will remove code\nthat wasn\u0027t executed during that window.\n\nbug:27398183\nbug:23128949\nbug:26846185\n\nChange-Id: I4423f5c4810dac183dc8973078bf218818745e80\n"
    },
    {
      "commit": "fcdd72941810f03460a8efca0c6255439be80c35",
      "tree": "ce279d446fd5fa4e9dd1e42b53444e991b90ae2f",
      "parents": [
        "1470073c3a9ce17a0f7d3167345746d0b8d2202b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 25 13:27:47 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 25 13:27:47 2016 +0000"
      },
      "message": "Dump the number of OSR compiled code.\n\nChange-Id: I20efc80e8556da8220dab92c3a7947f883d48cf8\n"
    },
    {
      "commit": "8d37250f7b9a7839b11488f45a1842b025026f94",
      "tree": "d0394ebde45888dabd811852468afcf4b71c7bf1",
      "parents": [
        "a016ba5614054e27eada7f4815df7d4bac7ba8d8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 23 13:56:43 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 23 14:33:16 2016 +0000"
      },
      "message": "Introduce partial code cache collection.\n\nIt will collect code that is known unused (because it deoptimized),\nand osr code.\n\nbug:26846185\n\nChange-Id: Ic27dfeb944efb2ca464039007ba365c1e0d4a040\n"
    },
    {
      "commit": "7ca4b77c98ffdf7a4db26fd9f84b2cfcc274c4aa",
      "tree": "f2485aa03a48980e1856cf65b76048ae4d589478",
      "parents": [
        "e4c77b4d37024c1ed74e72494e69605942fead61"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 23 13:52:01 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 23 13:52:01 2016 +0000"
      },
      "message": "Don\u0027t allocate mspaces of less than a page.\n\nFixes jit tests in debug mode.\n\nChange-Id: I34565e03683cee063e26975a461d8e75ad4a205f\n"
    },
    {
      "commit": "08e992e41e5e234ecc6b38a4ab53d4876fd077b6",
      "tree": "beb81c51031934f8b228f934de23d7666e56d11f",
      "parents": [
        "4764d4e253aaea1595bbe1f5aaa8677ea9319b79",
        "65b83d875e4f9c021bc8380024455c9f1e658b14"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 23 10:52:11 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 23 10:52:11 2016 +0000"
      },
      "message": "Merge \"Add a new kReservedCapacity to decide when to start GC code.\""
    },
    {
      "commit": "65b83d875e4f9c021bc8380024455c9f1e658b14",
      "tree": "28b8665ca9d0a2fcb3d6210412e58f5cb42af0b4",
      "parents": [
        "d9c05309e8fab26a6087abd5773859f112cdefe9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 13:14:04 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 13:14:04 2016 +0000"
      },
      "message": "Add a new kReservedCapacity to decide when to start GC code.\n\nChange-Id: Ib9d0ad9bc86c66ac29975f7f907f79f842342500\n"
    },
    {
      "commit": "38ea9bd50debc63ceb77ec1e65036d8e2070ec7d",
      "tree": "5c4755e1d3bffbd1cb6ebf514710dc52c7363c0a",
      "parents": [
        "05d77c2673082b371129f8d854439688533cfff2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 19 16:25:57 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 19 16:25:57 2016 +0000"
      },
      "message": "Track memory usage of code cache.\n\nNeeded once we start having a strategy based on how full the code\ncache is.\n\nChange-Id: I181ad05e1c216afabf106f91ac54bbf144d7406a\n"
    }
  ],
  "next": "b88d59ef4fe611fe47e50a6a19785e03bbd5f93b"
}
