)]}'
{
  "log": [
    {
      "commit": "8ea9b3711a5cc6c2d9ec4fe1e57e8c36fc62bced",
      "tree": "77ec6a1b7c2864f8e05f4a35d92abf0689b6d837",
      "parents": [
        "9d4fb714d84031f136bd1d5f0b70d53e710e5abf"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Sep 04 15:52:41 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Sep 04 23:02:16 2019 +0000"
      },
      "message": "Use j.l.ThreadGroup class directly for GetThreadGroupInfo\n\nWe were using the class of the input to GetThreadGroupInfo in some\nsituations. This could lead to us reading the wrong field or not\nfinding expected fields. Change to always directly use the\nj.l.ThreadGroup class from WellKnownClasses. Also use some handles in\nthis function.\n\nTest: ./test.py --host\nBug: 140521090\nChange-Id: I3560662718311ccc0fa9b906f178407350ce9960\n"
    },
    {
      "commit": "72d7e94d70923c5ff4cbe947117801583eae4672",
      "tree": "cde1932ed801dc7f388b56282d3e2bca000e428a",
      "parents": [
        "f1bb75abb38609d72648e03eefac7320b5e804b4"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 23 13:10:20 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 13 17:54:27 2019 +0000"
      },
      "message": "Add obsolete object event\n\nAdd an extension event to notify agents that an object is becoming\nobsolete. This is meant to be used by agents performing allocation\ntracking using the VMObjectAlloc event to let them know that an object\nreplacement is occurring. This event is only triggered by calls to\nJVMTI functions that create obsolete objects. Normal GC actions\n(including a moving compaction) will not cause this event to trigger.\n\nTest: ./test.py --host\nBug: 134162467\n\nChange-Id: If48b880814a751ba6c24c18d0ad116db4f8fdf64\n"
    },
    {
      "commit": "c14ec8facf0ea51e7531fa0acbed3410468b0356",
      "tree": "a70bc3cffcaf763e4951c96918bc6f8b25a472b3",
      "parents": [
        "147a911636402f2658ce60bd3ad62eb197b00f74"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 18 16:08:41 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Aug 01 17:50:27 2019 +0000"
      },
      "message": "Add resize arrays JVMTI extension\n\nAs a prototype for more general object replacement functionality add a\nnew JVMTI extension that allows one to change the size of arrays. This\nextension is \u0027com.android.art.heap.change_array_size\u0027. As far as any\nJVMTI agent, JNI or Java Language code can observer this extension\natomically replaces every reference (strong and weak, global and\nlocal, etc.) with a newly allocated array with the same contents but a\ndifferent length. Internally a whole new array will be created then\nthe old array will have its contents (including lock-word) copied and\nall references to the old array will be replaced with the new array.\n\nTest: ./test.py --host\nBug: 134162467\n\nChange-Id: I92a0beabb02e0c92c8c8f9639836014ff1266878\n"
    },
    {
      "commit": "60415ae617133fd06b3dd909b6db37f5c26dcd6b",
      "tree": "0cae4f834b8398b6f8ef52a942b7dfc94db724fc",
      "parents": [
        "07a560d98c5e5e6dfcdb966d19f9d2cc155ace4f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 02 14:03:13 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 05 15:58:24 2019 +0000"
      },
      "message": "ART: Move DexFileVerifier class to cc file\n\nHide all details. None were accessible before anyways. Instead,\nonly expose art::dex::Verify.\n\nTest: m test-art-host\nChange-Id: I19a68440045622b78c1678c92027f6e0e1185d75\n"
    },
    {
      "commit": "79d6c800cd8aa1da335ea0523c391852780ac02a",
      "tree": "a77faf41d7b658709113c72d7eaaaa1ce2ded6b5",
      "parents": [
        "01fbfbebceb00b94cc54738ebf425b6c4a79211a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 27 15:50:11 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 28 14:58:17 2019 +0000"
      },
      "message": "Revert^2 \"Support using opaque JNI ids\"\n\nWe weren\u0027t handing the fact that encoding jmethodIDs could cause OOM\nexceptions in some places in reflection.cc. This could lead to\nattempting to use a null jmethodID as if it were a real id. This issue\nis fixed by the parent CL.\n\nThis reverts commit b476a29a2c.\nThis reverts commit 3b2905366c.\nThis Unreverts commit d5d645ffec.\nThis Unreverts commit 21d5994583.\n\nReason for revert: Fixed issue causing 004 debuggable flakes\nTest: ./test.py --host --jit --debuggable\nBug: 134162467\n\nChange-Id: Iece08ab299cd8a20f8382be7be6c3796858e70eb\n"
    },
    {
      "commit": "b476a29a2cda22b86fc1d96e4cc65ce36fb878af",
      "tree": "039eaee2edf5495275088d1c467e522977c6bcd6",
      "parents": [
        "3b2905366c6ee1eaba2d6477078e505e377343ec"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 07:54:48 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 08:16:04 2019 +0000"
      },
      "message": "Revert \"Support using opaque JNI ids\"\n\nThis reverts commit 21d5994583c679cd5d8573b5d35dbd659bdca2c7.\n\nBug: 134162467\n\nReason for revert: Breaks debuggable\n\nChange-Id: I9510a6ac208d392ff25ee196a1a519fecd151445\n"
    },
    {
      "commit": "21d5994583c679cd5d8573b5d35dbd659bdca2c7",
      "tree": "521906398a2f04048cc51b4f409b6a3ebc0c6ffa",
      "parents": [
        "5dfbe7ae9ed9a1a82446d32118190105a211a2d2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 19 12:58:22 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 26 20:22:39 2019 +0000"
      },
      "message": "Support using opaque JNI ids\n\nCurrently JNI ids (jmethodID \u0026  jfieldID) are created by simply\ncasting the corresponding ART structure pointer. This is great for\nsimplicity but means we are prevented from performing operations that\ncould change these pointer values. To support these use-cases add\nsupport for loading the runtime with a layer of indirection between\nthese ids and the internal art data types.\n\nCurrently the JNI id type can be toggled only by passing the new\n\u0027-Xopaque-jni-ids:{true,false}\u0027 flag during startup.\n\nThis changes the --debuggable test configuration to pass\n\u0027-Xopaque-jni-ids:true\u0027 in order to get test coverage of this feature\nusing the \u0027art-jit\u0027 configuration.\n\nTest: ./test.py --host --debuggable\nTest: ./test.py --host --debuggable --jit-on-first-use\nTest: ./test/testrunnner/run_build_test_target.py art-jit\nBug: 134162467\nChange-Id: Id8c8cb9a5b8ff18dc2f40892fae2d344a7214f44\n"
    },
    {
      "commit": "c5c5186959caeba81b83f949b3100749655f7a6c",
      "tree": "346cb1f19b1d72dc585f1c3f84c828ce2c38f22f",
      "parents": [
        "8764860dcd6e80512885e41717af9d45c574054a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 14 09:17:41 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 14 19:32:14 2019 +0000"
      },
      "message": "Avoid decoding jobject under a kGenericBottomLock\n\nWe were decoding a jobject while holding a bottom-lock level lock.\nThis could cause a lock-level violation.\n\nTest: ./test.py --host\nBug: 135219029\nChange-Id: I65038cce9c6432f040a50d5436932c60d044890b\n"
    },
    {
      "commit": "b7c640d364d32b79cb52d04750b063667a9a0c86",
      "tree": "9caafc96879f83f8e5dd3cd45b9005be6e2b7deb",
      "parents": [
        "3ffb5b1576f8af0c361284ebd8d2d54c70ede3ff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 20 15:52:13 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 10 18:33:25 2019 +0000"
      },
      "message": "JVMTI Force early return\n\nAdd support for can_force_early_return jvmti capability. This allows\none to force java frames to exit early. Exited frames have all of\ntheir normal locks released.\n\nWe implement this by modifying the existing method exit events to\nallow one to modify the exit value during the callback. This is used\nto implement ForceEarlyReturn by adding internal-only events that will\nchange the return value of methods once they return (using\nkForcePopFrame) avoiding the need to modify the actual interpreter\nvery deeply. This also makes it simple to continue to use the standard\ndeoptimization functions to force the actual return.\n\nIn order to simplify book-keeping the internal event is refcounted,\nnot associated with any specific jvmtiEnv, and only settable on\nspecific threads. The internal event is added by the ForceEarlyReturn\nfunction and then removed by the MethodExit event when we update the\nreturn value.\n\nBug: 130028055\nTest: ./test.py --host\nChange-Id: Ifa44605b4e8032605f503a654ddf4bd2fc6b60bf\n"
    },
    {
      "commit": "3068d582eff4552ff260d7966fcbdc93e17d0207",
      "tree": "bc894a414070a06ea2a231fb98607b57b8c3b0cb",
      "parents": [
        "991cd5cc16267b74e390f640eb441102062babb6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 28 16:39:29 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 31 14:15:59 2019 +0000"
      },
      "message": "Clean up creating handles from `this`.\n\nMake these member functions static and take an additional\nparameter `Handle\u003c.\u003e h_this`. Callers mostly already have\na Handle\u003c\u003e to pass, so we avoid an extra StackHandleScope.\nThis pattern was already used for some functions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --interpreter\nChange-Id: I4f4478b0526bcb2f3c23305d3b3cc4a65fff9ff5\n"
    },
    {
      "commit": "bee28948fd9ca995568549e9cf95108e09fe2475",
      "tree": "cc94df6c7d835a54f69a4ca244578992c5948442",
      "parents": [
        "616f400313907532b9c8b78a9af503926280c1c3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu May 30 10:03:25 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 30 20:43:17 2019 +0000"
      },
      "message": "FdFile needs close even without any valid FD\n\nThe FdFile struct requires that Flush and Close be called even if\nthere is no fd associated with the struct. This meant that test 1963\nwould fail a DCHECK if memfd_create fails.\n\nTest: Modify libartbase/base/memfd.cc to always fail.\n      ./test/run-test --host 1963\nBug: 133731001\n\nChange-Id: I34d2949f43d7943a3a900b0b641eb7a3525352d4\n"
    },
    {
      "commit": "e2ddce3dec02cf7c9eb5efb2e29c250a5e909995",
      "tree": "df9ee07990149cceffe0496807c0e88f534211ec",
      "parents": [
        "6045bc202f2c470b63c40a5a25db369b5a049c28"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed May 22 17:08:35 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed May 22 17:29:29 2019 +0000"
      },
      "message": "Revert^2 \"Add verifier fallback for JVMTI Get/SetLocalVariable\"\n\nThis reverts commit 99cbfb55fc7ac0f65b1ccdc7076219fcee383b92.\n\nThis unreverts commit e48fd0b4780efadc6b3433fe7a56aa5be2a84325.\n\nWe were incorrectly bounds-checking the register number. We were\ntreating it as unsigned when it was actual signed. Previously this\nwouldn\u0027t matter since normally the debug-info won\u0027t have any\ninformation for negative slots but by falling back to the verifier\nwe hit some check failures.\n\nReason for revert: Fixed underlying issue with bad bounds check.\nBug: 131711256\n\nChange-Id: I0b859ce322f3b23f937b72d735db8f6870c40602\n"
    },
    {
      "commit": "6045bc202f2c470b63c40a5a25db369b5a049c28",
      "tree": "0aa6a7ae6855d2e05d6743e199811eb694df39a9",
      "parents": [
        "99cbfb55fc7ac0f65b1ccdc7076219fcee383b92"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed May 22 08:33:30 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed May 22 10:14:37 2019 -0700"
      },
      "message": "Fix incorrect register-number range check.\n\nFor the JVMTI Get/SetLocalVariable functions we were checking the slot\nnumber as though it was unsigned when in fact it is held as a (signed)\njint.\n\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./test.py --host\nChange-Id: I9bbc0054ae48884cd8ddf84b5cbd60d5247bf43b\n"
    },
    {
      "commit": "99cbfb55fc7ac0f65b1ccdc7076219fcee383b92",
      "tree": "5420795d367de2d4fbf2f1a73ac2b3f275a5114a",
      "parents": [
        "098e7a67588f39642567b91ecfab117dbaa84d31"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 22 11:39:45 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 22 12:23:46 2019 +0000"
      },
      "message": "Revert \"Add verifier fallback for JVMTI Get/SetLocalVariable\"\n\nThis reverts commit e48fd0b4780efadc6b3433fe7a56aa5be2a84325.\n\nReason for revert: Fails libjdwp tests. In particular:\norg.apache.harmony.jpda.tests.jdwp.StackFrame_SetValuesTest\n\nBug: 131711256\nChange-Id: Id46da7c0d26769f8f4bd469cdfb8049f6812295a\n"
    },
    {
      "commit": "e48fd0b4780efadc6b3433fe7a56aa5be2a84325",
      "tree": "5056001e02d8c4494b643c8d53fd32621e127c1c",
      "parents": [
        "abdb4592fa28d6e75f1160f01cde58ad7c3fef37"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 20 10:04:44 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 22 00:29:38 2019 +0000"
      },
      "message": "Add verifier fallback for JVMTI Get/SetLocalVariable\n\nThe JVMTI Get/SetLocalVariable functions used to rely entirely on the\nDex DebugInfo to determine the types of each of the registers. This\ncould lead to problems since, to prevent possible stack corruption, we\nwould not allow stack modification if the data was not present.\n\nIn order to remove this restriction we will instead make use of the\nmethod verifier to ensure the modification is sensible when the\nDebugInfo is not present. Since reconstructing this information using\nthe verifier is quite slow (compared to reading it from a table) we\nwill only do this when the table is missing.\n\nSince the verifier lacks some of the information available when\ncreating the DebugLocalInfo table some semantics will change depending\non if the table is present or not.\n\n - When the DebugLocalInfo table is not present we cannot always\n   distinguish between floats, ints, and other single-register\n   primitive types. For simplicity all single-register primitive\n   types can be modified and read by both the Float and Int versions\n   of the local variable functions.\n\n - Similarly we cannot always distinguish between long and double\n   variables.\n\n - Reference types are checked against what the verifier thinks they\n   need to be according to type unification. This might be more or\n   less specific than the types recorded in the functions source code.\n\n - Constant int/float \u00270\u0027 values and \u0027null\u0027 cannot always be\n   differentiated by the verifier. Therefore, one may not always be\n   able to modify some null or constant 0 registers.\n\nTest: ./test.py --host\nBug: 131711256\n\nChange-Id: I1c9d857ccdec752bfd4ebad76cc9ad96e143866c\n"
    },
    {
      "commit": "639e73b5ad1d96a1e67743735a13f7a268b455aa",
      "tree": "d362fd58d8e1ab68a512f3f0f33b0fe1384e0a26",
      "parents": [
        "f03b151a9b86bc47f501ec7ea0b71d0598e90d52"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri May 17 21:44:36 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 20 16:13:34 2019 +0000"
      },
      "message": "Revert^2 \"Add AddToDexClassloader JVMTI extension functions\"\n\nThis reverts commit 799e536da9733ab638946f56e1ceb62d62cd3c81.\n\nIt seems that on some of our test devices the kernel does not have an\nimplementation for memfd_create. To work around this I added a basic\nwrapper that will simulate memfd_create using temp files. This should\nbe sufficient for testing. All actual devices are expected to support\nthe memfd_create syscall natively.\n\nReason for revert: Implemented fallback for memfd_create\nBug: 132699522\nBug: 132914283\nTest: ./test.py --host\n\nChange-Id: I63b36464df24193fff27624c1e2350d65545ad1d\n"
    },
    {
      "commit": "799e536da9733ab638946f56e1ceb62d62cd3c81",
      "tree": "66a8910e6e8ffd96a83b31513998dc9745209d5b",
      "parents": [
        "c5265d93c8340b3c419f7f2a7620b5279f274637"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri May 17 21:42:33 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri May 17 21:43:40 2019 +0000"
      },
      "message": "Revert \"Add AddToDexClassloader JVMTI extension functions\"\n\nThis reverts commit 92ed90ca3897ae7861b22aa12740065152839649.\n\nReason for revert: Test 1963 fails when run by chrome buildbots.\n\n\nChange-Id: Ia3a7dc64f0372da9feca9bca1a75038d3f9fb01e\nTest: None\nBug: 132699522\nBug: 132914283\n"
    },
    {
      "commit": "92ed90ca3897ae7861b22aa12740065152839649",
      "tree": "fdc54a52ba79635a228b58fe2ad90c58442965b8",
      "parents": [
        "82cc9601d657965d9bff7cc0a63a603df0e1eae5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue May 14 14:33:38 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 17 02:35:59 2019 +0000"
      },
      "message": "Add AddToDexClassloader JVMTI extension functions\n\nIt is useful for some agents to be able to add new classes into an\nalready existing classloader. This could be used to, for example,\nhandle new lambdas added during \u0027edit-and-continue\u0027 debugging. This\nextension should eliminate the need for agents to reach into\nclass-loader internals.\n\nThese functions are:\n\n\u0027com.android.art.classloader.add_to_dex_class_loader\u0027 which has a\nsignature of jvmtiError(jvmtiEnv* env, jobject classloader, const\nchar* segment) and will add the given \u0027segment\u0027 file to the\ndalvik.system.BaseDexClassLoader \u0027loader\u0027.\n\n\u0027com.android.art.classloader.add_to_dex_class_loader_in_memory\u0027 which\nhas a signature of jvmtiError(jvmtiEnv* env, jobject classloader,\nconst unsigned char* dex, jint dex_size) and will add the dexfile\nbuffer \u0027dex\u0027 to the given dalvik.system.BaseDexClassLoader.\n\nClassLoaders that do not extend dalvik.system.BaseDexClassLoader are\nnot supported.\n\nTest: ./test.py --host\nBug: 132699522\nBug: 132914283\n\nChange-Id: I3740af4b3b06b9fa64be8ad94238256b7a43536a\n"
    },
    {
      "commit": "eab0248f8785f25241011a953940ea5a4c5e7467",
      "tree": "15de339b7f70b2a5a4f866bd090afca2922fbf02",
      "parents": [
        "5515310c7e83f8bd11f575fba7439edbd3bea4d9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 09 10:28:17 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 10 05:05:45 2019 +0000"
      },
      "message": "Clean up after obsolete methods update fix.\n\nThis is a follow-up after\n    https://android-review.googlesource.com/942485 ,\naddressing most of the late comments.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --interpreter\nBug: 73333076\nChange-Id: I52c0a3cbf81e97474dc46846486263946379416a\n"
    },
    {
      "commit": "4060786d8fa8c0c63c751a837decce4f95a33112",
      "tree": "7ce0fcebc6399c5c672569dcf7aa3dc67d503978",
      "parents": [
        "3ff45bf767f4f1baf858e2220e36acffa97b0383"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 06 18:16:24 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 09 09:07:24 2019 +0000"
      },
      "message": "Revert^2 \"Correctly handle thread deopt with thread-specific JVMTI events\"\n\nThis reverts commit b2a8964f4218c2c52dacf599ebf5cf69f8753bf0.\n\nIt turns out that transitioning from instrumentation trampolines and\ninterpreter trampolines interacts in a racy way with single thread\ndeoptimization. This caused tests that perform this transition\nrepeatedly to be flaky when run with the --trace. Since it is expected\nto be rare that one traces at the same time they are performing JVMTI\nfunctions (since JVMTI is a superset of trace behaviors) we solved\nthis by simply not allowing the transition.\n\nReason for revert: Prevented unsafe transition between entry-exit\n                   trampolines and interpreter only.\nBug: 131865028\nBug: 132283660\nTest: ./test.py --host --trace --ntrace\nTest: echo \"#!/bin/bash\" \u003e run-one-test.sh\n      echo \"./art/test/run-test --dev --jit --trace --64 1956-pop-frame-jit-calling 2\u003e\u00261\" \u003e\u003e run-one-test.sh\n      chmod u+x run-one-test.sh\n      ./art/tools/parallel_run.py -j20 ./run-one-test.sh\n\nChange-Id: Id496b272f353a5a5e000574c107a97d67405d54b\n"
    },
    {
      "commit": "342b69492cd0789d1c0903bb6d948e505e708048",
      "tree": "ab3cbcdd37a1afc1b0ae96bf756c332a2b4ccbdc",
      "parents": [
        "b34981b0b7a16b084a4ab30ce509ee98bf171e63"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue May 07 15:28:39 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 08 19:42:49 2019 +0000"
      },
      "message": "Fix JVMTI GetStackTrace bug\n\nGetStackTrace would incorrectly return ERR(ILLEGAL_ARGUMENT) if the\nnumber frames returned was less then the start depth and start depth\nwas \u003e\u003d 0. This made some legal stack trace calls impossible.\n\nInstead it should have been checking that at least one frame was\nretrieved (since otherwise the start-depth was off the stack).\n\nTest: ./test.py --host\nBug: 132196976\nChange-Id: I9f959569f90dbb75de0010173b119472a4b5864e\n"
    },
    {
      "commit": "439d12691964780784a67f178384c0175780f665",
      "tree": "35e251f5b41e54fc684d9f922bf5b72a648bd9c2",
      "parents": [
        "19711d479cd4bc4c2d02edf37526cd4e2a6235f7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 12 14:45:07 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 08 10:18:50 2019 +0000"
      },
      "message": "Add StackVisitor::SetVRegReference().\n\nAvoid converting ObjPtr\u003c\u003es to uint32_t and back.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --debug\nBug: 31113334\nChange-Id: I4e5c1577930de58772b35179aa4281ae4bbca300\n"
    },
    {
      "commit": "b2a8964f4218c2c52dacf599ebf5cf69f8753bf0",
      "tree": "1eb91d1e6dcdee31b5b396ee0ed8baf8c94aca96",
      "parents": [
        "c8c7e0659a76a951f3ab110ed9b7f37777448d36"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 06 18:05:55 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 06 18:05:55 2019 +0000"
      },
      "message": "Revert \"Correctly handle thread deopt with thread-specific JVMTI events\"\n\nThis reverts commit c8c7e0659a76a951f3ab110ed9b7f37777448d36.\n\nTest: none.\nReason for revert: Causes art-tracing to flake/fail pop-frame tests.\nBug: 131865028\n\nChange-Id: I16bda461da94405f372b6b0be54ac4b4efb08fda\n"
    },
    {
      "commit": "c8c7e0659a76a951f3ab110ed9b7f37777448d36",
      "tree": "8a77fac99879f781d3c4eeaa8c79b3d9eb7bbc13",
      "parents": [
        "765b2a04576f4e985a88165456f5ee55cdfe56b8"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu May 02 17:35:02 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 03 19:56:27 2019 +0000"
      },
      "message": "Correctly handle thread deopt with thread-specific JVMTI events\n\nWe were incorrectly treating some JVMTI events as still requiring\nglobal deopt even though that requirment had been lifted. This meant\nthat if one sets thread-specific event notification requests on\nmultiple threads only some of them will actually be deoptimized. This\ncould cause events to be missed if the relevant methods/threads had\nbeen jitted.\n\nTest: ./test.py --host --jit-on-first-use\nTest: ./test.py\nBug: 131865028\n\nChange-Id: Ib196faa635e61262eea7ccc576dc0d700b3e7eff\n"
    },
    {
      "commit": "765b2a04576f4e985a88165456f5ee55cdfe56b8",
      "tree": "1eb91d1e6dcdee31b5b396ee0ed8baf8c94aca96",
      "parents": [
        "023533677989028d48f4e64dad0a5b3b4e59b726"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 02 11:04:13 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 03 19:46:42 2019 +0000"
      },
      "message": "Add -verbose:interpreter\n\nAdds a mode to track what methods are being interpreted. Good\nfor debugging interpreter usage during app startup.\n\nBug: 130185360\nTest: test-art-host\n\nChange-Id: I8119f79e534cdad7d6a72d4f01115a288e9c8d9a\n"
    },
    {
      "commit": "023533677989028d48f4e64dad0a5b3b4e59b726",
      "tree": "5c39e2f4d154ac5a78d1ee5af4bf0f7555bd0013",
      "parents": [
        "164f133d98fe2677546b870e9876a9b7ccbdac53"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri May 03 11:27:07 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 03 19:40:17 2019 +0000"
      },
      "message": "Check for null before using AddLocalReference in ti_method\n\nWe could incorrectly calling AddLocalReference with a null pointer\nduring the JVMTI GetLocalObject call. This would cause a check\nfailure because nulls are not allowed in the table.\n\nTest: ./test.py --host\nTest: Manual\nBug: 131856650\nChange-Id: Iabc283061c8f3ca8b3f7421ef9de83bb67605402\n"
    },
    {
      "commit": "a4cdd36ba332b63ccaae8416f68d3ac98d7dd68f",
      "tree": "7224dda71c3fd35959b0f968f5478af4f92a145d",
      "parents": [
        "4160c12d4e93dd7a9da68a82f63cff4c23fb5c17"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 18 09:17:10 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Apr 23 18:15:06 2019 +0000"
      },
      "message": "Prevent concurrent GC stack-walks during deoptimization\n\nWe could end up modifying the instrumentation stack at the same time\nthe GC or thread-flip stack walks are occurring. This could cause\ncrashes or check-failures as the stack is in an inconsistent state.\n\nTo fix this we changed the deoptimization process to block GC stack\nwalks.\n\nWe also standardized openjdkjvmti.so deoptimization to use a single\nentrypoint.\n\nBug: 72608560\nTest: ./test.py --host\nTest: ./tools/parallel_run.py\n\nChange-Id: I942ff891930d22a579345265897916cf84842a1c\n"
    },
    {
      "commit": "307b2846c69506836390e15c56547b9b5d55290d",
      "tree": "2c730cdbfd8d97214c172348c4cf6ecc06d04970",
      "parents": [
        "dc1dffc57539f7982abb470ca4e1bc6de82f0f3c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 11 16:13:04 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 12 05:11:01 2019 +0000"
      },
      "message": "Move on-load class modification log to VLOG(class_linker)\n\nWe would log on-load class modifications to LOG(WARNING). This could\nbe rather spammy. Change to VLOG(class_linker) instead.\n\nTest: ./test.py --host\nBug: 130372954\nChange-Id: I60742e6832fac99e33b0f3fa953460f5a1e5d5e8\n"
    },
    {
      "commit": "e7a33545a69fcfb3d4466e2ee2cba2a200ef990b",
      "tree": "00a3e61450c185e4730fbfbc60e74a7202babd33",
      "parents": [
        "66834468e9106e264a74766c17a0c047a3448921"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Apr 10 14:22:49 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 10 23:29:43 2019 +0000"
      },
      "message": "Handle methods being present in multiple threads correctly\n\nWe were incorrectly removing obsolete methods from the jit too early.\nThis could cause stack walking to fail on other threads that also have\nthe same method present. This changes so we will not notify the jit of\nobsoleted methods until we have walked all threads.\n\nTest: ./test.py --host\nBug: 73333076\nChange-Id: I30b1293eaf2dac7d4af858f77e5819af2d96b429\n"
    },
    {
      "commit": "66834468e9106e264a74766c17a0c047a3448921",
      "tree": "be827201de65b3dc888182c949ac580e084a0fb4",
      "parents": [
        "11d5a2507adf5a6d06adca5f18c399b826883182"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 08 16:28:29 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Apr 10 22:42:02 2019 +0000"
      },
      "message": "Revert^2 \"Perform SetEvent under the user_code_suspend_count_lock_\"\n\nIf we needed to condition-wait for a gc to finish we would trigger an\noverly restrictive deadlock check. This passed testing because\nnormally the Wait will not be executed. To prevent this type of issue\nfrom occuring in the future we added a way for code to assert that\ncondition-waiting is allowed without actually going to sleep.\n\nThis reverts commit eaa4831142fa58f176ddad52c0d5e9c288e26b81.\n\nReason for revert: Relaxed too-strict check in CheckSafeToWait.\n\nTest: ./test.py --host\nBug: 130150240\n\nChange-Id: I8359e595cdd73f49cb68c8c70d755cab0e563ac7\n"
    },
    {
      "commit": "679dec1c8ade054feea745cf31d0f4f9f9cb1d9b",
      "tree": "8434793b8a4bed850799c3b352c4c17b70c53a42",
      "parents": [
        "66a655029c98de9492570f4cfd06476c0fde9cd1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 08 16:30:14 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 09 18:37:42 2019 +0000"
      },
      "message": "Revert^2 \"Use RAII for preventing user-code suspensions\"\n\nThis reverts commit c723b81ea2c34b096c1a7ab88bce23c98f6419f5.\n\nReason for revert: Rebased without CL causing underlying issue.\nTest: ./test.py --host\nBug: 130150240\n\nChange-Id: I1a48138846a2b76de6f81bb3caca82c5e771712d\n"
    },
    {
      "commit": "eaa4831142fa58f176ddad52c0d5e9c288e26b81",
      "tree": "5aae9d939a3aeccd33dfb1f8e4b6df362fc15fdd",
      "parents": [
        "c723b81ea2c34b096c1a7ab88bce23c98f6419f5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 08 16:14:33 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 08 16:17:19 2019 +0000"
      },
      "message": "Revert \"Perform SetEvent under the user_code_suspend_count_lock_\"\n\nThis reverts commit 3fa8b6db7b556035f192d037b35210677250798e.\n\nBug: 130150240\nReason for revert: Causes lock-level violations on gcstress\n\nChange-Id: Ie580be5658da63f951652ba74cfbf25fa845765c\n"
    },
    {
      "commit": "c723b81ea2c34b096c1a7ab88bce23c98f6419f5",
      "tree": "c3d1dc0591110c8443f948aaade8f735a23ea907",
      "parents": [
        "d271809c58fa2c2d8021022b436f25e4d0b9acc1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 08 16:13:24 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 08 16:17:19 2019 +0000"
      },
      "message": "Revert \"Use RAII for preventing user-code suspensions\"\n\nThis reverts commit 9c8f34448e0e2b0b0b0094d75dadc3116f5610fa.\n\nBug: 130150240\nReason for revert: Parent causes lock-level violations in gcstress.\n\nChange-Id: I6c29a0d37a933ac37ab835e171750c2ae5ca0599\n"
    },
    {
      "commit": "9c8f34448e0e2b0b0b0094d75dadc3116f5610fa",
      "tree": "54cc8bd2990af9ca030fee3ec27e82181ef22067",
      "parents": [
        "3fa8b6db7b556035f192d037b35210677250798e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 04 15:01:42 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 04 15:11:15 2019 -0700"
      },
      "message": "Use RAII for preventing user-code suspensions\n\nIn some places we want to prevent a thread from being suspended by a\nkForUserCode suspension. Doing this requires gaining a lock,\nchecking our current suspension state and possibly retrying. To\nsimplify this we added a new RAII ScopedNoUserCodeSuspension\ncapability that does the needed checks.\n\nTest: ./test.py --host\nChange-Id: I48c08bc8f99b3574d241e7bfc6945b3358b6d082\n"
    },
    {
      "commit": "3fa8b6db7b556035f192d037b35210677250798e",
      "tree": "f8b19265c1b17506848c97d91ed6100971fe0f4b",
      "parents": [
        "4f215d1b1ceba9dfc8d8f3d8644da81302b2cd86"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Apr 03 17:00:02 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 04 20:01:24 2019 +0000"
      },
      "message": "Perform SetEvent under the user_code_suspend_count_lock_\n\nWe would perform major parts of SetEvent without any synchronization\nand perform multiple internal suspensions. This could lead to\ninconsistent state or deadlocks.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\n\nChange-Id: Ice2fc94b4f82fcd5938928e8dbf1bdddd29000ab\n"
    },
    {
      "commit": "f52d92fce224c86491d9b0fd6fca805564119426",
      "tree": "fbf38f272a980e965627918d9dc6bbb536395c00",
      "parents": [
        "e660f7232a19a2c173f562b8e0987755a78ee298"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 12:33:02 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 01 09:37:59 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify Monitor/-Pool.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 31113334\nChange-Id: I2d2ebc5ef56e73e5678e0cfcd84c479611dfcca8\n"
    },
    {
      "commit": "4617d5823c8e7841fed813b3b9c72664d7fd4dc6",
      "tree": "9eafbee06717e02a2c4acd5d7ce1e6601955356e",
      "parents": [
        "d7e9bbf092b5a61048358fd54183526ef12284af"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 13:48:31 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Object::As*(), fix stale refs in test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ia04c4996f5cbfa1f26acbadcd747342c57b1aac3\n"
    },
    {
      "commit": "bb206de72135271e66e58576b1196f3e08d5b6fd",
      "tree": "3ecbb781735b26d43628cf0f08673ce9908d69fd",
      "parents": [
        "5fdd1e84e0e3c4da0e6beac66a5cdd81c34bf399"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 10:30:32 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify ClassExt.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 31113334\nChange-Id: If5fe3b9f6e10549b5ca3f395b0c83531cd3ba7a3\n"
    },
    {
      "commit": "34857b5fd3be5ee8cf1935bd1fbaad37a8e42768",
      "tree": "eabdd26615030bde559d939eb861f02290851c9e",
      "parents": [
        "3b45890cf987c0b57965acd78958cd8eca487b8e"
      ],
      "author": {
        "name": "Koji Fukui",
        "email": "Koji.Fukui@sony.com",
        "time": "Wed Mar 20 19:13:00 2019 +0900"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 27 12:12:13 2019 +0000"
      },
      "message": "Revert \"Revert \"Change state to waiting during aborting the VM\"\"\n\nThis reverts commit ebb481d070e3fdbb7950580e6f6886c3231a1ad9.\n\nDex2oatWatchdogTest.TestWatchdogTrigger passed.\nApply the change again.\n\nTest: ART_HEAP_POISONING\u003dtrue make test-art-host-gtest-dex2oat_test64\nBug: 127875380\nChange-Id: If4326990cd612815ffe1511490712ca8babfec55\n"
    },
    {
      "commit": "423bebb17f15c3867a52315f0ae421f08f14544f",
      "tree": "97bdf50c7144ae21e6abfe8bdc26858a6a10f94d",
      "parents": [
        "93d99f3665cbd890509f4c707e1a62c5f26d320e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 15:17:21 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 09:45:20 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::ObjectArray.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I611b3e49d3feed306f6cd35d2b662a1e727e24c6\n"
    },
    {
      "commit": "c524e9e7e767be0801cf110310039635698c1532",
      "tree": "cd11699dce8c175a0940a583f5ea02ce89f73a85",
      "parents": [
        "2e1ec835d08ca0ab81b1c24436f659f952ace260"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 10:54:50 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 17:06:55 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Class.\n\nAnd move function definitions that rely on obj_ptr-inl.h\nfrom class.h to class-inl.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5ccc765d0a02b1d37cb39ed68c17b8456faf92ea\n"
    },
    {
      "commit": "6a399f3c462d84605d85f7f825c36d670c021acf",
      "tree": "4520947329cdeb4c21eef568d036a7b92a8fcfe2",
      "parents": [
        "d91de5ffa1bfb2a6f559c0536828b03839088949"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 10 16:31:55 2018 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 25 18:37:59 2019 +0000"
      },
      "message": "Allow jvmti Allocate \u0026 Deallocate function on unattached threads\n\nSome real-world agents will call the JVMTI Allocate and Deallocate\nfunctions on unattached threads and expect them to function correctly.\nWe change the error checking to allow them to be used in this way. This\nis to make it easier to debug possible issues with agents.\n\nTest: ./test.py --host -j50\nBug: 70918330\nChange-Id: If1796773b198d171284c3e02f38504bf094b9e0d\n"
    },
    {
      "commit": "ebb481d070e3fdbb7950580e6f6886c3231a1ad9",
      "tree": "af6986daab73dcd17dca5f4bab68024c12c40c83",
      "parents": [
        "a1e5b97b4bb4c47c2ab51d8a7d5dd1500d496c4d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 19 09:30:35 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 19 12:33:11 2019 +0000"
      },
      "message": "Revert \"Change state to waiting during aborting the VM\"\n\nThis reverts commit 97b964960123d5f215a1cebbce548c8a5322c307.\n\nBug: 127875380\n\nReason for revert: Broke Dex2oatWatchdogTest.TestWatchdogTrigger on host x86_64 and heap poisoning.\n\nChange-Id: Iaebfc4a03543bff4e7239d711dd7ad8c7f880d52\n"
    },
    {
      "commit": "97b964960123d5f215a1cebbce548c8a5322c307",
      "tree": "04239f8bc25ce6f22bda774bbae37755ed8acb27",
      "parents": [
        "26a5dd6fd1d65de29ba85e4bb61d9267dd428238"
      ],
      "author": {
        "name": "Koji Fukui",
        "email": "koji.fukui@sony.com",
        "time": "Tue Mar 05 12:22:57 2019 +0900"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 18 17:19:04 2019 +0000"
      },
      "message": "Change state to waiting during aborting the VM\n\nSymptom:\nProcess freeze when multiple runtime error happen on runnable threads.\n\nRoot cause:\nWhen multiple runtime error happen, only one thread locks abort_lock_\nand other threads are blocked even if they are runnable state.\nIf an other thread tries to suspend blocked threads at the same time,\nblocked threads can\u0027t be suspended until abort_lock_ is unlocked from\nowner thread. But owner thread can be suspended even if it locks\nabort_lock_. Thus, these threads causes dead lock.\n\nSolution:\nChange state to waiting when locking abort_lock_.\n\nBug: 127875380\nChange-Id: I7e914924690bb30d6d0490cf5f8afdb1c3cd4e4a\n"
    },
    {
      "commit": "a43ba3da86c046c545a988f3d40f53c24a525f83",
      "tree": "a66479561d9f14a9b19e31a9a6851f81ae50673c",
      "parents": [
        "e37b7915908dba10e90c39a3a82cb0cd1dc05f5c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 13 15:49:20 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 15 16:11:36 2019 +0000"
      },
      "message": "ART: Add ClassVerifier\n\nRemove class handling from MethodVerifier.\n\nTest: m test-art-host\nChange-Id: I0e125e0c8a852936ed7cff0f349a7fde97f62826\n"
    },
    {
      "commit": "b214694e13890559ae587263f93eb3cfdd63eaa1",
      "tree": "b74af3a4ef6b90f1e627ef97956caf2dcc502cd5",
      "parents": [
        "a5c3a808020d81447bc19d07a99288e9d28a6e6c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 12 15:46:40 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 14 22:36:28 2019 +0000"
      },
      "message": "Revert^4 \"Add extension and agent for dumping internal jvmti plugin data.\"\n\nThis reverts commit a55e8b5c9827cc4dc4e7f7c7ee07ef1fdafc35e0.\n\nReason for revert: Fixed underlying issue causing libjdwp test\n                   failure.\nTest: ./test.py --host\n\nChange-Id: Ibe831884192db42eb54b25364d31fa21f11fab26\n"
    },
    {
      "commit": "3dacdd6343ea9a6471692914c7a9dff66d6453c7",
      "tree": "5e0a3b8f99e914a7fbd49822e5c8fb1bd4709f5c",
      "parents": [
        "939798e6a565a92e597136c589428e89c28bffd5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 12 15:45:47 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 12 09:52:59 2019 -0700"
      },
      "message": "Revert^4 \"Remove Global deopt requirement for several jvmti events\"\n\nIt was possible for the top frame of a thread to enter the\nartQuickToInterpreterBridge during runtime shutdown. This could be\ncaused by the libjdwp agent. If this happens the caller of the frame\nwill be \u0027null\u0027, which could cause a segv if not detected correctly.\n\nThis reverts commit 939798e6a565a92e597136c589428e89c28bffd5.\n\nReason for revert: Fixed issue that could cause crash during process\n                   shutdown.\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./test.py --host\n\nChange-Id: I2aad1705c761edb4ed788cec4fc8a3068d67aee5\n"
    },
    {
      "commit": "939798e6a565a92e597136c589428e89c28bffd5",
      "tree": "3274ff355163df18cd2d7343ce0d34214f9d09c9",
      "parents": [
        "a55e8b5c9827cc4dc4e7f7c7ee07ef1fdafc35e0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 12 14:26:22 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 12 14:26:42 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Remove Global deopt requirement for several jvmti events\"\"\n\nThis reverts commit a75e5892fba6d0208f33e9ab8e19e732daf94996.\n\nReason for revert: Fails jdwp tests.\n\nChange-Id: Ic883f4f0108b07f1609c6c6a9565eae5903bfd2c\n"
    },
    {
      "commit": "a55e8b5c9827cc4dc4e7f7c7ee07ef1fdafc35e0",
      "tree": "48120329529bfa5e3e20c1726a513488f97c354e",
      "parents": [
        "403aafa9f286e13ee2a64748514d33af39b55ab0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 12 14:25:32 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 12 14:25:54 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Add extension and agent for dumping internal jvmti plugin data.\"\"\n\nThis reverts commit 2d8b8119228bbe4202490b1d5fed6191989d5d83.\n\nReason for revert: Fails jdwp tests.\n\nChange-Id: I0577fd82df161183ccd73eaf61cbe6bf871ef410\n"
    },
    {
      "commit": "2d8b8119228bbe4202490b1d5fed6191989d5d83",
      "tree": "8740119024f873d08d2fc57022d1f5455f1d9ff6",
      "parents": [
        "7cb707ffe41774150cd41283ebb6f9b3b86060ea"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 11 15:50:24 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 12 00:25:43 2019 +0000"
      },
      "message": "Revert^2 \"Add extension and agent for dumping internal jvmti plugin data.\"\n\nThis reverts commit 9da91d2ee78a32e4bfa5f402f23835652b87023e.\n\nReason for revert: Fixed issue with previous CL\nTest: ./test.py --host\n\nChange-Id: I02a2966439ac45b1843ea28e64b7b30f7282c794\n"
    },
    {
      "commit": "a75e5892fba6d0208f33e9ab8e19e732daf94996",
      "tree": "3daff8c3ce1608bacba7358711ccf9bd61c0bb05",
      "parents": [
        "dd83a40a3c4fea0d917577de96742900a61ab548"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 11 15:49:40 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 11 21:59:44 2019 +0000"
      },
      "message": "Revert^2 \"Remove Global deopt requirement for several jvmti events\"\n\nThis reverts commit ad344b6a14feba90a06a205760e9bc766c56cab0.\n\nJit-on-first-use would cause the runtime to skip sending FramePop\nevents for exceptions in some circumstances due to longjmp-ing over\nthe frames. This requires forcing jit off from the first instant a\nthread can get frame popped events, which is unfortunate.\n\nReason for revert: Fixed issue causing 1925 to fail on\n                   jit-on-first-use and redefine-stress\nTest: ./test.py --host\nTest: ./art/test/testrunner/run_build_test_target.py -j50 art-jit-on-first-use\n\nChange-Id: I6ec2a799db1041262a055be10e1af1faece6f2fc\n"
    },
    {
      "commit": "ad344b6a14feba90a06a205760e9bc766c56cab0",
      "tree": "47801fc5b432b0baf544bb8fd522a9fd3b567a7e",
      "parents": [
        "739383c80684eeb41d380ca5d18e1e9a1fe9fd7f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Mar 09 17:49:52 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Mar 09 21:13:15 2019 +0000"
      },
      "message": "Revert \"Remove Global deopt requirement for several jvmti events\"\n\nThis reverts commit 334630ee9dffdd1932c1ee641d938f25362a4c1a.\n\nReason for revert: 1924-frame-pop-toggle fails on some configs.\n\nChange-Id: I5ed3846e0dfff09c67a468f319ff516e14c44e61\n"
    },
    {
      "commit": "9da91d2ee78a32e4bfa5f402f23835652b87023e",
      "tree": "1af6a2653110ea818da6da7c7730d67ce2410888",
      "parents": [
        "35e6caa39e407af25a8ecbadc4994a4f17c639dc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Mar 09 17:51:26 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Mar 09 19:05:23 2019 +0000"
      },
      "message": "Revert \"Add extension and agent for dumping internal jvmti plugin data.\"\n\nThis reverts commit 60ee778ea7cff778f95fafe63138f336def9fb18.\n\nReason for revert: 1924-frame-pop-toggle fails on some configs.\n\nChange-Id: Ib8386f62d0eb43da7236e07b4b171914a523dce5\n"
    },
    {
      "commit": "60ee778ea7cff778f95fafe63138f336def9fb18",
      "tree": "4b7222ad056b0856c73a4fd65fe6f49d571062fa",
      "parents": [
        "334630ee9dffdd1932c1ee641d938f25362a4c1a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 05 13:32:49 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 08 04:07:45 2019 +0000"
      },
      "message": "Add extension and agent for dumping internal jvmti plugin data.\n\nWhen debugging openjdkjvmti plugin issues it can be useful to dump\ninternal state somewhere it can be examined. This adds a new extension\nmethod that will let agents get a view of the deopt state of the\nplugin and an agent that prints this information to LOG(INFO) on\nSIGQUIT.\n\nTest: ./test.py --host\nChange-Id: Ia265a5bcca31a2df5ac930ddc2ecffb57d3db911\n"
    },
    {
      "commit": "334630ee9dffdd1932c1ee641d938f25362a4c1a",
      "tree": "81957d634aa76967d97c89014eb69158682b0128",
      "parents": [
        "5b76c16cca1984209e838ada4d79e370d7fda431"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 04 15:08:04 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 08 04:07:45 2019 +0000"
      },
      "message": "Remove Global deopt requirement for several jvmti events\n\nThe JVMTI_EVENT_SINGLE_STEP, JVMTI_EVENT_FIELD_MODIFICATION,\nJVMTI_EVENT_METHOD_EXIT, JVMTI_EVENT_SINGLE_FIELD_ACCESS, and\nJVMTI_EVENT_FRAME_POP events would all deoptimize all threads in all\ncases when enabled. This changes the behavior to instead only\ndeoptimize individual threads when possible. This should make some\ndebugger interactions faster.\n\nTest: ./test.py --host -j72\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\n\nChange-Id: I42513cb17fd1144aeb03ca11afd3e3b05e918ce2\n"
    },
    {
      "commit": "e7e26d10a7a1446b42c00104b162bf07e7c01a04",
      "tree": "fb571d4903a499d9effae5940440af5159b8548e",
      "parents": [
        "815d5e5304a5b57db64d6829813a14e464d5c55f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Feb 28 15:04:14 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 05 15:17:01 2019 +0000"
      },
      "message": "Assign non-runtime /apex/* dex files to platform domain\n\nUntil now only /system/framework and /apex/com.android.runtime were\nknown locations, assigning \"platform\" domain to the former and\n\"core-platform\" domain to the latter. The media and conscrypt modules\nwere left in the \"application\" domain.\n\nThis patch adds a hardcoded path to the apex root and assigns all dex\nfiles in subdirectories to the \"platform\" domain. This affects both\nconscrypt and media modules.\n\nAny other dex files on boot classpath are also assigned to \"platform\"\non first access. A warning is printed in such case and it is now deduped\nto avoid logspam.\n\nBug: 125701194\nBug: 119068555\nTest: compiles, boots, no conscrypt/media warnings about missing domain\nTest: art/test.py -b -r -t 674\nChange-Id: I33bef18459741095d3d99b541fc88b21cf547800\n"
    },
    {
      "commit": "e0b2ce413367c9266e9b0657a0505c1ef776b7ae",
      "tree": "ea17b0478011d74009177bf9cf568718b3482777",
      "parents": [
        "77182cd0f4527538df832eddbc775391c283cffb"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 21 19:23:42 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 22 08:56:22 2019 -0800"
      },
      "message": "Revert^2 \"Prevent agents from delaying system daemon threads\"\n\nIt looks like there might be a race between DetachCurrentThread and\nruntime shutdown that the original CL exposed with test 1919. I\u0027m not\nsure why this test exposed this issue, possibly it\u0027s due to the\nremoval of the Daemon events making the test faster, thus more likely\nto get to runtime-shutdown without the testing thread having fully\ndetached.\n\nThis reverts commit c08c10713e8884e8adfbf6a8e370a9ec96c1883f.\n\nReason for revert: (Hopefully) made test 1919 resistant to the flake\n                   it was experiencing.\nTest: ./test.py --host --ndebug -j80\n\nBug: 123696564\nBug: 124284724\n\nChange-Id: I2e58a71aa174f6b89e57c31378b0fe5bb41a8844\n"
    },
    {
      "commit": "5c8b35109f28e95dfd56dd9da4a90eb1d6ad9d09",
      "tree": "b3311c0318b5c90bbd8632f8937a4e6f91f13407",
      "parents": [
        "e57087025bb462f875c1fb0574eefba92f29ff20",
        "c08c10713e8884e8adfbf6a8e370a9ec96c1883f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 21 14:27:30 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 21 14:27:30 2019 +0000"
      },
      "message": "Merge \"Revert \"Prevent agents from delaying system daemon threads\"\""
    },
    {
      "commit": "c08c10713e8884e8adfbf6a8e370a9ec96c1883f",
      "tree": "84dc682b40f38d0377639befe6f3d43e5655a43c",
      "parents": [
        "3611fdf703a6417c08a2e3d6e642d5936318de18"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 21 10:15:28 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 21 10:15:28 2019 +0000"
      },
      "message": "Revert \"Prevent agents from delaying system daemon threads\"\n\nThis reverts commit 3611fdf703a6417c08a2e3d6e642d5936318de18.\n\nBug: 123696564\nBug: 124284724\nReason for revert: b/124284724\n\nChange-Id: I546758b4cbb5e3f62f7b66a2faed544abce0d9c2\n"
    },
    {
      "commit": "b4d69e67a1fe91e2212a4714c5f6763ed574416f",
      "tree": "f0651ffa8a45ff51eac79e4db70a9506a7ebea88",
      "parents": [
        "fd14d4818272b5ca733a50b9db2a344926172c42",
        "d902558e31a0095770778ce9d9ad19ac9a2c4f9f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 14 20:21:52 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 14 20:21:52 2019 +0000"
      },
      "message": "Merge changes I11859ee8,Id17d1c87\n\n* changes:\n  ObjPtr-ify the jvmti tagging system.\n  Fix 905 flake on low mem.\n"
    },
    {
      "commit": "fd14d4818272b5ca733a50b9db2a344926172c42",
      "tree": "2a7867de0a81ac3ac36b0c38fc1c6d39c06b5cf2",
      "parents": [
        "71faa00a313d1375174d71a865ee3dd6771ae430",
        "413a8add7bdbf594122c1a2b3751eb798ce71cd7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 14 20:02:55 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 14 20:02:55 2019 +0000"
      },
      "message": "Merge \"Check jclasses are actually classes in ti_redefine.\""
    },
    {
      "commit": "413a8add7bdbf594122c1a2b3751eb798ce71cd7",
      "tree": "a6b85afab0927ae7e5fa947048e70c828169fd25",
      "parents": [
        "794350fd0e21aa9e259b6c45394494871e7fdb13"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 14 10:19:44 2019 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 14 10:20:36 2019 -0800"
      },
      "message": "Check jclasses are actually classes in ti_redefine.\n\nThere were a few places where we decoded jclasses and cast them to\nmirror::Class without actually checking that they are classes first.\nThis makes us correctly return an INVALID_CLASS error if a non-class\njobject is given.\n\nTest: ./test.py --host -j80\n\nChange-Id: I4cee80726409019ff174333b59a5e4395c069ff6\n"
    },
    {
      "commit": "d902558e31a0095770778ce9d9ad19ac9a2c4f9f",
      "tree": "0c0ec46ca5e06f9887a6d7a673509d359f015a0b",
      "parents": [
        "35a760d5e5879d50cd2d36e3d6286fe6c12888aa"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 13 16:33:14 2019 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 14 10:09:19 2019 -0800"
      },
      "message": "ObjPtr-ify the jvmti tagging system.\n\nThere\u0027s no reason for this to use raw pointers.\n\nTest: ./test/testrunner/testrunner.py --host -j80\nChange-Id: I11859ee86dbfd88c0428d6725aae3545a3fcef67\n"
    },
    {
      "commit": "3611fdf703a6417c08a2e3d6e642d5936318de18",
      "tree": "ef152ff80f42b6486e5a02eee3fb7a02fbef15e7",
      "parents": [
        "794350fd0e21aa9e259b6c45394494871e7fdb13"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 06 15:10:58 2019 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 11 11:03:22 2019 -0800"
      },
      "message": "Prevent agents from delaying system daemon threads\n\nThe runtime starts several important daemon threads that are\nresponsible for various GC related tasks (i.e. FinalizerDaemon, etc).\nThe runtime cannot be considered fully started until these threads\nhave been started or will be started soon.\n\nIt was possible for agents to delay the startup of these daemons\narbitrarily (while calling arbitrary java code) by never leaving the\nVMInit event or by never returning from the daemons ThreadStart\nevents. This could cause deadlocks or other errors when using some\nagents, such as libjdwp.\n\nIn order to prevent these issues and more closely match other java\nlanguage runtimes we launch these threads before sending the VMInit\nevent and suppress their ThreadStart events. The openjdkjvmti plugin\nthen waits for the Daemon threads to actually begin executing before\ncalling the VMInit event or any other agent code. This prevents the\nagents from seeing threads appear from nowhere.\n\nBug: 123696564\nTest: while atest CtsJdwpTestCases; do; done;\n\nChange-Id: I7e07187f3e8670f32df0490cb419585c13d81765\n"
    },
    {
      "commit": "2ef01100bb56b3f8ab5fbc886a7066d721290d74",
      "tree": "a60e1265e2b1e733832047417e93a9c3ae1e6165",
      "parents": [
        "eb37ba594146338bf7e7e2bf3769d08046fb263f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 05 15:05:10 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 14:05:12 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in HashSet.\n\nUpdate HashSet comment and related code. Also remove dead\nCompilerOptions declarations with StringPiece parameters.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I4a39d0e8e0392a414129369c5b304ec4813e9ed5\n"
    },
    {
      "commit": "eb37ba594146338bf7e7e2bf3769d08046fb263f",
      "tree": "7fac104aed3aec8d8390c8cbe1f7fbd85b4f998a",
      "parents": [
        "e027d727b833930f1bd0029bc1b2cf750d8af5da"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 05 14:10:38 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 12:24:10 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in Signature.\n\nAnd also in Signature-related code. Remove the function\nDexFile::CreateSignature() which was used only in a test\nas the test can use method searching functions that take\nstd::string_view instead.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I3f24c8f4f677e2e40503dbab347df1eb031b4132\n"
    },
    {
      "commit": "16fc474a8ce9acf1b902dfcc57d061366b02777e",
      "tree": "59cf113a930c81740b9feb484947e9fc692176ea",
      "parents": [
        "6d55d3991217f1fb931f8a6bbf12a00f8974abe0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 30 16:53:24 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 31 14:00:14 2019 +0000"
      },
      "message": "Special case dex files that have hidden API data.\n\nRevert of 5462920633c948669dc6e28c61ef92cfeb0cce2b.\n\nDexlayout can increase the size of a dex file, so overestimate the\nsize needed when we know we\u0027re going to run dexlayout on it.\n\nBug: 123474797\n\nTest: CtsJvmtiRunTest983HostTestCases\nTest: art/test/run-test --always-clean  --host --prebuild --compact-dex-level fast --optimizing --no-relocate --runtime-option -Xcheck:jni --debuggable --jvmti-redefine-stress --64  980-redefine-object\nChange-Id: Iea3d38a7f3a55d9a694b95687fb333f680f8106b\n"
    },
    {
      "commit": "5462920633c948669dc6e28c61ef92cfeb0cce2b",
      "tree": "f6ac5e467501bfcc772c62877006e3d5f3bab811",
      "parents": [
        "0032712c0258346e0af734ecd2ae149ab97b3c0d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 29 18:10:18 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 29 18:10:18 2019 +0000"
      },
      "message": "Special case boot dex files in FixedUpDexFile::Create.\n\nDoing a raw copy doesn\u0027t work on boot classpath dex files as\nthey contain hidden API flags. So instead run dexlayout on them,\nwhich as a side effect will remove the hidden API information.\n\nBug: 123474797\nTest: CtsJvmtiRunTest983HostTestCases\nChange-Id: I327662ad96fc8bce1cf68ce26980b9a1887760e6\n"
    },
    {
      "commit": "e7681823f8259c8c04ce0c361746216606784e69",
      "tree": "8bd248fc6be126d7d4e55bb4072ed24b2851ebbd",
      "parents": [
        "90faceb71e25748172ba6369209f8a2a66735394"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Dec 14 16:25:33 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 21 10:22:27 2019 +0000"
      },
      "message": "hiddenapi: Print warnings for @CorePlatformApi violations\n\nWhen accessing a method/field at runtime, determine the context of both\nthe caller and the callee, and add new logic for the case\n\"platform -\u003e core-platform\" which used to be always allowed.\n\nIf the callee is marked with kAccCorePlatformApi, access is allowed.\nIf not, a warning is printed into logcat.\n\nBug: 119068555\nTest: 674-hiddenapi\nChange-Id: I64839596bf6eb06d7a169fd59b18fd82c140ce6e\n"
    },
    {
      "commit": "8f1c8e56a683ff9d77ec1d1ac7f3d81458047714",
      "tree": "10c19d1403361bf499a576000135aaf2a692dd05",
      "parents": [
        "181b831d1a215504a80b5c7508fc2c6e1acac40c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 08 10:34:16 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 17 17:13:51 2019 +0000"
      },
      "message": "ART: Some more iwyu\n\nBug: 119869270\nTest: mmma art\nChange-Id: Ie67b57c7173986009fdc7b4aa01563846d30f25f\n"
    },
    {
      "commit": "2d22ffce2b2b97a323ea09ec3f5015fb256ec57f",
      "tree": "658555def3f25508bd6b3777f712ca281e86a12b",
      "parents": [
        "fe2886de2a9f06f286fe905ce8417981b9089c5c",
        "e5d2398fa5be5effbc552b244387119dc53a9671"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 10 18:10:18 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 10 18:10:18 2019 +0000"
      },
      "message": "Merge \"ART: Forward-declare Context\""
    },
    {
      "commit": "fe2886de2a9f06f286fe905ce8417981b9089c5c",
      "tree": "060025813c4ab6d3bfd98aaafa54a97be342a0c0",
      "parents": [
        "d7d3f6fa1870b9e9b8f58ab7854e5eeee071ba2e",
        "226805d9b81ba442251d0e2c4baedc36fcda6592"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 10 14:22:23 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 10 14:22:23 2019 +0000"
      },
      "message": "Merge \"Deoptimize zygote compiled methods in DeoptimizeBootImage.\""
    },
    {
      "commit": "e5d2398fa5be5effbc552b244387119dc53a9671",
      "tree": "f32b3f3d67c469d9bdc83961ef9c4d863c351f0a",
      "parents": [
        "639b2b1f3a675135d443fc380323fbc48639a7eb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 08 10:34:26 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:30 2019 -0800"
      },
      "message": "ART: Forward-declare Context\n\nMove deletion to thread.cc, which allows to forward-declare\nContext.\n\nBug: 119869270\nTest: mmma art\nChange-Id: Ifd9006cd3457d4ab708a289a7f6e1cdf2591c596\n"
    },
    {
      "commit": "ad1aa6340567c0660506069d760ff41483eb3821",
      "tree": "dbceabc90859e9353a8683d8be02a702205be9c9",
      "parents": [
        "b8bca301eff0db87d37bc4ab898a4973d211019b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:30:54 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 09:19:10 2019 -0800"
      },
      "message": "ART: Move Signature to its own header\n\nReduce the dependencies on dex_file.h\n\nBug: 119869270\nTest: mmma art\nChange-Id: I1450fe2c3f4a7f5b535ed38cc19cb8a053228541\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "226805d9b81ba442251d0e2c4baedc36fcda6592",
      "tree": "3a256b1d36894d8d43ec9650f2a3f55c90c4730c",
      "parents": [
        "96453b7d6aa445c6609aa465df5d66ae0beb7956"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 14 10:59:02 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 19 09:22:01 2018 +0000"
      },
      "message": "Deoptimize zygote compiled methods in DeoptimizeBootImage.\n\nThose methods don\u0027t get compiled with the \"debuggable\" flag,\nso we need to deoptimize them.\n\nAlso fix a bug revealed by the new test where a concurrent\nJIT collection happens when trying to disable it.\n\nAlso make DeoptimizeBootImage truly mutator lock exclusive.\n\nTest: 689-zygote-jit-deopt\nChange-Id: I00607dbe100350c5328293c35c87946fa97924b8\n"
    },
    {
      "commit": "274ed2ea9d496f75030f849c4259b35ecb4d35c1",
      "tree": "6a371c40b6f754db7687aceb538f81f85871373f",
      "parents": [
        "18851145160a85f028432c07247485250167b155",
        "c6068c7f07785f326090f2c3dc0d5679adbfcc69"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 05 16:48:51 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 05 16:48:51 2018 +0000"
      },
      "message": "Merge \"Parallel image decompression\""
    },
    {
      "commit": "c6068c7f07785f326090f2c3dc0d5679adbfcc69",
      "tree": "e0d729e4c73cecb87413341a7c6f3fd0ce876cf5",
      "parents": [
        "ee45798b02c3a9fffa9c4b5c1fe0fe03a423df66"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 13 16:00:58 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 04 14:08:55 2018 -0800"
      },
      "message": "Parallel image decompression\n\nAdd a runtime thread pool to facilitate parallel app image loading.\n\nUse the thread pool to decompress the image, this results in a ~1%\napp startup speedup.\n\nTest: test-art-host\nTest: manual\nBug: 116052292\n\nChange-Id: If35f71ff632ac58e67d11eed4b5f5b19656cc301\n"
    },
    {
      "commit": "1a6586327d9de6374f9e7ca98d071f2943b03c99",
      "tree": "1d118af8f32855ef0036080d5e8a560f14e5e482",
      "parents": [
        "d378a567a435a80be9ab7eb8bfe0359c1240c0ff"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Dec 01 17:54:26 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 03 20:19:40 2018 +0000"
      },
      "message": "Keep pointer to original DexFile during JVMTI redefine for hiddenapi\n\nJVMTI redefine overwrites the pointer to the class\u0027 DexFile which\nprevents access checks from reading the hiddenapi flags store. Store\nthe pointer in ClassExt together with the original ClassDef index\nto preserve the access to flags store. Because method/field indices\nare still lost, the corresponding dex member is found using string\ncomparison of member\u0027s name and type.\n\nBug: 119688837\nTest: 999-redefine-hiddenapi\nChange-Id: Ifdf35668e838869a971233bbaae61851014658b1\n"
    },
    {
      "commit": "c1896c9a0e15df3a1b9a3a19bcd2a933b654fe06",
      "tree": "b68a5f5163f8da0da87d671a225addaa2a13095f",
      "parents": [
        "f2970cd870948a6ee1c8ecd30c9c3147d05aa0be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "message": "C++17 compatibility: make WITH_TIDY\u003d1 happy again.\n\nBug: http://b/111067277\nTest: builds\nChange-Id: I8b69ea3815e14bb6eb27f40c0dd01a85b340a355\n"
    },
    {
      "commit": "2025488b81ac0cfa9af5cfd10c7f8a45c215d9a3",
      "tree": "101d49fadb624ee8b5a22a1866b0f319dfea8fc0",
      "parents": [
        "ef6b2aa28fec148d3fe635a34260fde8c89622c7",
        "85f1c576d228c2c43e9a0dc37f0cbb91fad59c45"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 28 18:37:15 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 28 18:37:15 2018 +0000"
      },
      "message": "Merge \"ART: Some iwyu for logging.h\""
    },
    {
      "commit": "ef6b2aa28fec148d3fe635a34260fde8c89622c7",
      "tree": "c00a942a4af6eab805e78b26ce779b23166e1212",
      "parents": [
        "8f50b2c27f9b32726bbadfcebba910640b94036e",
        "c7d878d4be3f0971d4b86266308c7540a26c2856"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 28 16:43:42 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 28 16:43:42 2018 +0000"
      },
      "message": "Merge \"Revert^4 \"ART: Add StackVisitor accepting a lambda\"\""
    },
    {
      "commit": "85f1c576d228c2c43e9a0dc37f0cbb91fad59c45",
      "tree": "67d17ea5a7eb6021dabb335730402bd28d72694a",
      "parents": [
        "79c693b3133da397cec7eaff19de631b65a0cf70"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 21 13:52:48 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 21 15:22:07 2018 -0800"
      },
      "message": "ART: Some iwyu for logging.h\n\nRemove over-broad use in headers. Fix up transitive includes.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I518fa7c8bee014b260818fca1fbde6ec47d126da\n"
    },
    {
      "commit": "a8f91395f9a2ee9d975a83178abaac9af34969ab",
      "tree": "426b52d77898b6a3cd34b0f1b0a431343e92e2be",
      "parents": [
        "2a487eb89b67d7ff030368e4e4a6ed0a3ac39003"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 11:52:24 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 20 13:04:36 2018 -0800"
      },
      "message": "ART: Fix clang-analyzer-security.insecureAPI.strcpy\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: I08ef95679230be1cfd23037c15714e2720be358f\n"
    },
    {
      "commit": "c7d878d4be3f0971d4b86266308c7540a26c2856",
      "tree": "041a6d897df81ae64f25c211f16e8640959a35f5",
      "parents": [
        "d295a75d952742604eaae0530daea19dd6fd782c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 18:42:06 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 17:09:07 2018 -0800"
      },
      "message": "Revert^4 \"ART: Add StackVisitor accepting a lambda\"\n\nThis reverts commit ec43a01e0ac948c59d5b1f9c3812f2901b48942a.\n\nReason for revert: Added missing code.\n\nBug: 115837065\nTest: m test-art-host\nChange-Id: Id30ccdf9aa9a6e56a914254793e399f2712c882d\n"
    },
    {
      "commit": "ec43a01e0ac948c59d5b1f9c3812f2901b48942a",
      "tree": "57e1a23dcc0beba8e98841b8cf063f6153b08c9b",
      "parents": [
        "3d477f3a3eea757a49ca621cc579f711f22fccdd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Nov 17 13:10:40 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Nov 17 13:10:40 2018 +0000"
      },
      "message": "Revert \"Revert^2 \"ART: Add StackVisitor accepting a lambda\"\"\n\nThis reverts commit 3d477f3a3eea757a49ca621cc579f711f22fccdd.\n\nBug: 115837065\n\nReason for revert: Breaks jdwp tests.\n\nChange-Id: I09249331798970751a20c6b41675c3efef72adfb\n"
    },
    {
      "commit": "3d477f3a3eea757a49ca621cc579f711f22fccdd",
      "tree": "b4b402d0181610c62062c8c597ef30ee2840b6b1",
      "parents": [
        "54c7da9c50ee85ade636605cd6ea18b4c2bc69fa"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 16:40:45 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 10:13:38 2018 -0800"
      },
      "message": "Revert^2 \"ART: Add StackVisitor accepting a lambda\"\n\nThis reverts commit 8248490f24e8582ce2ead8cd878d8a2c38310a48.\n\nReason for revert: Fixed instrumentation.cc\n\nBug: 115837065\nTest: m test-art-host\nChange-Id: I484833f4712c835fcaf3452dca4cae5b031d5a7d\n"
    },
    {
      "commit": "85865697ff9fabede3d64ff64cde72727c3fc4c1",
      "tree": "0c67639c4c286149fa3f06f5f412683e39014790",
      "parents": [
        "b321ac28f726a7ed41f277382d85702ffdfbe00f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 30 17:26:20 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 16 11:11:20 2018 +0000"
      },
      "message": "Runtime flags only for fast/slow hiddenapi path\n\nWith more flags being supported in the dex file, stop copying all of\nthem into ArtField/ArtMethod access flags. Instead, store the\ninformation needed to figure out whether to enter the slow path and\nretrieve full access flags from dex or not.\n\nAt the moment, the only runtime flag is kAccPublicApi assigned to all\nclass members on the whitelist.\n\nThe CL also moves hardcoded API membership of intrinsics out of\nArtMethod and into hidden_api.h, and moves ArtMethod::SetIntrinsic\ninto the .cc file.\n\nTest: m test-art\nChange-Id: Ia1cc05060dbc22341768161dfd8697c6158e803a\n"
    },
    {
      "commit": "c980df6125e53bbf8e5e7e8eecb3f9b0125bae5e",
      "tree": "966f80eb3959b94a5508525b0726e05f53ac7286",
      "parents": [
        "3d719ed950772e1ec70fe082863e907d5acd3fcf",
        "8248490f24e8582ce2ead8cd878d8a2c38310a48"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 01:18:34 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 16 01:18:34 2018 +0000"
      },
      "message": "Merge \"Revert \"ART: Add StackVisitor accepting a lambda\"\""
    },
    {
      "commit": "8248490f24e8582ce2ead8cd878d8a2c38310a48",
      "tree": "f542af6560561526fc413e361e3323a615b5429c",
      "parents": [
        "36f8d22c672498753b9edc66ba11acc9816b2a17"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 00:47:49 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 00:47:49 2018 +0000"
      },
      "message": "Revert \"ART: Add StackVisitor accepting a lambda\"\n\nThis reverts commit 36f8d22c672498753b9edc66ba11acc9816b2a17.\n\nReason for revert: Seems to be breaking test 687\n\nBug: 115837065\nChange-Id: I83bb1a9d76cc701c3d582778e5047ebd5dab5d29\nTest: TreeHugger\n"
    },
    {
      "commit": "e09485f761220ff16129d25b773ab968d3c2d76b",
      "tree": "87f93a1c3e2d2c7805859231c9cb7dd92a778bba",
      "parents": [
        "9e70fafa9ca3bf055fe1e9d8cba4ddb4ee090776",
        "36f8d22c672498753b9edc66ba11acc9816b2a17"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 15 21:44:18 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 15 21:44:18 2018 +0000"
      },
      "message": "Merge \"ART: Add StackVisitor accepting a lambda\""
    },
    {
      "commit": "c6bd42aa7e0ad6f394a55c4d972570b441574e85",
      "tree": "8846b34564a4b551ea467d8af24db13c28071b9e",
      "parents": [
        "83e2049b2ac8de0adac04a9a4229dbec7909df1e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 07 13:39:41 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 13 10:23:16 2018 -0800"
      },
      "message": "ART: Fix deopt manager JIT attempt\n\nIf the JIT is supposed to be started, a code cache needs to\nbe created first.\n\nBug: 119063276\nTest: m test-art-host\nTest: device boots\nChange-Id: Iefe0f159e4d75a2c534f703279b406ad6f0b5876\n"
    },
    {
      "commit": "5cc0e75552b379e051168d832474f4d3989e9f74",
      "tree": "c06f4bdb02252442fe68c2e978106862a0f93a1c",
      "parents": [
        "a344b8c25a98471d99632a28530b03ed770f8e2e"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Fri Nov 09 12:30:46 2018 -0800"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Mon Nov 12 17:32:59 2018 +0000"
      },
      "message": "Emit JVMTI events for LockSupport.park\n\nThis restores the behavior from when park was implemented with\nwait/notify, except that the blocker object is used as the monitor\nrather than the Thread that is parking.\n\nBug: 28845097\nTested: ./test/run-test --jvm 1931\n\nChange-Id: I523d719ca3e49a538c06f48f032b322fb91e147e\n"
    },
    {
      "commit": "36f8d22c672498753b9edc66ba11acc9816b2a17",
      "tree": "7a7195bf16db14d7f56f94a4d6421f6837b2f686",
      "parents": [
        "a53da8f8170ddaff3e4160641938ba1b7806202c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 08 08:13:42 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 02 16:01:30 2018 -0700"
      },
      "message": "ART: Add StackVisitor accepting a lambda\n\nTo simplify implementation of visitors. Rewrite some\nvisitors.\n\nBug: 115837065\nTest: mmma art\nTest: m test-art-host\nChange-Id: I04172d7626b702c1d69c63eba65526378935a25d\n"
    },
    {
      "commit": "0ee508253edcdee41a80fcbf1511234ca176233d",
      "tree": "4c1471226b650c30a21aabb525392c2cebfa337a",
      "parents": [
        "eead626e0567d11ed0402e9586a99ca4a1d023eb",
        "1130659b0d948806e7ca974ead8ad2bcc1951d13"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 30 15:27:28 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 15:27:28 2018 +0000"
      },
      "message": "Merge \"Refactor MemMap::MapAnonymous().\""
    },
    {
      "commit": "1130659b0d948806e7ca974ead8ad2bcc1951d13",
      "tree": "9046a016fafc7f9bff4e34732aa8f89ed81ad46c",
      "parents": [
        "1c1442a498fd3f9ddc5d2bb04baa7ccd2d3539c4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 26 14:22:59 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 30 10:20:32 2018 +0000"
      },
      "message": "Refactor MemMap::MapAnonymous().\n\nRemove the address argument from the shortcut overload and\nintroduce one more shortcut overload. This makes it easier\nto find all uses where we pass non-null address hint.\n\nRemove `requested_begin` parameter from some constructors\nwhere we were always passing null. Rewrite some tests to\nuse the reservation API.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 118408378\nChange-Id: Ibbbb96667e7cc11cf7fea119892463d8dbc9a8b5\n"
    },
    {
      "commit": "f82eb6e0309a138ea11e309ad125675efc44125b",
      "tree": "6a66d8dc3262e963ac5559721a231df4ea1103d7",
      "parents": [
        "dc0156dd2e76d518bf1432ae95785ddff9144b78",
        "20c765f645fa9be77e045463c5064d41211a2815"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 30 10:02:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 10:02:20 2018 +0000"
      },
      "message": "Merge \"Revert^4: Add dex item for hiddenapi flags\""
    },
    {
      "commit": "a63dc15dfa15fb486b40b0702a5608a4f1e9b6b1",
      "tree": "d9c53aa85a356ff5f91d782b29d6febac3537331",
      "parents": [
        "e8d4509d83929244507eec499c99b0374bcb7555",
        "c57c680b16eb4857eef16134a811f4c2ff9d95f0"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Tue Oct 30 01:00:26 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 01:00:26 2018 +0000"
      },
      "message": "Merge \"Modernise code to use std::make_unique\""
    },
    {
      "commit": "c57c680b16eb4857eef16134a811f4c2ff9d95f0",
      "tree": "9527328cb8738878e1b727a48620769224dddb2c",
      "parents": [
        "ce2a00daa92670a4fc01ef59fdbc3769a846f69c"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Mon Oct 29 14:28:56 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Mon Oct 29 14:39:24 2018 -0700"
      },
      "message": "Modernise code to use std::make_unique\n\nGenerated by clang-tidy.\n\nTest: m checkbuild\nChange-Id: Idb24960d9326c0d94ab5d04b18deb0894d23da9f\n"
    },
    {
      "commit": "e15b9b189a0898b5554002d9c86da7c17f2eb7ae",
      "tree": "b9d484bb6aed03f8d1435d52c6ae1cfbf3702368",
      "parents": [
        "72d3493a6b9fde2fc3c1abb9ee6afff4451ec291"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 29 12:54:27 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 29 13:05:18 2018 -0700"
      },
      "message": "ART: Do some include-what-you-use\n\nHelp with transitive includes. In preparation for new\nspecialized headers reducing transitivity.\n\nBug: 118385392\nTest: mmma art\nChange-Id: Ie79afda4e09191428c2b4c2f20a7e3352c01c1e9\n"
    }
  ],
  "next": "20c765f645fa9be77e045463c5064d41211a2815"
}
