)]}'
{
  "log": [
    {
      "commit": "ce75049c31e7064b00104ca7f65fe12faeabc391",
      "tree": "6f7bb5977a99db0d89c74238576956f0aa1d4dad",
      "parents": [
        "0495fb053094181de232e3fa390806a9110ba208"
      ],
      "author": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Thu May 31 23:42:20 2018 +0300"
      },
      "committer": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Fri Jul 13 17:07:25 2018 +0300"
      },
      "message": "Revert \"Revert \"Handle a special case of lock aliasing during lock verification\"\"\n\nThis reverts commit 753a055b5398fcf00d2633565452679c8fb93e9d.\n\nReason for revert: Fixed failing tests\n\nTest: m test-art-host\n\nChange-Id: I4a8be656288199108c05c9d302393e1efa41a7a4\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": "97c465ca6ee4c76766f8abaa3a98ee0329019c5c",
      "tree": "ea4236d021cfa3df45e27efe1556732a06c6737b",
      "parents": [
        "91b6befbb0a323ccbdce5f0631e260346e04f045",
        "753a055b5398fcf00d2633565452679c8fb93e9d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 05 20:05:48 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 05 20:05:48 2018 +0000"
      },
      "message": "Merge \"Revert \"Handle a special case of lock aliasing during lock verification\"\""
    },
    {
      "commit": "753a055b5398fcf00d2633565452679c8fb93e9d",
      "tree": "e334f68df51c6078fd51f293a38146c6fcb6c106",
      "parents": [
        "82898ed01eedfb82a5b4adfe1327b827210af3ca"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 05 20:05:20 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 05 20:05:20 2018 +0000"
      },
      "message": "Revert \"Handle a special case of lock aliasing during lock verification\"\n\nFails run-test with --tracing or --debuggable.\n\nThis reverts commit 82898ed01eedfb82a5b4adfe1327b827210af3ca.\n\nChange-Id: I8005a1fbe63c6508d9abd5bea77679201c71ab46\n"
    },
    {
      "commit": "91b6befbb0a323ccbdce5f0631e260346e04f045",
      "tree": "ceb3c5608472a396f4f090c315c5cf16386fabd1",
      "parents": [
        "4a72f8b1baec1fb93105e381edb1bad60e372540",
        "82898ed01eedfb82a5b4adfe1327b827210af3ca"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 05 16:32:16 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 05 16:32:16 2018 +0000"
      },
      "message": "Merge \"Handle a special case of lock aliasing during lock verification\""
    },
    {
      "commit": "82898ed01eedfb82a5b4adfe1327b827210af3ca",
      "tree": "c801d41b2491271324a06343efc8618d5ea063a2",
      "parents": [
        "dc53f1616d656a757fb26039f387b7ee44ff2f1d"
      ],
      "author": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Thu May 31 23:42:20 2018 +0300"
      },
      "committer": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Thu Jul 05 12:41:54 2018 +0300"
      },
      "message": "Handle a special case of lock aliasing during lock verification\n\nCheck whether the two instructions immediately before a monitor-enter\nare const-class, establishing previously untracked lock aliasing\nin a low-overhead manner.\n\nTest: m test-art-host\nChange-Id: I94c187cbc422f8f0c13b688b09a5d9579a735b56\n"
    },
    {
      "commit": "b40d361019897e8b8484b772ccc0be433abafb5f",
      "tree": "cfb4498ee5757be7cec06f8e4a866e7faabfadba",
      "parents": [
        "a98d9e76ed2486db9a7490a6e421a509ab2f6e2d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 26 15:49:42 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 26 15:49:42 2018 -0700"
      },
      "message": "ART: Finish old move of OatDexFile\n\nThe class has been made standalone so it can be forward-declared,\nbut not all nested references had been updated.\n\nTest: mmma art\nChange-Id: Idc5f0af24af17dcae286dee290f729ba61693a11\n"
    },
    {
      "commit": "a3ad0cdd711857f04f477e2cdc5b56a2c74a3018",
      "tree": "7e0e4c7888c2497d86ce96c9574d7c9886721ccf",
      "parents": [
        "abd9e1515bc6be88372c61071971c5432a51553d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 04 10:06:38 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 11:11:09 2018 +0100"
      },
      "message": "ART: Move JNI files to runtime/jni/ .\n\nTest: Rely on TreeHugger.\nChange-Id: I9cae11191ef1567ae9453be498882a7767285140\n"
    },
    {
      "commit": "52f5a1fb829bd238fdd3c12da66b2b5de92c6ad1",
      "tree": "6c47075ff29f2d23829a5dae92fe9711be27653e",
      "parents": [
        "3d995b55a9c0a3ba204869e2093c1433fd2d42d9"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed May 02 11:05:44 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 03 11:50:11 2018 +0100"
      },
      "message": "ART: No JIT for native MethodHandle/VarHandle methods\n\nMethodHandle invocations can record JIT samples. This can lead to\ntransitioning the JNI stubs for MH.invoke and MH.invokeExact from\nAOT compiled to JIT compiled and then to generic when there is a JIT\ncode cache collection. The transitions and differences in stack frame\nrepresentations can cause a crash during stack walking.\n\nThis only affects native invocations of handles which we do to raise\nUnsuppportedOperationExceptions when invoked reflectively. Not\nperformance critical and not likely to be exercised in real code, but\nleads to flakes in gcstress testing of 956-methodhandles.\n\nBug: 78151261\nTest: art/test/run-test --host --64 --compact-dex-level fast --jit --no-relocate --pic-test 956\nTest: art/test.py --host -r -t 716\nChange-Id: Ie3fdbcfc4decb12814290bcce8d25c5e2fde87f1\n"
    },
    {
      "commit": "82d046e7c9daad9b706cbec7df7025c5a4ef9163",
      "tree": "92b7deea052015dd64bea6fc72d76c67f69e0e5d",
      "parents": [
        "5a87e19e4bf1b6719c2aad3effde1b38d2c3085c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Apr 23 08:14:19 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 12:37:04 2018 -0700"
      },
      "message": "Add a profiling library\n\nMove profile_compilation_info to a separate library.  Another step\ntowards building many of our tools without libart[d].\n\nBug: 78459333\nTest: make -j 50 checkbuild\nChange-Id: Ib281d3d1fde6d06ebb429c5d39d62a7038af0f44\n"
    },
    {
      "commit": "035a29692a293f13729d9d853c2a51b59f2728fc",
      "tree": "7630a7ac4cb023684b604e6ed8a86192cb6fb069",
      "parents": [
        "e65948f7c78919083224c1cd2ca47e827ced6d3e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 02 13:23:57 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 02 13:23:57 2018 -0800"
      },
      "message": "ART: Fix Main.isAotCompiled\n\nDetect when the runtime has compiled code, but will run interpreted.\n\nTest: m test-art-host\nChange-Id: I01e6b482967b19f04f76a011c60be0e38c733da7\n"
    },
    {
      "commit": "0e9d0908a9462f8cc8881ae9a54e4fa131f3c3ea",
      "tree": "b46d45d62cc38ac045b410f5258d7c8aff9810a2",
      "parents": [
        "212e375f3f1b69bba5a96f1a6a44e4d28e546f4c",
        "8d728324571b720a952b297787eed70c7a1d1acb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 01 11:54:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 01 11:54:30 2018 +0000"
      },
      "message": "Merge \"Add compiler option for counting hotness in compiled code.\""
    },
    {
      "commit": "45caa1d80a16e51a2a84db751eff4908a62ae864",
      "tree": "315c135acc0fd16563c6041954cea7ede6f21d90",
      "parents": [
        "f346af51a5d44ee0a3cd26e7e0e1b28ec1c5579f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 31 07:45:20 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 31 07:55:22 2018 -0800"
      },
      "message": "Make test 044-proxy less flaky\n\nStop the JIT before filling up the heap.\n\nBug: 69836158\nTest: test-art-host\n\nChange-Id: Idb488b645cbab1eb3b2eb64f316b79b1bf4e61af\n"
    },
    {
      "commit": "8d728324571b720a952b297787eed70c7a1d1acb",
      "tree": "f24a774aa56c236f2f756b1b439e4c61830bec56",
      "parents": [
        "0530796b73d0a33a5df27e3a7765c0835994769a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 18 22:44:32 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 29 09:34:05 2018 +0000"
      },
      "message": "Add compiler option for counting hotness in compiled code.\n\nFor eventually easier profiling of boot classpath and\nsystem server.\n\nbug: 30934496\nTest: 674-hotness-compiled\n\nChange-Id: I0f63c644527b74f6ef2649f481c2a1c731bb9f21\n"
    },
    {
      "commit": "3913e488afb884ccee76d620d4357b6308e55010",
      "tree": "7b20f16dc542a082983d9ba390a1a9ee8948e8b3",
      "parents": [
        "b6d077aceb38922891a6b9e79714bad3072f9c15"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 22 18:58:01 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 22 18:58:01 2018 -0800"
      },
      "message": "ART: Refactor profile_compilation_info.h includes\n\nUse forward declarations.\n\nTest: m\nChange-Id: Ife25be9e2eb5ba9224f082aaa935f821a3597963\n"
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "57943810cfc789da890d73621741729da5feaaf8",
      "tree": "367677a982a45af98ffe3e79543615875e8550b4",
      "parents": [
        "d5153627778e71ef68b510ce03c77467fa4d85bd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 21:39:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Replace base/logging with android-base/logging\n\nReplace wherever possible. ART\u0027s base/logging is now mainly VLOG\nand initialization code that is unnecessary to pull in and makes\nchanges to verbose logging more painful than they have to be.\n\nTest: m test-art-host\nChange-Id: I3e3a4672ba5b621e57590a526c7d1c8b749e4f6e\n"
    },
    {
      "commit": "2196c651ecc77e49992c6c329dfce45f78ff46cb",
      "tree": "4eb151632fc7b851101b4264286ce5e900fa06b5",
      "parents": [
        "dc93cac66f1db225474cec5bf0350fd7a148085e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 30 16:16:07 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 30 16:20:39 2017 +0000"
      },
      "message": "Revert^4 \"JIT JNI stubs.\"\n\nThe original CL,\n    https://android-review.googlesource.com/513417 ,\nhas a bug fixed in the Revert^2,\n    https://android-review.googlesource.com/550579 ,\nand this Revert^4 adds two more fixes:\n    - fix obsolete native method getting interpreter\n      entrypoint in 980-redefine-object,\n    - fix random JIT GC flakiness in 667-jit-jni-stub.\n\nTest: testrunner.py --host --prebuild --no-relocate \\\n      --no-image --jit -t 980-redefine-object\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 056d7756152bb3ced81dd57781be5028428ce2bd.\n\nChange-Id: Ic778686168b90e29816fd526e23141dcbe5ea880\n"
    },
    {
      "commit": "056d7756152bb3ced81dd57781be5028428ce2bd",
      "tree": "154ae8968a450a2e02d88207fa09e380fd380553",
      "parents": [
        "e7441631a11e2e07ce863255a59ee4de29c6a56f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 30 09:12:13 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 30 09:12:13 2017 +0000"
      },
      "message": "Revert \"Revert \"Revert \"JIT JNI stubs.\"\"\"\n\nStill seeing occasional failures on 667-jit-jni-stub\n\nBug: 65574695\nBug: 69843562\n\nThis reverts commit e7441631a11e2e07ce863255a59ee4de29c6a56f.\n\nChange-Id: I3db751679ef7bdf31c933208aaffe4fac749a14b\n"
    },
    {
      "commit": "e7441631a11e2e07ce863255a59ee4de29c6a56f",
      "tree": "a0488fac018ea391d01b751b7254719937bdee8f",
      "parents": [
        "aa25db7d2a6f7f507c27ce49c99a33daf3059f8f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 29 13:00:56 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 29 14:04:26 2017 +0000"
      },
      "message": "Revert \"Revert \"JIT JNI stubs.\"\"\n\nThe original CL,\n    https://android-review.googlesource.com/513417 ,\nhad a bug for class unloading where a read barrier was\nexecuted at the wrong time from\n    ConcurrentCopying::MarkingPhase() -\u003e\n    ClassLinker::CleanupClassLoaders() -\u003e\n    ClassLinker::DeleteClassLoader() -\u003e\n    JitCodeCache::RemoveMethodsIn() -\u003e\n    JitCodeCache::JniStubKey::UpdateShorty() -\u003e\n    ArtMethod::GetShorty().\nThis has been fixed by removing sources of the read barrier\nfrom ArtMethod::GetShorty().\n\nTest: testrunner.py --host --prebuild --jit --no-relocate \\\n      --no-image -t 998-redefine-use-after-free\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 47d31853e16a95393d760e6be2ffeeb0193f94a1.\n\nChange-Id: I06e7a15b09d9ff11cde15a7d1529644bfeca15e0\n"
    },
    {
      "commit": "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": "da283050a1a3ddbb7cefae3f36e8c8c1a6acedb7",
      "tree": "b839d69d0bf8d55d89a95b80621fd3f630536531",
      "parents": [
        "72627a5f675b1c664beb2ad33d60a1c8dca80826"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 07 21:17:24 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 08 13:23:03 2017 +0000"
      },
      "message": "Fix String.equals() for moveable String.class.\n\nIf the String.class is moveable (i.e. running without boot\nimage), the instanceof check emitted by the JIT in the\nString.equals() intrinsic would require read barriers.\nAs we do not really care about the performance of running\nwithout the boot image, disable the intrinsic in this case.\n\nTest: 669-moveable-string-class-equals (--jit)\nBug: 68181300\nChange-Id: I39c9f9935e0482b3b30f1ae5cd23515cbda0603b\n"
    },
    {
      "commit": "1949baf64471241cb9bd59ca2b61be24b4320528",
      "tree": "cdfb4fcf6b9ad60d441a4def9b505d355ffbacce",
      "parents": [
        "c2176669b4c8ee7622609d07ccca0524e6628471"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 17 12:14:53 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 17 12:14:53 2017 +0000"
      },
      "message": "Revert \"Force OSR compilation on all compilations.\"\n\nChange was temporary.\n\nThis reverts commit c2176669b4c8ee7622609d07ccca0524e6628471.\n\nChange-Id: Iaa039c166827da983f757acc168e0c0f49daec4e\n"
    },
    {
      "commit": "c2176669b4c8ee7622609d07ccca0524e6628471",
      "tree": "1bcc30e005054118c5d37b2cb792b39038afa34b",
      "parents": [
        "b73cc5dece8bf95935e03ff86b9a314872886299"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 12 11:11:01 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 17 10:00:35 2017 +0000"
      },
      "message": "Force OSR compilation on all compilations.\n\nTemporary change to trigger tests. Will revert once enough\nbuilds have been triggered.\n\nAlso disable checker tests and $noinline$ checks.\n\nbug: b/66752868\nTest: test.py\nChange-Id: Idee456fea4c9e43dfc52e766bbd98408e0bbd4e8\n"
    },
    {
      "commit": "48b40cc97377fe67657b9936ad19395c4218b489",
      "tree": "6998d031e17120b8165e1f9202f433bcdda8dca1",
      "parents": [
        "c7c25d5b4cf243cbbf06f2e4302a0faa5eccb42a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 07 16:52:40 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 07 18:01:57 2017 +0100"
      },
      "message": "Use the right class loader allocator in ReallocMethods.\n\nOtherwise we would leak memory.\n\nAlso complies with the JitCodeCache assumption that ArtMethods\nare allocated with the classloader that loaded the class where\nthose ArtMethods hang.\n\nbug: 64241268\nTest: 661-classloader-allocator\nChange-Id: I9e4ddbf8f40547084a1a4983459db48f68743cc7\n"
    },
    {
      "commit": "e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7",
      "tree": "b8733533e2478069aabbdc3a34d0f40aff33e1b1",
      "parents": [
        "b98d384eb424ad7e1dc9816392ded33dce0e0372"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 16:53:49 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 18:25:55 2017 -0700"
      },
      "message": "art: use proper nativehelper headers\n\nlibnativeheader exports headers under nativeheader. These were\navailable before incorrectly as global headers in order to give\naccess to jni.h.\n\nTest: modules using art find headers\nBug: 63762847\nChange-Id: I5c820d677e94e07b2859e78610bc997fe51b41dc\n"
    },
    {
      "commit": "23ddfe86788fe1c95b8be6c76f3a127f8f51dd9f",
      "tree": "e1070a3eeb7ba8f489339415324f98417b7eb94c",
      "parents": [
        "0a87f31513e5f9da27856af054d2241452898b22"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 07 14:09:43 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 07 14:11:57 2017 +0100"
      },
      "message": "Don\u0027t call EnsureInitialized in the JIT.\n\nCalling EnsureInitialized can block due to locking on the class\nobject, that an application can also do.\n\nJust rely that the compilation request is for a reason.\n\nThe compiler aleady knows how to compile methods of classes that\nare not initialized.\n\nbug: 62243120\nTest: test.py --jit\nChange-Id: I6cd6828b4c2179504cf5334921fcb8d46615c77b\n"
    },
    {
      "commit": "b486a98aadc95d80548953410cf23edba62259fa",
      "tree": "b113b7d50a4a015502873b7742c9ece00d293e84",
      "parents": [
        "1656ca9e6996cb555b4463e5efd4bd7e3f4fb816"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 13:45:54 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 02 08:24:02 2017 -0700"
      },
      "message": "ART: Introduce thread-current-inl.h\n\nFactor out Thread::Current() code into its own -inl file to remove\ntransitive includes.\n\nThis requires at the same time correcting mutex.h, i.e., moving\nsome functions into mutex-inl.h.\n\nTest: m test-art-host\nChange-Id: I88f888b604e0897368d9b483edce6ce4332dd9c9\n"
    },
    {
      "commit": "b9bec2e3846f3f500ca1354c849a81dfbb095b6b",
      "tree": "772383c2fc54321f7f0a698e51589465d6f0a927",
      "parents": [
        "7f31200a4afe3f01ca65e87015e292e2d84e4f20"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 24 15:59:18 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 24 15:59:18 2017 +0100"
      },
      "message": "Record types when the interpreter executes intrinsics.\n\nOtherwise, we could keep on deopting, as the JIT compiler wouldn\u0027t\nsee those types when doing inlining decisions.\n\nbug: 37655083\nTest: 652-deopt-intrinsic\nChange-Id: I33908a8e1565ac2eb9bd3ba9033916173ede4560\n"
    },
    {
      "commit": "c6ea7d00ad069a2736f603daa3d8eaa9a1f8ea11",
      "tree": "a6d3332a8592fb806841314d55b206b573d37d86",
      "parents": [
        "d68677c5fde1ace16ea58d65733776c954e7acb4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 01 16:46:28 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 08:40:33 2017 -0700"
      },
      "message": "ART: Clean up art_method.h\n\nClean up the header. Fix up other headers including the -inl file,\nin an effort to prune the include graph. Fix broken transitive\nincludes by making includes explicit. Introduce new -inl files\nfor method handles and reference visiting.\n\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_angler-userdebug \u0026\u0026 mmma art\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_mips64-userdebug \u0026\u0026 mmma art\nChange-Id: I8f60f1160c2a702fdf3598149dae38f6fa6bc851\n"
    },
    {
      "commit": "a1e036782a4154d5fa5481cc3fc17bc58a9b4520",
      "tree": "8cf6731a2f6ad57eb5eb34303319a459f97e2e81",
      "parents": [
        "7f734d414abd28b7f874a19bf776f4e9eb1a3121"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 12 15:39:54 2017 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 12 15:43:45 2017 -0700"
      },
      "message": "Fix CHA test failures under some configurations.\n\nSome checks in IsManaged() are outdated.\n\nBug: 36344221\nTest: m -j20 test-art-host-run-test\nTest: test-art-host-run-test-debug-no-dex2oat-jit-no-relocate-ntrace-cms-checkjni-picimage-npictest-ndebuggable-616-cha-abstract64\nChange-Id: Iec248cddf08b0a4ebce5f8fbca75d8d280797640\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": "4e03c5286321f5285369c9e2bd3813288f5cf2dc",
      "tree": "2a56b3d2606c081e7d27464d761b3b849a811dc2",
      "parents": [
        "49a694b84b42df28ee08f97a3660bda3a2cb264a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sat Jan 14 01:48:01 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 17 10:15:36 2017 -0800"
      },
      "message": "Revert \"Revert \"Try really hard for JIT in test 916\"\"\n\nWe were looping forever waiting for the entrypoint to be switched\ndespite the JIT being disabled by the tracing instrumentation.\n\nThis reverts commit ca4feac9484464a858990ca588398fceead55354.\n\nReason for revert: Problem with ensureJitCompiled fixed\n\nTest: ART_TEST_TRACE\u003dtrue        \\\n      ART_TEST_OPTIMIZING\u003dfalse  \\\n      ART_TEST_INTERPRETER\u003dtrue  \\\n      ART_USE_READ_BARRIER\u003dfalse \\\n      mma -j40 test-art-host-run-test-916-obsolete-jit\n\nChange-Id: I11f1e3f6cf65f90509a1ba66625a7988f3d94af6\n"
    },
    {
      "commit": "4cddd03950bb21e950afd72cad87e963bc53ea10",
      "tree": "d7dc428c8a0d451d57460ba813a1560dafe77cac",
      "parents": [
        "dd1dd32c87ee88b3810191dcaac94f094a9a856f",
        "ca4feac9484464a858990ca588398fceead55354"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sat Jan 14 01:46:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 14 01:46:29 2017 +0000"
      },
      "message": "Merge \"Revert \"Try really hard for JIT in test 916\"\""
    },
    {
      "commit": "ca4feac9484464a858990ca588398fceead55354",
      "tree": "7dca9967f22efb10ef1807e98065b87ca5ec85d0",
      "parents": [
        "a64fa43345124eb7891b9d6a6258f6ed0cbd1504"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 13 22:47:50 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 13 22:49:33 2017 +0000"
      },
      "message": "Revert \"Try really hard for JIT in test 916\"\n\nThis reverts commit a64fa43345124eb7891b9d6a6258f6ed0cbd1504.\n\nReason for revert:  makes test-art-host-run-test-debug-prebuild-interpreter-relocate-trace-cms-checkjni-picimage-npictest-ndebuggable-916-obsolete-jit fail\n\nTest: Treehugger\nChange-Id: Idce6fc9310fe85ae62dd19da1e978299951c19ee\n"
    },
    {
      "commit": "8799ea0a82bbe7d4fbd2375ae20fa8a720c887d4",
      "tree": "81a88fa015b8c31cffe3122a4cfaedc8280320f7",
      "parents": [
        "2f12c6581b334e81949016cf262f7ae1dd0737ea",
        "a64fa43345124eb7891b9d6a6258f6ed0cbd1504"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 13 19:53:13 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 13 19:53:13 2017 +0000"
      },
      "message": "Merge \"Try really hard for JIT in test 916\""
    },
    {
      "commit": "a64fa43345124eb7891b9d6a6258f6ed0cbd1504",
      "tree": "2fb76004760fe9e8894c533d154a373b9dd958db",
      "parents": [
        "20e9474df95e099f58b5310188fea3631e9f7c36"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 09 13:31:06 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 13 08:34:05 2017 -0800"
      },
      "message": "Try really hard for JIT in test 916\n\nSometimes we would fail to jit stuff due to high load. This makes us\ntry even harder to JIT so we won\u0027t fail in these scenarios.\n\nTest: mma -j40 test-art-host\nTest: stress --cpu 60 \u0026; while ./test/run-test --host 916; do ; done\n\nChange-Id: Ic944582bf021f119b8bc3f135af508ed8a8586c4\n"
    },
    {
      "commit": "7e25123127b0b02678a5101d0faa18b65895d723",
      "tree": "5df01b0d066df2ab177af77e8416c13cdc9e97d9",
      "parents": [
        "6f4b55bd48f6d1dd8e92f147b6c52e21a18c62f9",
        "d5f56272d5b87d76b5fc6fca3d5ab65ed543acb6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 13 15:10:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 13 15:10:47 2017 +0000"
      },
      "message": "Merge \"ART tests: do not retrieve OatQuickMethodHeader for bridge methods\""
    },
    {
      "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": "441a5e92ae49d4e78e26bc170732cb6e3d745b6b",
      "tree": "87881383fd09c1974b5ddcfc6be033a934b1a179",
      "parents": [
        "30bc64006c082935b10b500f60c0f7b6bac3b3e1",
        "f6abcda293b115a9d7d8a26376ea2dcf2d1dc510"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 09:26:36 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 21 09:26:36 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Basic obsolete methods support\"\"\"\""
    },
    {
      "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": "07001c8540718117b91e8137804fa94d35cbb37a",
      "tree": "43f61685710ccf7e2f0f35671f69a8c2588c476d",
      "parents": [
        "1aa03b379f35f17eec1e88edfa9b345b7a992854",
        "6cb21552c97d0b8987b5defdd7407eda9b8e60bc"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 20 17:49:02 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 20 17:49:03 2016 +0000"
      },
      "message": "Merge changes Ie74f2dbe,I092d2e95,I5a75f5c4\n\n* changes:\n  Fix 616-cha assumptions.\n  Fix JIT crash due to unverified dead code\n  Use interpret-only instead of verify-at-runtime when testing JIT\n"
    },
    {
      "commit": "857f058d4b7bd07c5c99eda416ad91516a10b4da",
      "tree": "aafff6fc7ac9578955661366e779c858945ae71c",
      "parents": [
        "0966558b075b9b454e1a7864306eb206bf0c0094"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 20 14:36:59 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 20 16:15:24 2016 +0000"
      },
      "message": "Fix JIT crash due to unverified dead code\n\nThe JIT compiler assumes that it only gets completely verified code. To\nwork around potential unverified dead code it uses kAccDontBotherCompile\nflag set during runtime verification. However, if a class is verified\nduring a prior dex2oat the flag is not persisted and JIT happily things\nthat everything is ok.\n\nThe simplest fix is to mark classes with potential unverified dex code\nas verify at runtime. We only do this for apps and assume that\neverything in the boot image is well formed.\n\nTest: m test-art-host\nBug: 31000839\nChange-Id: I092d2e9553cd1c577036d78e8563a7a39d6cb7b9\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": "ad0c8bdc2c2e4d2a469455bcde7aeb5fc7482875",
      "tree": "fe5fe711a574386472408bda17b13a2ca2668c7e",
      "parents": [
        "132eb43396bdb0b9bdacf069289f019d85d358fc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 19 19:31:26 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 19 19:31:26 2016 +0000"
      },
      "message": "Revert \"Fix JIT crash due to unverified dead code\"\n\nBroke method_verifier_test and image_test.\n\nBug: 31000839\n\nThis reverts commit 132eb43396bdb0b9bdacf069289f019d85d358fc.\n\nChange-Id: I85923e6bdb3e76f54978658aad816d4c79fc339e\n"
    },
    {
      "commit": "132eb43396bdb0b9bdacf069289f019d85d358fc",
      "tree": "097ad8979e90555fd46e49eda32fe4b0c579acfd",
      "parents": [
        "71464a10a434e5b8aac75998d08b2cdcbce57bab"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 28 20:09:56 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Dec 19 15:36:41 2016 +0000"
      },
      "message": "Fix JIT crash due to unverified dead code\n\nThe JIT compiler assumes that it only gets completely verified code. To\nwork around potential unverified dead code it uses kAccDontBotherCompile\nflag set during runtime verification. However, if a class is verified\nduring a prior dex2oat the flag is not persisted and JIT happily things\nthat everything is ok.\n\nThe simplest fix is to mark classes with potential unverified dex code\nas verify at runtime. We only do this for apps and assume that\neverything in the boot image is well formed.\n\nTest: m test-art-host-706-jit-skip-compilation\nBug: 31000839\n\nChange-Id: Ib73de1888581bb7202474cfd7aca70af4cc2cc00\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": "51c17faee9ff0b93914ae2d308cfa24f0bc71d0a",
      "tree": "84db285eec16e04dd5c14ce3138521dfcfcf1e4b",
      "parents": [
        "3d32bf0b1e9469ffcb7fd7793d56d0193e1d5d5c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 25 15:56:12 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 05 13:12:17 2016 +0000"
      },
      "message": "Create empty VerifiedMethod after vdex verification.\n\nThe compiler and quicken require the existence of a\nVerifiedMethod for compiling a method.\n\nThis fixes the regression of not doing any compilation when\npassed --input-vdex.\n\nTest: 629-vdex-speed\n\nChange-Id: Ie65578eadd09099df1c1a403d96c15e5da78a901\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": "b2aaf1d63f94852960796603d6872c11eafb789f",
      "tree": "afcaf62c62d4acf920fd9b2d6bd5b344ed1ffb0a",
      "parents": [
        "ca6a71943230cd91061cfaa2bbd8f2a776a673d9",
        "44cea196f8cc18ba5c72e29754ab11bf51437e06"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 01 09:11:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 01 09:11:22 2016 +0000"
      },
      "message": "Merge \"Address missed review comment.\""
    },
    {
      "commit": "44cea196f8cc18ba5c72e29754ab11bf51437e06",
      "tree": "92e908b405171b3c49a8434b2f636c3f2fe8f995",
      "parents": [
        "89bd8358c0a69e8cd6456d81d88ef366e261f732"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 03 20:48:13 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 28 18:55:14 2016 +0100"
      },
      "message": "Address missed review comment.\n\nBug: 30351473\ntest: m test-art-host\n\nChange-Id: I8d0d536e9280555d156280d87055631cabf5b2b7\n"
    },
    {
      "commit": "97d7e1cd7f733cb33a0e238bec6d7ed525638cd1",
      "tree": "d2f02420f82d76d10dc0d80f431c9f4aba03ac82",
      "parents": [
        "eebe142e935e9444c7c947d02246e7fbe88b2cc4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 04 14:44:28 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 05 13:21:44 2016 +0100"
      },
      "message": "Remove #include \"oat_file.h\" from class_linker.h .\n\nRefactor the OatClass and OatMethod related functions from\nClassLinker to OatFile and ArtMethod, respectively. Refactor\nthe remaining ClassLinker dependencies on OatFile to break\nthe #include dependency and reduce incremental build times.\n\nTest: m test-art-host\nChange-Id: Iebc5b9f81b48fbcf79821cc827a5d7c4a0261bf6\n"
    },
    {
      "commit": "d5f56272d5b87d76b5fc6fca3d5ab65ed543acb6",
      "tree": "9e0487c5308fa17a938cec2a6f1b864851fe1485",
      "parents": [
        "51cbe84ca33800c57fef9c96f1155f60bcc70bba"
      ],
      "author": {
        "name": "Yevgeny Rouban",
        "email": "yevgeny.y.rouban@intel.com",
        "time": "Wed Sep 28 10:38:25 2016 +0700"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 03 09:19:26 2016 +0100"
      },
      "message": "ART tests: do not retrieve OatQuickMethodHeader for bridge methods\n\nSome ART tests (e.g. 604-hot-static-interface) call\nOatQuickMethodHeader::FromEntryPoint() for a method\u0027s quick compiled\ncode entry. If the entry has not been set to a compiled code then it\ncan be set to art_quick_to_interpreter_bridge. This method does not\nhave a OatQuickMethodHeader and FromEntryPoint() must not be called.\n\nThis patch fixes ART tests to retrieve OAT header only for methods\nthat reside in the JIT code cache.\n\nChange-Id: I21105735f146e6c67c24c970a42451e3300c067c\nTest: test-art-host-run-test-debug-prebuild-jit-relocate-ntrace-cms-checkjni-picimage-npictest-ndebuggable-604-hot-static-interface32\nSigned-off-by: Yevgeny Rouban \u003cyevgeny.y.rouban@intel.com\u003e\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "3a21e386fa55a8b86dffa5250985b263fcfd2155",
      "tree": "ce6fecaae067f86e094ae7844ee5fa4ae8ee63e8",
      "parents": [
        "f94a4cf18946bda4a4f19378436d2bf131a492ca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 02 12:38:38 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 02 15:15:28 2016 +0100"
      },
      "message": "Clean up some includes.\n\nRemove some unnecessary includes from header files, replace\nothers with forward references and add includes to source\nfiles as needed. Reduce dependency on stack.h by pulling\nStackReference\u003c\u003e out to its own file.\n\nTest: m test-art-host\nChange-Id: I0fb182145e328870cbd918b0ef6ae2950223c1b2\n"
    },
    {
      "commit": "d55f4ab2e119395bbae92488707929b8075c126b",
      "tree": "4d9f823fb03f07e7172e0aae05c1820d33ef8e20",
      "parents": [
        "8055598c8dd4f3cd4d8490b5fc576161467f8bcb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 02 18:49:25 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 02 22:21:52 2016 +0100"
      },
      "message": "Scope the compilation and Create the ProfilingInfo in the loop.\n\nWe need to release the mutator lock to avoid being in a deadlock.\n\nAlso allocating the profiling just before compiling in the unlickely\nevent that it got collected after releasing the mutator lock.\n\nbug:30351473\nChange-Id: I98dba646536d857152949b92f6c69ff9a03cf783\n"
    },
    {
      "commit": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    },
    {
      "commit": "491617a612c8a1c890e72d8ba780a151ddee8e11",
      "tree": "3f10b3af3363d70173f43a4235a782e166a5afe2",
      "parents": [
        "2be946bbf995496fe56364d9b7c4957fcb6aeec5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 19 17:06:23 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 19 17:46:29 2016 +0100"
      },
      "message": "JIT: Don\u0027t update the dex cache of another class loader.\n\nThis only works for properly delegating class loaders. But Java allows\nnon-delegating ones :(\n\nbug:29964720\n\nChange-Id: I8b785e6cdfe9a2b77322521a02b8e59ec332ad83\ntest:612-jit-dex-cache\n"
    },
    {
      "commit": "f711f2cf3c28dfe865e36f17419a16f06a0ebb5a",
      "tree": "3657d68b2a2fb67f4919cb97ca279cf9310224e9",
      "parents": [
        "bbfa42aa4c4b5cbc2ed2d8bdea6ff76da615a8aa"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 23 12:29:39 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 26 13:24:54 2016 -0700"
      },
      "message": "Partial fragment deoptimization\n\nWe used to do either single frame deoptimization, or full fragment\ndeoptimization which deoptimizes all the frames in a fragment.\nThis change allows some methods to be not deoptimizeable, likely due\nto some kind of optimization. So we need another deoptimization mode\nthat unwinds partial fragment. Deoptimizations are now generalized into\neither full or partial fragment. A full fragment deoptimization will\ndeopt all frames in the fragment, and then returns from the invoke stub\nto enter interpreter. A partial fragment deoptimization will deopt a\nsingle frame, or all frames up to the method that\u0027s not deoptimizeable,\nand then jumps to the interpreter bridge.\n\nCurrently code not deoptimizeable is the code in boot image since the\ncode may not be compiled with debuggable flag.\n\nBug: 28769520\nChange-Id: I875c694791cc8ebd5121abcd92ce7b0db95aca38\n"
    },
    {
      "commit": "dcdc85bbd569f0ee66c331b4219c19304a616214",
      "tree": "b5ab789248e279318f6c1e3f6c511703d7294476",
      "parents": [
        "48944c760b196188b968b7af81439466cf987a75"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Dec 04 14:06:18 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 23 21:14:23 2015 -0800"
      },
      "message": "Dex2oat support for multiple oat file and image file outputs.\n\nMultiple changes to dex2oat and the runtime to support a --multi-image\noption. This generates a separate oat file and image file output for\neach dex file input.\n\nChange-Id: Ie1d6f0b8afa8aed5790065b8c2eb177990c60129\n"
    },
    {
      "commit": "0dfc9bc0cca3ae15dc75bbea3ca9b6d7508ce893",
      "tree": "abdc76069da7142d899eb776a0d82bdbbe316c94",
      "parents": [
        "1aba494df441c31836e5b7d4d8e408420a93cb8d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 30 17:13:59 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 05 08:57:04 2015 -0700"
      },
      "message": "ART: Add more deopt tests\n\nExtend libarttest with the ability to turn off asserts for method\nstate. Use this to put asserts into test functions, but turn them\noff if the test wouldn\u0027t react as we want, e.g., when we\u0027re in\ninterpreter mode.\n\nExtend run-test 449 by adding asserts for the method state for the\nexpected deopt cases. This tests both standard behavior, as well\nas single-frame deoptimization.\n\nBug: 21611912\nChange-Id: I27fa5e3e44d8c5eab57962d144c6aec96587bf45\n"
    },
    {
      "commit": "89df7bfc41a4de9685f84e7db07f77db3fd485fc",
      "tree": "f1a266870d0020b9b814022698569affc90e3844",
      "parents": [
        "931e26843bbb688eacfa67b40414c6b8f221a56a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 30 13:13:21 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 30 13:13:21 2015 -0700"
      },
      "message": "ART: Refactor libarttest C++ code\n\nRefactor some libarttest JNI functions into a common directory, so\nthey can be easily used by multiple tests without code duplication.\nThis is preparation for better deoptimization state testing.\n\nChange-Id: I43f7340b699b26930aabfd665c707e0485b17fc8\n"
    }
  ]
}
