)]}'
{
  "log": [
    {
      "commit": "f233136f2ca25316643b7f409df7af55a762f98a",
      "tree": "a5aee0db607b4dc4d08e695426ebb74abcaabc35",
      "parents": [
        "9999327c8fbcab1d57f609457d68085ddefb7eb7"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 11 15:14:10 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Sep 06 13:47:10 2018 +0100"
      },
      "message": "ART: Add FlushInstructionPipeline()\n\nUse membarrier(MEMBARRIER_CMD_PRIVATE_EXPEDITED), where available, to\nflush CPU instruction pipelines after JIT code cache updates. This is\nneeded on architectures where TLB updates do not require a TLB\nshootdown.\n\nBug: 65312375\nBug: 66095511\nBug: 111199492\nTest: manual (requires kernel \u003e\u003d 4.16).\nChange-Id: I96811c611133ba765a546a09432c0c951ad39e10\n"
    },
    {
      "commit": "c09cd0513b860c4301ca7bd6a9065b583d102295",
      "tree": "1c7aa4ed2b9b5b1335829461e764c94565afb71d",
      "parents": [
        "40f8a74cba008af768316f0b5bfe9502174b6d02"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 23 16:36:36 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 31 11:50:53 2018 +0100"
      },
      "message": "Reserve boot image memory in one go.\n\nLoad boot image components into the reserved memory.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nBug: 77856493\nChange-Id: I214f947979bc0bbfc6df4312527504e90b88a01d\n"
    },
    {
      "commit": "92597a8e27274abb25f1b15e0883357381f5a9a5",
      "tree": "7a21eb917c4928d1ae9f528dab62fe1b696223d1",
      "parents": [
        "fdc3d6782a4c30a54c062fad7a1eff4510304183"
      ],
      "author": {
        "name": "Joel Fernandes (Google)",
        "email": "joelaf@google.com",
        "time": "Fri Aug 17 16:19:19 2018 -0700"
      },
      "committer": {
        "name": "Joel Fernandes",
        "email": "joelaf@google.com",
        "time": "Thu Aug 30 10:45:19 2018 -0700"
      },
      "message": "Replace ashmem in ART with prctl\n\nART use ashmem just for naming anonymous regions. This is a hack.\nFurther, we are moving away from ashmem in favor of native Linux based\nshared-memory mechanims for Android. We already have a PRCTL for naming\nmaps in the Android kernels. Lets use that for Android.\n\nThis also results in removal of ashmem hacks for host-only builds.\n\nAs a side-effect, the naming of regions change from \"/dev/ashmem/\u003cname\u003e\"\nto \"[anon:\u003cname\u003e\" so we need to update debug code in frameworks. Another\nCL does that.\n\nNote: The user pointers passed to the prctl should be available during\nmaps read time, so we cannot use pointers from the stack. To solve this,\nwe maintain an std::map of unique debug strings when we name the maps.\nThis doesn\u0027t result in more memory usage than before, since ashmem is\nheavier storage-wise due to additional kernel data structure\nallocations.\n\nPerformance of \u0027dumpsys meminfo\u0027 gone up by 25% (1s to 0.75s). Slab\nmemory consumption gone down by 3-5MB on boot.\n\nTest: Boot and dumpsys meminfo before/after\nBug: 111903542\nInternal gerrit: ag/4827680\nChange-Id: Ia658fce62977f6c69dc4ce89ffdcfe2d9ae22738\nSigned-off-by: Joel Fernandes \u003cjoelaf@google.com\u003e\n"
    },
    {
      "commit": "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403",
      "tree": "0fbce767bc383358cf4cd65aafc74140e1850982",
      "parents": [
        "19379b58bd433da91230e4fe6cd96e7416d16adc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 16:58:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:06:07 2018 +0100"
      },
      "message": "Use \u0027final\u0027 and \u0027override\u0027 specifiers directly in ART.\n\nRemove all uses of macros \u0027FINAL\u0027 and \u0027OVERRIDE\u0027 and replace them with\n\u0027final\u0027 and \u0027override\u0027 specifiers. Remove all definitions of these\nmacros as well, which were located in these files:\n- libartbase/base/macros.h\n- test/913-heaps/heaps.cc\n- test/ti-agent/ti_macros.h\n\nART is now using C++14; the \u0027final\u0027 and \u0027override\u0027 specifiers have\nbeen introduced in C++11.\n\nTest: mmma art\nChange-Id: I256c7758155a71a2940ef2574925a44076feeebf\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": "b07dcdba37e9a5652b7754a6bd9c3538880d6668",
      "tree": "15524fb0505323ec78bf4d8841245da6fe61d6ee",
      "parents": [
        "6250dfa22577160b270f3f3165260739707cf7d3",
        "c945e0d410ca8d4e9ba09272e8727a3192f1e449"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 20 13:06:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 20 13:06:30 2018 +0000"
      },
      "message": "Merge changes I87f2999f,I8af0e845\n\n* changes:\n  Remove ArtMethod\u0027s declaring class state checks.\n  ObjPtr\u003c\u003e-ify ArtMethod and mirror::Method.\n"
    },
    {
      "commit": "c945e0d410ca8d4e9ba09272e8727a3192f1e449",
      "tree": "b010aeed33bb66bbaf9af355f21dfad2f9232dea",
      "parents": [
        "d93e374e273dd45f5d829399da1d4201bf46057e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 18 17:26:45 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 19 16:23:48 2018 +0100"
      },
      "message": "Remove ArtMethod\u0027s declaring class state checks.\n\nThis check was not very useful because the Class is already\nin a state to pass the check when we\u0027re constructing the\nArtMethod and it can never revert to an earlier state, so\nthe check is essentially a weak protection against GC bugs.\nBesides not being very useful, the check had the ability to\ninvalidate ObjPtr\u003c\u003e cookies (when called in non-runnable\nstate), making it difficult to fully ObjPtr\u003c\u003e-ify the code.\n\nAlso remove a lot of kReadBarrierOption template parameters\nwhich were needed specifically for this check. This removes\nunnecessary maintence burden as shown by past bugs dealing\nwith carefully adding those parameters where necessary.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 74373650\nBug: 31113334\nChange-Id: I87f2999fc4e7c27b5c2307139269b4b5f6649d16\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": "839f53a179df5225dac6964732486fc8dc5c79b0",
      "tree": "843aa29a1e7ddefbedc91026fad4e91168fab8e3",
      "parents": [
        "23b8f0d6cafc5079347f7b2ec61eecb0a9f30371"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 15:46:14 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 16:08:16 2018 -0700"
      },
      "message": "Fix typo in condition for getting the compiled code.\n\nDue to a late refactor we unintentionally flipped a condition and\nreturned early on code-collection being off instead of it being on.\n\nTest: ./test.py --host --trace --ntrace\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\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xplugin:libtracefast-trampolined.so\nChange-Id: I2f341cf748530f79a574933a3abb4f32a5019d03\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": "afc97bca07c85d4c3b46801c557edd12d681fc96",
      "tree": "fd53094370a28aa4ba4b9d419e05ff7797cf51ae",
      "parents": [
        "564fa8a1f3e3c39793c9b146ed5f21650617dc3f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 05 08:14:35 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 05 13:04:43 2018 +0100"
      },
      "message": "Revert^2 \"Add CodeInfo to JNI methods.\"\n\nIt has no stack maps. We only store the frame info there.\n\nAs a consequence of having CodeInfo, the JNI methods are\nnow classified as IsOptimized().\n\nThis does not have any real effect on .oat file size.\n\nThis reverts commit 564fa8a1f3e3c39793c9b146ed5f21650617dc3f.\n\nTest: test-art-host-gtest\nTest: test-art-target-gtest-jni_compiler_test32\nChange-Id: Ic7a1949027d89ba97cfedfc8ea453f041193b6a7\n"
    },
    {
      "commit": "564fa8a1f3e3c39793c9b146ed5f21650617dc3f",
      "tree": "b9e960a55f5643e65ecd05e258f9ac1662288bcc",
      "parents": [
        "85f3934f364e1674bfd2a6813274918576acdf60"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 05 00:01:10 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 05 00:01:10 2018 +0000"
      },
      "message": "Revert \"Add CodeInfo to JNI methods.\"\n\nThis reverts commit 85f3934f364e1674bfd2a6813274918576acdf60.\n\nReason for revert: breaks gtests on target\n\nChange-Id: I9f97fe4e7557027677824974568120f658bbd53a\n"
    },
    {
      "commit": "85f3934f364e1674bfd2a6813274918576acdf60",
      "tree": "7dde44e022bfe43439982e6d2c699f5acc73efcf",
      "parents": [
        "0162450a86c1586c8e0d28710ea0280bfa64ae32"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Jun 23 22:05:52 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 04 13:51:50 2018 +0100"
      },
      "message": "Add CodeInfo to JNI methods.\n\nIt has no stack maps. We only store the frame info there.\n\nAs a consequence of having CodeInfo, the JNI methods are\nnow classified as IsOptimized().\n\nThis does not have any real effect on .oat file size.\n\nTest: test-art-host-gtest\nChange-Id: I8d03a3af347dc7239719bb3c39ecf84c6eaece80\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": "882ed6bcccf60e55b61aa1860d9a15a7e92af959",
      "tree": "98df8864025233a5ab2de61e27789308aadd969d",
      "parents": [
        "2b40dd35c65ad644d448611750f5b577e97594a1"
      ],
      "author": {
        "name": "Steve Austin",
        "email": "steveaustin@google.com",
        "time": "Fri Jun 08 11:40:38 2018 -0700"
      },
      "committer": {
        "name": "Steve Austin",
        "email": "steveaustin@google.com",
        "time": "Thu Jun 21 16:22:12 2018 -0700"
      },
      "message": "Add low_4gb MemMap and remove ashmem support for Fuchsia\n\nTest: Tested with Fuchsia build system go/fuchsia-android\nChange-Id: I61b09614d6f4d24bf9c975baa1f34c6b5735ca3d\n"
    },
    {
      "commit": "bcf175247272d0e321c8d988c3c01c123b56e36e",
      "tree": "9f65ece5ce9474aa4fcf16fbfca6278109dc9a67",
      "parents": [
        "09c5ca40635faee00f40f6ca0581dd475efd545e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 13:14:32 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 16:31:30 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify array allocations.\n\nAnd remove some unnecessary calls to ObjPtr\u003c\u003e::Ptr().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ie313980f7f23b33b0ccea4fa8d5131d643c59080\n"
    },
    {
      "commit": "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": "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": "79e2607ab50163bfdc283f4a49decec26a216df5",
      "tree": "0cdb2c65412b64a55ddf1a486ab3d961a0301a3e",
      "parents": [
        "b4b91460b2d01d36ddcb7d55111ccd8faf390c2a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 06 17:58:50 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 13 08:29:30 2018 -0700"
      },
      "message": "Move profile dependent modules to libartbase\n\nMove mem_map and zip_archive to libartbase.  This should be the last two\nremaining modules that profile_compilation_info is dependent upon.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make and boot a device\n\nChange-Id: I136ee23e426aa8ec7441e3d3f1978f1bebf4b562\n"
    },
    {
      "commit": "27b967611b48120bf0140995ae439700fe6cc139",
      "tree": "fb6a3ce8c7bb50cfd5e265533dab3894d52f4716",
      "parents": [
        "ba6d632c0e7617a1a848551612d7cb9e60b450e6"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 13 16:06:57 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Mar 29 12:44:43 2018 +0100"
      },
      "message": "ART: Simplify quasi_atomic.h\n\nRemoves fences that duplicate std::atomic_thread_fence().\n\nBug: 71621075\nTest: art/test.py --host -j32\nTest: art/test.py --target --64 -j4\nChange-Id: I008de4d242d1a3cf4d3f50ce171abbbda647bdaa\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": "88591fe82f499de10591f5b77efac71f8954eae2",
      "tree": "bfa126ad55ee091e3b615bd3bb60d5f8cfb6e37a",
      "parents": [
        "e8a4e378c5a928d5de07bee6db99150a57dabcd8"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 06 13:35:43 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 23 15:01:15 2018 +0000"
      },
      "message": "ART: Simplify atomic.h\n\nPrefer std::atomic operations over wrappers in atomic.h. Exceptions\nare cases that relate to the Java data memory operations and CAS\noperations.\n\nBug: 71621075\nTest: art/test.py --host -j32\nTest: art/test.py --target --64 -j4\nChange-Id: I9a157e9dede852c1b2aa67d22e3e604a68a9ef1c\n"
    },
    {
      "commit": "34088e16c93f482c251e55351022762760500b63",
      "tree": "5b26a3263e8f8ddecd5004783129784359cd4858",
      "parents": [
        "04bd682576416ef7c3bfb0ab6a74ec60beac724b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 08 10:56:09 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 08 14:01:54 2018 +0000"
      },
      "message": "Don\u0027t do a read barrier in JIT GC code.\n\nThe ArtMethod the JIT GC iterates over might be in the\nprocess of being unloaded.\n\nbug: 74369794\nTest: test.py --jit\nTest: test-art-host-run-test-debug-no-prebuild-jit-no-relocate-ntrace-cms-checkjni-picimage-npictest-ndebuggable-no-jvmti-cdex-fast-674-hiddenapi64\nChange-Id: Ibf8acb0df26f90c479420ef9d0c1b1bc1fcd3b0d\n"
    },
    {
      "commit": "74ed8d3b0b22bf7c2c5dbe0842f349c528d1cece",
      "tree": "711a9c274a72fc3eaea35136acfdc2b657dfc680",
      "parents": [
        "983eb7e98d5fde69e522de16777e7575728d1488"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Mar 07 11:19:54 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Mar 07 11:28:39 2018 +0000"
      },
      "message": "ART: JitCodeCache remove only_for_tlb_shootdown\n\nScopedCodeCacheWrite should only be necessary for modifications that\naffect the instruction cache.\n\nTest: test.py --host -j32\nChange-Id: I1bc69a8ed80d1fb9bf15754da2248da1f9f4f755\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": "440a9b3b3e6aa60c14e73a97dd85c9ada0898569",
      "tree": "26dcc48d91e3eec18ab1e4dd987962a0939f6531",
      "parents": [
        "d1652d14fbf477b3091eec3764b9890f2c072055"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 15 17:47:29 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 21 12:57:12 2018 +0000"
      },
      "message": "Add timestamps to JIT/DEX native debug info.\n\nThis a forward-looking change intended to allow simpleperf to\nreliably correlate samples and native debug information.\n\nI have added the timestamps to both JIT and DEX, and refactored\nthe code in the process to avoid code duplication.\n\nTest: testrunner.py -t 137\nChange-Id: I45fa4310305aff540e036db9af15a86c5b8b7aff\n"
    },
    {
      "commit": "fb3de3d72832177e4a8d1f322ed11cbe58e45c9f",
      "tree": "de8cded0436b54b2e5b1142b07fa75f0ed9791b0",
      "parents": [
        "2827ff64c7a385cfb9d6e01e6385708461eb65fc"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jan 29 16:11:49 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 02 14:14:08 2018 +0000"
      },
      "message": "Create list of open dex files for libbacktrace.\n\nThis fixes unwinds after recent changes (oob apks; cdex data sharing).\n\nBug: 72520014\nTest: m test-art-host-gtest\nChange-Id: Ie2a02657b2afbe899acd2e61f0a57d207e688b99\n"
    },
    {
      "commit": "a6e0e7df143deb1d022feac6a987e510fb4b2213",
      "tree": "f8f113ab203ba2b0bef7b74ffe0717c994033c3a",
      "parents": [
        "8006cf1cd24d32809c937619d8d8568c8a1645ea"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 26 13:16:50 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 26 14:13:19 2018 +0000"
      },
      "message": "Special case JIT update for native methods.\n\nThe update might apply to ArtMethods that are going to be\nunloaded, so ensure we don\u0027t do read barriers there.\n\nTest: while ./art/test/run-test --host  --no-dex2oat --jit --host --no-prebuild \\\n        --compact-dex-level none --dex2oat-jobs 4 --no-relocate --runtime-option -Xcheck:jni \\\n        --build-with-javac-dx 674-hiddenapi ; do true; done\n\nChange-Id: I95ec6107c65da25f4b98f7fb77647b3ab382a93f\n"
    },
    {
      "commit": "c9e020852645b24ce9e3db7d1480aa9e72057146",
      "tree": "7dbdb71d2513d0885d9698f266f5ef728e6458fd",
      "parents": [
        "39d7589745f559b84b58d008f67c3aaf364b0370"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 24 16:44:02 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 24 16:52:06 2018 +0000"
      },
      "message": "Log JIT mini-debug-info memory usage.\n\nChange-Id: I0ffa6fb466b1635e724b0e782702303b92355408\n"
    },
    {
      "commit": "c684f337eae6bd3d77fa44cb568d2bab113e4cee",
      "tree": "21c3e40cc150da71d91aef03f33010813f3a8368",
      "parents": [
        "26037dd60df16d84fbd5c0ee3215b78aa2bcb408"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 19 17:38:06 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 19 17:42:54 2018 +0000"
      },
      "message": "Refactor jit debugger interface and its ELF creation.\n\nMake it possible to store more then one method per entry,\nand ref-count the number of live methods per entry.\n\nTest: m test-art-host-gtest\nChange-Id: I45d69185e85e47fbee88a8d1f549ede9875a3c0a\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": "170331f0e44a0e07fcfe0b5932517e0500f5cd1f",
      "tree": "4bb837aa3b6e19c898df23894beb61957885e985",
      "parents": [
        "39b378ca3b4b6dc6da1651b84ee4289cd9bff0f8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 18:41:03 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 18:41:03 2017 -0800"
      },
      "message": "ART: Remove base/logging from heap-inl.h\n\nHide the single uncommon VLOG and remove the include. Fix up\ntransitive includes.\n\nTest: m\nChange-Id: I917df597cb62c57040c1fb0e0079df4d95e5a658\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": "33bff25bcd7a02d35c54f63740eadb1a4833fc92",
      "tree": "553db4f60878acf2a0fa7036a739d406df9a29b7",
      "parents": [
        "321b3ca9a36d769283c64d4bdee0798db80af524"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 01 14:35:42 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 02 10:11:02 2017 +0000"
      },
      "message": "ART: Make InstructionSet an enum class and add kLast.\n\nAdding InstructionSet::kLast shall make it easier to encode\nthe InstructionSet in fewer bits using BitField\u003c\u003e. However,\nintroducing `kLast` into the `art` namespace is not a good\nidea, so we change the InstructionSet to an enum class.\nThis also uncovered a case of InstructionSet::kNone being\nerroneously used instead of vixl32::Condition::None(), so\nit\u0027s good to remove `kNone` from the `art` namespace.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I6fa6168dfba4ed6da86d021a69c80224f09997a6\n"
    },
    {
      "commit": "79c87da9d4698ec58ece65af0065eebd55a1cfe0",
      "tree": "399797f37712da9d20829d5b5059b6c84943cb02",
      "parents": [
        "656e97f949df4081fba908113406b32915174502"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 10 11:54:29 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 11 14:47:06 2017 -0700"
      },
      "message": "Add DexFileLoader class\n\nAdded DexFileLoader class, moved functionality from DexFile there:\n- Multidex loading logic\n- DexFile opening logic for Zip and etc\n- Some other helpers\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: Ic3dfa458947d4b69912dea5cdd836e7e8f55061c\n"
    },
    {
      "commit": "8d8de0c92c45a25ac71375c689af29e168bc2ec1",
      "tree": "f60102a6d4493207ed3f8a4df86a004c4f5a046b",
      "parents": [
        "1602bf67be5d9e377c1afde175b65634f4b8b0b5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 04 09:35:30 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 04 09:43:31 2017 -0700"
      },
      "message": "Use CheckedCall for mprotects\n\nAims to prevent silent failures causing SIGSEGV in random places.\n\nBug: 66910552\nTest: test-art-host\n\nChange-Id: I91742b0b0059b5125ac663c3c3422ac5562df0fa\n"
    },
    {
      "commit": "cfcc9cfb44bab79f7381bcc4bfd9bf2d4435f734",
      "tree": "6637daf0cde4f14afd02793ad268f22f9257bd4c",
      "parents": [
        "f67f115423c9ef5aa62a33c12670cd8f89457c9c"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 29 15:07:27 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sun Oct 01 12:08:08 2017 +0100"
      },
      "message": "ART: Increase the number of potential instrinsics\n\nThe new limit is 256 intrinsics.\n\nAdds additional sanity checks.\n\nAvoids setting the kAccPreviouslyWarm bit for intrinics (defaults to\ntrue).\n\nBug: 65872996\nTest: art/test.py --host -j32\nChange-Id: I33ea67c9b6b8500b3ceb8a085358f075f6fcbb82\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": "646d6388758db566eb1302baf274e538e5bdb8b9",
      "tree": "72d192b2120450589c40d1462b5ff373efd2cb69",
      "parents": [
        "18e91619f38349e29367567a70f2f974a8cdaf67"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 09 10:50:00 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 09 13:23:41 2017 +0100"
      },
      "message": "Move deopt and jit logs from LOG(INFO) to VLOG(jit).\n\nThey served their purposes. Now stop spamming logcat.\n\nTest: test.py\nChange-Id: I53c961a6ad95ea891f2f09b7e11e7535da4fdaff\n"
    },
    {
      "commit": "8bb1786f09ebab4e0b93172b45425d5b4940cbaa",
      "tree": "c9a1d6e5554721cada972251768c63bd023ffca6",
      "parents": [
        "c8a8a56d20f40ce9d024b5198184f7627e520aa7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 03 17:42:37 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 03 17:42:37 2017 +0000"
      },
      "message": "Revert \"Flush icache using rw to r transition\"\n\nFailures on armv7 bots.\n\nBug: 62356545\n\nThis reverts commit c8a8a56d20f40ce9d024b5198184f7627e520aa7.\n\nChange-Id: I62adc6ee6536f4c567825bd92424d4b2b72ec9be\n"
    },
    {
      "commit": "c8a8a56d20f40ce9d024b5198184f7627e520aa7",
      "tree": "4c63469c3411617622f2b598b642400f4e8b8697",
      "parents": [
        "d335e7b4d034bc8b69efde641779c6e1cd7bba42"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Aug 02 10:40:20 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Aug 02 10:40:20 2017 -0700"
      },
      "message": "Flush icache using rw to r transition\n\nRather than using mprotects that require executable permissions, attempt\nto use just write permission toggle.\n\nBug: 62356545\nTest: make -j 40 test-art-host\nChange-Id: I262855d110e27d5de2f6df517752757cd53d09cb\n"
    },
    {
      "commit": "06c42a571358b5e5adb69104b183af8f32f4c07d",
      "tree": "7b218fdb67fef74cdcbc2e3665757485ef89918b",
      "parents": [
        "7f14c2ec37c70010d99cab6806d85018df56c555"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 26 14:17:14 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 31 07:38:43 2017 -0700"
      },
      "message": "ART: Move openjdkjvmti to art/\n\nMove libopenjdkjvmti out of the runtime directory. Let\u0027s not\npollute the runtime library.\n\nTest: m test-art-host\nChange-Id: Idb6b9cebcd61777bd3200437a2ae584a63a4a341\n"
    },
    {
      "commit": "c1ac9ee48ddf483ec770b424d63de4982262ea33",
      "tree": "f0fe2958793a2eccef85c40ac94d056b046ca7de",
      "parents": [
        "aed968d130d62d23cfe7f6051ca72c6a84fe1510"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 22:35:49 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 25 11:15:09 2017 -0700"
      },
      "message": "ART: Move CHA to ClassLinker\n\nMove the ClassHierarchyAnalysis singleton to ClassLinker. Hierarchy\nanalysis is a link-time effort and belongs to class-loading instead\nof the global Runtime object.\n\nAlso clean up to use a unique_ptr, and add null checks to allow\nbypassing the analysis.\n\nBug: 34193647\nTest: m test-art-host\nChange-Id: I14ef536e37eb19c0dede372ffd68a826c482cf71\n"
    },
    {
      "commit": "ff80dfc82a3e5177d45099c090e33f1a060f9152",
      "tree": "9ee750c2766161d310a625450ada830bc91230b2",
      "parents": [
        "9710fbaea9022149887da4459b47011a803c76fb",
        "56fe32eecd4f25237e66811fd766355a07908d22"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 25 08:23:46 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 25 08:23:46 2017 +0000"
      },
      "message": "Merge \"Jit Code Cache instruction pipeline flushing\""
    },
    {
      "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": "17272ab679c9b5f5dac8754ac070b78b15271c27",
      "tree": "bb7e52a01a6a28e4906c4f1238079b4478087a7e",
      "parents": [
        "84b65e977302e1cf16d188636c22c164c7793554"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 21 14:32:52 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jul 24 13:11:35 2017 +0100"
      },
      "message": "ARM64: More JIT Code Cache maintenace\n\nMove implementation closer to ARM\u0027s sample code.\n\nTest: art/test.py --target\nChange-Id: Ic205c700528f45afc281fb20e9336c9737d5f409\n"
    },
    {
      "commit": "3ecac070ad55d433bbcbe11e21f4b44ab178effe",
      "tree": "565803b40b7f8be3483c502e1bc6809974c4afee",
      "parents": [
        "24f4f7956edeffb1ae41809e09f14b6d5e7875c8"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 20 15:28:44 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 20 16:22:47 2017 +0100"
      },
      "message": "ARM64: JIT Code Cache maintenance\n\nCache maintenance operations on ARM64 can cause segmentation faults if\naddresses are not backed by physical RAM. Some Linux kernel verions\nhave a bug that exposes these faults to user-land which crashes\nART. Some of the test devices used by the ART buildbots have this\nissue.\n\nThis CL explicitly faults in memory relevant addresses before\nperforming cache maintenance operations.\n\nTest: art/test.py --target --64 --r\nChange-Id: Id7390c14f75c13b3fbbbbb742afeb9ffef9a3801\n"
    },
    {
      "commit": "dcc6617d48692ba7bf19426d767e9d094050fdb4",
      "tree": "d14aee12364040ff79acec4f92693863a47cb226",
      "parents": [
        "57fe2725629681c8a68f6ba5b58d87304ca3f0b1",
        "520dadff2190a5bcdb48838dbcccddc8fbbf0c97"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 19 16:41:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 19 16:41:41 2017 +0000"
      },
      "message": "Merge \"Unbreak Odroid measurements.\""
    },
    {
      "commit": "520dadff2190a5bcdb48838dbcccddc8fbbf0c97",
      "tree": "6e4eda47f0e258bf807b5ce0a62cb063b9f0407c",
      "parents": [
        "c5b1b067fb91c10c75dd0e6dbfd91bebe74347d5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 19 15:33:11 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 19 15:34:09 2017 +0100"
      },
      "message": "Unbreak Odroid measurements.\n\nOdroid run Linux/target, which doesn\u0027t support ashmem.\n\nTest: test.py\nChange-Id: Icd92d2a87ea9987c9580037ef195f6e63641283d\n"
    },
    {
      "commit": "43ce5f82dae4dc5eebcf40e54b81ccd96eb5fba3",
      "tree": "32775c9d2c16b91a2899dab318d54d9ad6e3c5b9",
      "parents": [
        "c5b1b067fb91c10c75dd0e6dbfd91bebe74347d5"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 19 10:34:27 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 19 13:26:02 2017 +0100"
      },
      "message": "Change flush order in JIT code cache\n\nFlush the data cache before flushing the instruction when dual mapped.\n\nBug: 62356545\nTest: art/test.py -j4 --jit --64 -r --verbose -t test-art-target-run-test-debug-prebuild-jit-no-relocate-ntrace-gcstress-checkjni-picimage-npictest-ndebuggable-no-jvmti-916-obsolete-jit64\nTest: Using an Android N image and testing on device from master-art\nChange-Id: Ia73da7449cc3a40be0128825233086924eca90a5\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": "a5dcdf346158d47bfe80d8adb29b1b020cede286",
      "tree": "50e56b3445dc8e4724d6707ffecd23f9dae96e31",
      "parents": [
        "942c597b004aa328cf291a78392b405ef5d5f040",
        "bbe3a5efcdfb2fb15a4e5f724cc323ae0ada5111"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 15 20:21:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 15 20:21:24 2017 +0000"
      },
      "message": "Merge \"Refactor some profiling info functions\""
    },
    {
      "commit": "bbe3a5efcdfb2fb15a4e5f724cc323ae0ada5111",
      "tree": "65fd149e1159674681d866e47e485d85b8464334",
      "parents": [
        "d58932f98a673c9d687863a7efafb2da168063a2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 13 16:36:17 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 15 11:45:06 2017 -0700"
      },
      "message": "Refactor some profiling info functions\n\nDeleted profile_compilation_info-inl.h\n\nAdded a new helper class MethodHotness to reduce the number of\nrequired getters for reading method hotness, startup, and post\nstartup booleans.\n\nTest: test-art-host\nBug: 62040831\n\nChange-Id: I799a38e2bea6177ba5816c54524f4ccacedba772\n"
    },
    {
      "commit": "e4deaf3ccdfaf33f0b4526e9963612bfa2dc79e8",
      "tree": "6af8ed52f680e3f65ffed43d52353c34803b668a",
      "parents": [
        "651ba599961ff0cdc36e83d3d58b1744d37ee9f7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 09 15:27:15 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 14 14:44:53 2017 -0700"
      },
      "message": "ART: JIT code cache allocation cleanup\n\nRequest the data cache with kProtData instead of kProtAll. It isn\u0027t\nnecessary nor intended to be executable. The tail remap for the code\ncache will make all required parts executable, if possible.\n\nAlso use a unique_ptr to plug a leak on failure.\n\nBug: 36138508\nTest: m\nTest: m test-art-host\nTest: Test SANITIZE_LITE\u003dtrue build with wrap.system_server \u003d asanwrapper\nChange-Id: Id9e2e51bc8d7a29db99c406cd1e9ef6bbb8d444c\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": "fbb22de21c30b1233aa32b56b0c92b2bd0ec2b47",
      "tree": "c4dca0c88a5526fceb057e7255f614c1c8a9a2c0",
      "parents": [
        "f052aa7268f656f97099185ac6b51eeacd78a97d",
        "88f50b13aca3b29b4be144b2b8c14bc95506d240"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jun 10 13:24:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jun 10 13:24:48 2017 +0000"
      },
      "message": "Merge \"Don\u0027t reset to a level above warmup threshold.\""
    },
    {
      "commit": "b2d18fa4e33ca119654ced872c70fe198b0b2db5",
      "tree": "9f0e3ac72b9b7b08794e1ecf458620ba19437465",
      "parents": [
        "58794c5c23f46a7476a58e5a10dbeebb6321aa90"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 06 20:46:10 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 09 11:36:45 2017 -0700"
      },
      "message": "ART: Clean up asm_support.h\n\nThe includes are only ever really needed for tests. Factor out\ngeneration of the test function into asm_support_check.h\n\nFix up missing includes, mainly intern_table.h.\n\nTest: m\nTest: m test-art-host\nChange-Id: I435199e6211e368be0a06c80d8fa95b9593aca31\n"
    },
    {
      "commit": "88f50b13aca3b29b4be144b2b8c14bc95506d240",
      "tree": "19ee500bccff6b2d4e1b5b94a9e7071cec54240e",
      "parents": [
        "fed9cb178be878f4e5ff862ac78ae2cf5ad305d3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 09 16:08:47 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 09 16:10:36 2017 +0100"
      },
      "message": "Don\u0027t reset to a level above warmup threshold.\n\nOtherwise, we could be in a situation where a profiling info\nnever gets allocated.\n\nTest: 655-jit-clinit\nChange-Id: I7eebab66e841784a8ce5cd32765df9fc7376cea8\n"
    },
    {
      "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": "f044c229e12f1d49b7024ab5d7353b2d83335501",
      "tree": "010bc946819a5190b19fbf55f50bef75ef789991",
      "parents": [
        "854461a4cd5e4a38debe3616e12b52fe7f160782"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 31 15:27:54 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 31 20:46:50 2017 -0700"
      },
      "message": "Add access flag for previously warm methods\n\nWe want to know if the method was warm instead of just having a non\nzero counter. This is required if we want to not compile all of the\nstartup methods, but still compile warm methods.\n\nTest: test-art-host ART_TEST_JIT\u003dtrue\n\nBug: 62200509\n\nChange-Id: I6e04866f39f970b04b47342b7af5ed474e1f4172\n"
    },
    {
      "commit": "00286db781e56d676d6bfb1ab22dc22fbaa96a41",
      "tree": "61f4cf0bb8c90f9e8551119ebb1a672db2040566",
      "parents": [
        "413d0bec8015525ec15b57ced821b4aa049cf067"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 30 16:53:07 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 30 16:53:07 2017 -0700"
      },
      "message": "Reset JIT method counters to 0 instead of 1 when clearing.\n\nWhen the counters need to be cleared, the count should reset to 1\ninstead of 0. The counters may be reset during startup, and startup\nmethods can be lost by resetting the counters to 0.\n\nBug: 62200509\nTest: mm test-art-host\nChange-Id: I8936631d3bab369c6a14acf76b20e7245de14789\n"
    },
    {
      "commit": "2d7ed749be6772130cc9fa5658732951701fc450",
      "tree": "b66f6931c569e59f7a41535ed99a5aa37b378174",
      "parents": [
        "1f51ec0e1a80c4146793d2f853c2c7408073fe7c",
        "352b17af5263b27cad7a1dbf2351f9cb71d6af58"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 26 10:41:42 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 26 10:41:44 2017 +0000"
      },
      "message": "Merge \"Flush data cache after updating the JIT table.\""
    },
    {
      "commit": "dbddc22f5dc2d1ff4d4783fbd66c27812f4980d1",
      "tree": "2a0a8efa1c2630e57ab48ab2de171f2847ff282f",
      "parents": [
        "a559fa1b0d6c276dde2cdc707de1acd4950f7190"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 24 12:04:13 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 25 16:59:44 2017 -0700"
      },
      "message": "Refactor profiles to use TypeReference instead of ClassReference\n\nRefactor type reference into runtime and use it for profiles.\nClassReference was just duplicated code since it wasn\u0027t even using\nthe class def indexes.\n\nTest: test-art-host\n\nBug: 62040831\nChange-Id: Ia92f21c0e85c00321f52c97bb7a90158d882849b\n"
    },
    {
      "commit": "352b17af5263b27cad7a1dbf2351f9cb71d6af58",
      "tree": "2c3cd2c36727cd4ba994457a29028f9ee9086272",
      "parents": [
        "ec89dfa25ae9e718730d775022aef505f7363d3a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 25 12:54:31 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 25 13:00:45 2017 +0100"
      },
      "message": "Flush data cache after updating the JIT table.\n\nOtherwise, other cores could see an incomplete table when executing\nthe new code.\n\nbug: 37949368\nTest: test.py --jit\nChange-Id: I29fb62f4a13c6db509a1f5719b05ee9297a403ba\n"
    },
    {
      "commit": "a39fd980000d10ee0b3a49555cc8bcbbfacde943",
      "tree": "cad6936a2b618ec31fc7d5b724ff8f433b373e23",
      "parents": [
        "0b183409d8dd2ed5a720eb28ad77c46bccd09247"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 18 10:15:52 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 23 13:29:45 2017 -0700"
      },
      "message": "Record inline caches only for the strictly hot methods\n\nWarm methods might have incomplete inline caches which could cause\nunnecessary deoptimizations.\n\nTest: m test-art-host\nBug: 38426301\nBug: 38412648\n\nChange-Id: I3023a2d462cb1bd291f7ea63bcf363a75d8f20a9\n"
    },
    {
      "commit": "5504aef8c13ad1cc8825c108836a32ba8e54ce6c",
      "tree": "0b11e66eb1ed9597b77908fb02673adec877e2ed",
      "parents": [
        "4632f5be49f4a4a9be981284fdbbc8a181a8d627",
        "5629d2deda9bbdf53a229922dac23b88e286d6bd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 17 16:20:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 17 16:20:07 2017 +0000"
      },
      "message": "Merge changes Ic48ccda9,Ibc0a29c9\n\n* changes:\n  ART: Move JIT code cache sentinel to sentinel fault page\n  ART: Reserve sentinel fault page\n"
    },
    {
      "commit": "39e673811d73ac09a822d9ee0082bba5d8e8cbad",
      "tree": "2c298cbabbd476b103da0269e5cbb68de18faf61",
      "parents": [
        "ed00ddb614d68559931d831cb74d3ba8f01599c9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 19:26:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 19:26:38 2017 -0700"
      },
      "message": "ART: Fix iterator invalidation\n\nErasing an item of a map invalidates the iterator.\n\nBug: 38324641\nTest: m test-art-host\nChange-Id: I9f7499eb4a4b49e4fcd6c99d170d9b681adfd9b0\n"
    },
    {
      "commit": "5629d2deda9bbdf53a229922dac23b88e286d6bd",
      "tree": "6edd6558115881b1df763faf90165f1535e293d7",
      "parents": [
        "2ac67d526eb348019433138b04eb1473d45cb0f4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 16:28:13 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 18:21:49 2017 -0700"
      },
      "message": "ART: Move JIT code cache sentinel to sentinel fault page\n\nUse an address in the fault page to get more expressive fault\naddress.\n\nTest: m test-art-host\nChange-Id: Ic48ccda976eeb965774c9356242a0151ccbc2a10\n"
    },
    {
      "commit": "6ca115b5fa185a2cc162a453f425efd87d8f38bd",
      "tree": "6c6ccb5ec5094a54a8c558707f4b2a305c90b87c",
      "parents": [
        "ddc38fe3e5618e3922ecc445193dacb2f39ef736"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 10 15:09:35 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 11 15:46:10 2017 +0100"
      },
      "message": "Use a sentinel when clearing JIT table entries.\n\nThis can help diagnosing crashes we see.\n\nbug: 38128052\nbug: 37949368\nTest: test.py --jit\nChange-Id: I7bf70785e8bd93fb0575ac64b1fb5bcb7d462b10\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": "f6d4668c42933e2f85ddbc94e276c49db4e2b1dd",
      "tree": "3343addb8cde45eb4070d4876f26bef1002248dc",
      "parents": [
        "0bbb750f6ff9a52bc4649995fc78ebea87e31dd1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 28 17:41:45 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 24 14:02:54 2017 +0000"
      },
      "message": "Improvements in the Inliner.\n\n- Change from a depth limit to a total number of HInstructions\n  inlined limit. Remove the dex2oat depth limit argument.\n- Add more stats to diagnose reasons for not inlining.\n- Clean up logging to easily parse output.\n\nIndividual Ritz benchmarks improve from 3 to 10%.\n\nNo change in other heuristics. There was already an instruction budget.\nNote that the instruction budget is rarely hit in the \"apps\" I\u0027ve tried\nwith.\n\nCompile-times improve from 5 to 15%.\nCode size go from 4% increase (Gms) to 1% decrease (Docs).\n\nbug:35724239\ntest: test-art-host test-art-target\n\nChange-Id: I5a35c4bd826cf21fead77859709553c5b57608d6\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": "13439f0c4769a0768cf1bbaa7b3f2f9ee5a317c5",
      "tree": "a5d52373571fad4249544a7b27c8009233d69f9d",
      "parents": [
        "74f94dd8edb4a6070f6f7bfef6d28a8b4a21fc30"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 21 01:17:21 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 09 17:14:02 2017 -0800"
      },
      "message": "Use offline inline caches during AOT compilation\n\nAlso:\n- extend the testing script to understand profile when --profile is\npassed\n- filter inline cache types which are not loaded by the caller class\nloader\n\nTest: m test-art-host-run-test-638-checker-inline-caches\nBug: 32434870\nChange-Id: Ifcc27b3cebc79b84617412aaae64a73324151b55\n"
    },
    {
      "commit": "589e71eb71477603c88b14118b2d3a33508c3c79",
      "tree": "95d88c7c8ba3a9b2009361d61164cef6a6339308",
      "parents": [
        "d9f647ac9a5cb0c6f112332d584756251c2cfb9f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 03 16:05:05 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Mar 06 12:57:30 2017 -0800"
      },
      "message": "Encode inline caches with missing types in the profile\n\nNot all runtime types can be encoded in the profile. For example if the\nreceiver type is in a dex file which is not tracked for profiling its\ntype cannot be encoded.\n\nPreviously we would just skip over these types but that can lead to\nencode a polymorphic inline cache when in fact it should be megamorphic.\n\nWith this CL, inline caches for which types are missing are marked in\nthe profile with a special bit, kIsMissingTypesEncoding.\n\nAlso, extend profman to understand text lines which specify an inline\ncache with missing types.\n\nTest: test-art-host\n\nBug: 35927981\nBug: 32434870\nChange-Id: I34528a39c227f3133771fd4454701c1ddc234f40\n"
    },
    {
      "commit": "da3355a9af91e9825d9554658bf2020cbbe08e18",
      "tree": "2aa451b4ae91f0d0c792437b187945c4271dd70b",
      "parents": [
        "7ac79b99c09fecb33af43e435008868f48406726",
        "3b1a7f40ad69ab5332d13ed0abf0a3a1fa7f2a9e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 24 09:02:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 24 09:02:58 2017 +0000"
      },
      "message": "Merge \"Update entrypoint directly when doing JIT code cache GC.\""
    }
  ],
  "next": "3b1a7f40ad69ab5332d13ed0abf0a3a1fa7f2a9e"
}
