)]}'
{
  "log": [
    {
      "commit": "9c7b4f1f50cfecc8ac8a8db27ab3434384ec5fab",
      "tree": "7b7091cc6705fec1cafeb93f551b2fb9d8936c14",
      "parents": [
        "55cc5868ec31b2b71f3d69ed6283e5f75c065d99"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 03 15:22:59 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 05 12:36:48 2020 +0000"
      },
      "message": "Remove obsolete saved_entry_point field in ProfilingInfo.\n\nIt was used for doing GC of jit code, but we are now relying on baseline\nfor giving that information.\n\nBug: 112676029\nTest: test.py\nChange-Id: Icb7c7b6adfe77a30500d53505b391b9d3aad19e6\n"
    },
    {
      "commit": "1a277a6e5d5152b4fe4dd5717432ecf8941ec820",
      "tree": "1b7846a0ef94062ce9883a36104f32f829f0a735",
      "parents": [
        "89992b8bbdf2d6d3c3da6a029e184c5d59eb505c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 31 16:07:17 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 03 09:58:44 2020 +0000"
      },
      "message": "Move mterp and switch interpreter to tiered JIT.\n\nThis is an intermediate step to move ProfilingInfo usage only within the\nbaseline compiler.\n\nIt also makes the system consistent with all intepreters now going to\nbaseline compilation before optimized.\n\nBug: 112676029\nTest: test.py\nChange-Id: I8505ca46ede9095683ac3f5f86f0c70335bed633\n"
    },
    {
      "commit": "346fd964a826cfb5626582452b7519c04aee2f8a",
      "tree": "49fb6cf2ab865391ba4027389b0049474df38c7b",
      "parents": [
        "d3ee902ed06b635eedebc796543a67299eb6cd05"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 27 16:51:00 2020 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jul 28 11:13:37 2020 +0000"
      },
      "message": "More inclusive language in the runtime\n\nTest: m\nBug: 161896447\nBug: 161850439\nBug: 161336379\nChange-Id: Iabc29fa43b4b5a403699d6bca95e9a2cb8945d77\n"
    },
    {
      "commit": "7e678d3c0f564e44638e27c411b2cc0ef8ee145a",
      "tree": "82789a1653ecfaabea517a56c2cba4fd59ca9203",
      "parents": [
        "bb3560d58538d7172b058853d471a876ddd86467"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Apr 28 16:17:49 2020 -0700"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Apr 30 20:22:39 2020 +0000"
      },
      "message": "Assert allocator-type is known on OOME\n\nWe should always be using a known allocator-type. So instead of being\nconditional about this, assert it.\n\nThis change also simplifies updation of alloc entrypoints for CC\ncollector. Earlier we used to choose TLAB allocator on x86_64 targets\nto avoid a read-barrier in allocation path. Now that it\u0027s not there, we\ncan simplify to always use RegionTLAB allocator for CC.\n\nTest: art/test/testrunner/testrunner.py -t 004-ThreadStress\nBug: 154100060\nChange-Id: Ic692794c3dab80a67c2c4b3274adf00f879ad21b\n"
    },
    {
      "commit": "e91e795a77b96d58276f75b1b244a5509ef8c215",
      "tree": "d34f8164bb7adb8ed46e3c989877012555e194c3",
      "parents": [
        "aa6f6f1c86705fe3cedf929bd30d1e6f51524594"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 23 10:15:56 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 31 08:20:57 2020 +0000"
      },
      "message": "Replace instrumention id with stack pointers.\n\nReplace instrumentation ids for instrumentation frames, which are\ninherently broken (see b/72608560), and use stack addresses instead\nto properly identify which frames to pop / unwind.\n\nBug: 72608560\nBug: 148166031\n\nTest: ./art/test/testrunner/testrunner.py --trace --debuggable --ndebuggable --optimizing --interpreter --jit --debug --ndebug -j32\nTest: run-libjdwp-tests.sh\nTest: 2011-stack-walk-concurrent-instrument\nTest: ./art/test/run-test --host --dev --runtime-option -verbose:deopt,plugin --prebuild --compact-dex-level fast --jit --no-relocate --create-runner --runtime-option -Xcheck:jni 1965-get-set-local-primitive-no-tables\n      art/tools/parallel_run.py -j80 /tmp/path/to/runit.sh --out failure.txt\n\nChange-Id: I71f6e55b9da608796cd3142b147f7b50bbd292ec\n"
    },
    {
      "commit": "e0c6d439271c94feb3fb38728d1b4743a7ed0b9e",
      "tree": "c7f9176cacb9e362d0dd3bbeabeca8b42e42d184",
      "parents": [
        "721e40283793649b4750c05da4fe972bd372f7f9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 22 22:04:20 2020 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 22 22:04:20 2020 +0000"
      },
      "message": "Revert \"Fix stack-walking race\"\n\nThis reverts commit 721e40283793649b4750c05da4fe972bd372f7f9.\n\nReason for revert: Wanted more discussion.\n\nTest: none\n\nBug: 72608560\nBug: 29259363\nBug: 148166031\nChange-Id: Id0fb201018a0d0bdca11d51ec156a41d6d7fe4ae\n"
    },
    {
      "commit": "721e40283793649b4750c05da4fe972bd372f7f9",
      "tree": "9af2c2c583900e9a35c6adf7fef277d0221c0571",
      "parents": [
        "df7e5b836e78ab38101dde45399c8de51df4042e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 14 14:45:40 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 22 21:56:30 2020 +0000"
      },
      "message": "Fix stack-walking race\n\nDuring stack walking it was possible for a walking thread to race with\nthe InstrumentationInstallStack. In this case the stack changes made\nby InstrumentationInstallStack could cause the other thread to\nincorrectly parse the stack data-structures, leading to\nfailures/crashes.\n\nTo fix this we increment an ID whenever instrumentation changes the\ninstrumentation stack. Other stack-walkers then check this id and\nrestart whenever it changes. Note that although the stack-walk\nrestarts we keep track of how many java frames we\u0027ve visited already\nand refrain from calling VisitFrame until we are at the same position\nagain. This means that as far as the Visitor writers are concerned the\nstack-walk is only done once, just like always.\n\nAdded a test (2011) that forces the race to occur.\n\nAlso Disabled Dex2oatSwapUseTest#CheckSwapUsage. It seems that the\nincrease in Thread* size has caused it to fail. Disable while we\ninvestigate. See b/29259363\n\nBug: 72608560\nBug: 29259363\nBug: 148166031\nTest: ./test.py --host\nTest: ./test/run-test --host --dev --runtime-option -verbose:deopt,plugin --prebuild --compact-dex-level fast --jit --no-relocate --create-runner --runtime-option -Xcheck:jni 1965-get-set-local-primitive-no-tables\n      parallel_run.py\nChange-Id: I77349dfc6fa860b7f007dee485e9fea1d8658090\n"
    },
    {
      "commit": "a00b54b74bee06c006b8bebfbef85e2801de293c",
      "tree": "6edb2a96c1f89ae913e6b5f190b117cb290239e8",
      "parents": [
        "e571a283b73fb4621c401811f523503b3266564b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 03 14:36:42 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 04 12:04:36 2019 +0000"
      },
      "message": "Helpers and refactorings to prepare for interpreter optimizations (x64)\n\n- Add data structure offsets that will be used in assembly code.\n- Be explicit about a stack overflow in a fault handler.\n- Move assembly helper code in asm_support so interpreter can use it.\n- Support putting literals in InterpreterCache.\n- Fix artHandleFillArrayDataFromCode for x64.\n\nBug: 119800099\nTest: test.py\nChange-Id: I2729f87fe5d09c04ae2e7081636f0cd89ac14c21\n"
    },
    {
      "commit": "4ac0e1571e015a01d75091c3daef065f9624ad77",
      "tree": "4d13edeab88bd6fd724388c48385b0c3cca4f3a8",
      "parents": [
        "5a2301d897294ff4ee6de71f459dc2566dc3fa1a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:14:50 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:14:50 2019 +0000"
      },
      "message": "Revert \"Revert \"Basic structural redefinition support\"\"\n\nThis reverts commit 5a2301d897294ff4ee6de71f459dc2566dc3fa1a.\n\nBug: 134162467\n\nReason for revert: Relanding as unclear if issue is due to topic.\n\nChange-Id: Ib1d1cf2e9132e30c9649b760ae9ae2d8ceacf843\n"
    },
    {
      "commit": "5a2301d897294ff4ee6de71f459dc2566dc3fa1a",
      "tree": "2bd06ab3f463734994b3d251f6115514520dbb3f",
      "parents": [
        "4eb6eb40e88214fcc874d93e75660cb580cb4d58"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:11:22 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:12:13 2019 +0000"
      },
      "message": "Revert \"Basic structural redefinition support\"\n\nThis reverts commit c971eafeff43e4e26959a6e86b62ab0a8f1a6e1c.\n\nBug: 134162467\n\nReason for revert: Breaks on redefine-stress\n\nChange-Id: I4e38da23d65b5b34b26b5ab537a3583328e078a4\n"
    },
    {
      "commit": "c971eafeff43e4e26959a6e86b62ab0a8f1a6e1c",
      "tree": "f8647487e7465712fd73118ceb89e13167a12648",
      "parents": [
        "1ba7e8c10af4e270864a417044244d63db53ccf5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 13 10:50:38 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 17 23:52:12 2019 +0000"
      },
      "message": "Basic structural redefinition support\n\nThis adds basic support for adding methods and fields to already\nloaded classes using redefinition. This \u0027structural class\nredefinition\u0027 is currently limited to classes without any virtual\nmethods or instance fields. One cannot currently structurally redefine\nmultiple classes at once nor will structural redefinition trigger the\nstandard redefinition events.\n\nAfter structural redefinition all references to the old class, and its\nfields and methods are atomically updated. Any memory associated with\nthe static fields of the old class is zeroed. Offsets for field access\nmight change.  If there are any active stack frames for methods from\nthe redefined class the original (obsolete method) code will continue\nto execute. The identity hash code of the redefined class will not\nchange. Any locks being held, waited or blocked on by the old class\nwill be transferred to the new class.\n\nTo use this feature the process must be debuggable and running with\n-Xopaque-jni-ids:true.\n\nFor device testing use a wrap.sh that adds the following flags:\n\n    \u0027-Xopaque-jni-ids:true -Xcompiler-option --debuggable -XjdwpProvider:adbconnection\u0027\n\nStructural redefinition only available using the\n\"com.android.art.UNSAFE.class.structurally_redefine_class_direct\"\nextension. This will not trigger the normal class-redefinition events.\nOnly one class may be redefined at a time.\n\nNB There are still some holes in this potentially allowing obsolete\nmethods/fields to be visible. Most notably during jni-id, MethodHandle\nand VarHandle creation as well as potentially other places in the\nruntime. These holes will be closed by later CLs. Until then the\nextension to access structural class redefinition will remain tagged\nas UNSAFE.\n\nTest: ./test.py --host --all-compiler\nBug: 134162467\n\nChange-Id: I825d3a4bdb9594c0147223ae69f433ce9bbfc307\n"
    },
    {
      "commit": "d5a9587acd8fbc3aceddc51d436ebbec5633326c",
      "tree": "3bad998c59ce8c7f76edb157d8b2a1a3a3d36698",
      "parents": [
        "bac080b0beec961671a7753c88780d8bf700fa40"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 12 13:24:07 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 13 06:18:54 2019 +0000"
      },
      "message": "Update the entrypoint with the code entrypoint, not the code pointer.\n\nThe entrypoint takes into account the \"| 1\" mask for thumb code.\n\nTest: boot and arm32 apps don\u0027t crash.\nChange-Id: I192e65d545e9934d73e4042d72da53e781ddf4a7\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": "abedfca1db9c15d1bd99e2930c0b4fb2f30f2780",
      "tree": "e7e9f6855d95804ad3a57e4a933bb8e135ca3344",
      "parents": [
        "5bf2dbdceec5fd84470606b7c3e38aad620e6d51"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 23 14:07:47 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 24 08:41:54 2019 +0000"
      },
      "message": "Partially ObjPtr\u003c\u003e-ify HandleScope.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --interpreter\nBug: 31113334\nChange-Id: I560683b5345bda9df4b22903d032b593d6c2dd4f\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": "19711d479cd4bc4c2d02edf37526cd4e2a6235f7",
      "tree": "53851b37097ffe2b11e42fd271eb27869956f2c0",
      "parents": [
        "8311489bcaa94a4527d8e010df6a78d457273b53"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 12 14:05:34 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 08 10:18:50 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify instrumentation.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nBug: 31113334\nChange-Id: I95d9e1c9c9a0c9e460048c686c229618126b66d5\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": "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": "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": "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": "e8e484989ea5a28a8ff0262ba19499c76ed30acd",
      "tree": "10df6622972d4f04fe75c7cf2b0e730b177bb83a",
      "parents": [
        "0633365c40e32fda28d06ef94e6e3e3d8dab697f",
        "cbc9dda077969517408eeedcae1032cbd4bdcba9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 10 17:47:34 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 10 17:47:34 2018 +0000"
      },
      "message": "Merge changes I347037eb,Iaeb79aeb\n\n* changes:\n  Make PrettyMethod note when a method is obsolete\n  Adjust instrumentation CHECK to be correct WRT obsolete methods\n"
    },
    {
      "commit": "fc81d802243c7fd24b5aa63841217727594dacab",
      "tree": "7cb975ef4f99aa8a548c21c2101f34e22c8a5777",
      "parents": [
        "e352152209d7fdab4eae46cb9ad4c61c82e04598"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 07 13:39:05 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 07 15:43:20 2018 -0800"
      },
      "message": "Adjust instrumentation CHECK to be correct WRT obsolete methods\n\nSome instrumentation sanity-check code didn\u0027t take into account\nobsolete methods and so could sometimes spuriously fail if the right\nsequence of redefines and deoptimizations occur.\n\nThis can occur if one tries debugging a test using inline-mockito, for\nexample.\n\nTest: atest -wbit RecentsAnimationTest and attach debugger with\n      breakpoint in test\nTest: ./test.py --host\n\nBug: 120630577\n\nChange-Id: Iaeb79aebb084990b397e59f56a186e0feaffd654\n"
    },
    {
      "commit": "7e56a072bc3569404a7c3fc54d4952f2bfe478ab",
      "tree": "308bc711966ee1d4f6a3b7dc4c07f346fe5c01ad",
      "parents": [
        "44f67607b33e36c118fe0f62c062865b2bc8bd8f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 29 10:40:06 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 06 11:37:19 2018 -0800"
      },
      "message": "ART: Hide mutex in Instrumentation\n\nEnsure that instrumentation.h does not pull in mutex.h.\n\nBug: 119869270\nTest: m test-art-host\nChange-Id: I0cb993ac3ddef3ce7efab8c624aa92905c888a0d\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": "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": "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": "65d68922f5c0298001b90ebed11a16da3f770515",
      "tree": "dd104f23c081b94fb654390e7171092c73202628",
      "parents": [
        "fe89f170fd454188902ae0b80e08c0888158c60e",
        "a61b45a44814ef1494ec3a1bc30e683f5d697da9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 25 12:01:55 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 25 12:01:55 2018 +0000"
      },
      "message": "Merge \"Handle quickened opcodes in instrumentation deopt.\""
    },
    {
      "commit": "a61b45a44814ef1494ec3a1bc30e683f5d697da9",
      "tree": "467ffbb587b91011c1e18faeff3c3a702a53cc27",
      "parents": [
        "8d66a3aeec2f0f5a79e3ca95a77f1a21e5cdc69f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 25 09:45:24 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 25 10:33:19 2018 +0100"
      },
      "message": "Handle quickened opcodes in instrumentation deopt.\n\nAlso update 602-deoptimizeable by removing frame assertions. These\nare covered  by 685-deoptimizeable.\n\nTest: 602-deoptimizeable, 685-deoptimizeable, 687-deopt\n\nbug: 115849764\nChange-Id: Ibca3b49b22fa77541be5b972149618ce19842af9\n"
    },
    {
      "commit": "98ea9d9d82ab078ca10fa7f8e02eddda94cf1d98",
      "tree": "a848b7e41ff227a2d3d4d6795ec11089f39cb6ca",
      "parents": [
        "02338775e33b553be51d44ff60bb1ef8e527bd94"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 14:06:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 15:19:55 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles runtime.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibc0d5086809d647f0ce4df5452eb84442d27ecf0\n"
    },
    {
      "commit": "28f6cff854b61e39f953e69ebf3646ee9826ec82",
      "tree": "a98e2bf1746d93079b7abe54e278ba87f0aef360",
      "parents": [
        "06ef9aa6a562a3a1f7c1f9b91aadda5018f8ba86"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 15:07:28 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 22 14:35:07 2018 +0100"
      },
      "message": "Cache the value of MterpShouldSwitchInterpreters()\n\nAdd field to the Thread object which stores the value instead (negated).\nExplicitly update the field when relevant state changes (which is rare).\n\nThis speeds up golem interpreter benchmarks by 3.5%\non average with some benchmarks up to 15% faster.\n\nTest: test.py -b -r --interpreter --host\nChange-Id: If2df0d3bf9e69ab50c30102b2648e997927c34d8\n"
    },
    {
      "commit": "99f97330a3c55e54ebba6fb0a668f445f34dc2d6",
      "tree": "e5f8a9f3baf7bfc9e517289c8463b8089022d27b",
      "parents": [
        "ededf08e2f4a5df3401a5d4badb98ff3c8cb8fb9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 03 15:44:24 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 04 11:13:49 2018 +0100"
      },
      "message": "Remove InvokeVirtualOrInterface event from instrumentation.\n\nIt is no longer used.\n\nTest: test-art-host-gtest\nChange-Id: I4d5f574d972ad2943a27adcca1d326d5d82a1923\n"
    },
    {
      "commit": "fa6a1b0a1d9d186a0ad9bb413a4e49f1ffd187d8",
      "tree": "6d3bef945030868d7e78162dc3f4f35a07ce410a",
      "parents": [
        "a0878aa9f4f4102e56a6381b28a8d7c38dec80b9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 07 08:11:55 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 07 09:13:50 2018 -0700"
      },
      "message": "ART: Continue adding override annotations\n\nUse Clang-tidy\u0027s modernize-use-override to add more annotations. Ignore\ninferred annotations on destructors.\n\nBug: 32619234\nTest: mmma art\nChange-Id: Ic432c928e398d44df9171e42db04ee19946e6887\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": "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": "2c8206ffeb07cebe2f612b8c66c0f4f4132e2be2",
      "tree": "9de26eb2e85f2ab46421caf0f1ca773dfcfca7f6",
      "parents": [
        "2d441b1253cca39bf3078422e8f0b2f4ec1bb408"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 08 14:51:09 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 08:44:17 2018 -0700"
      },
      "message": "Correctly send MethodExit events from exception handlers\n\nDue to the way that exceptions are handled it was possible for a\nMethodExit event to be sent multiple times for the same exception.\nThis fixes that issue by correctly keeping track of which exception\nevents have already been sent and correctly tracking the current\nexception being thrown.\n\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xplugin:libtracefast-trampolined.so\nTest: ./test.py --host\n\nChange-Id: I7fa09f0f3f82181430b18805da5ba8daf68d4b89\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": "35d5b8a2c5d2fce03be59aa003c3bf3c1b481be0",
      "tree": "7665f6d1527be61af13c8ef53f10833dd4200cfd",
      "parents": [
        "b28683f43231e65860ecf91c96a8c0234542c019"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 03 09:18:32 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 03 09:18:32 2018 +0100"
      },
      "message": "ART: Do not use std::\u003ccontainer\u003e::at().\n\nThese functions are specified as throwing std::out_of_range\nand we do not use exceptions.\n\nTest: m\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I67c365ed6d779c101a18b9f386c751c48ca76e16\n"
    },
    {
      "commit": "f244a5731298d501b4e99722291ff8b560d3ee14",
      "tree": "3aac7ffdb0610153ee55851fe9ce00f7ad7e6a06",
      "parents": [
        "dc5423f2f41d63978dfd846c1818998b49f594ae"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 08 13:56:51 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 13 10:32:17 2018 -0700"
      },
      "message": "Entry-exit stubs are independent of deoptimization\n\nWe were incorrectly marking the instrumentation system as having no\ninstrumentation_stubs_installed_ even if entry_exit_stubs are still\ninstalled. This would happen when the last method that had been\ndeoptimized is undeoptimized.\n\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xplugin:libtracefast-trampolined.so\nTest: ./test.py --host\n\nChange-Id: Ib3267cea65cb9f86f737eb5eb8b933daf76119b5\n"
    },
    {
      "commit": "dc5423f2f41d63978dfd846c1818998b49f594ae",
      "tree": "533e6b18167d336a04bd634f6ad426026ed2914f",
      "parents": [
        "c97946ca7e99eeb53388d3d4d4577705f5537671"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 08 10:43:38 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 13 10:32:17 2018 -0700"
      },
      "message": "Ensure that we don\u0027t call MethodEntered on runtime methods\n\nIt was possible we could incorrectly send an instrumentation method\nentry event on a runtime method in some circumstances.\n\nNB Several additional patches are required for the instrumentation\ntrampolines to actually work correctly in all instances.\n\nTest: ./test.py --host\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xplugin:libtracefast-trampolined.so\nChange-Id: Id21c36e4cc0ab70083162fa1d40510f7d823b9a9\n"
    },
    {
      "commit": "6cae5ea222ba256b0ade1e18e37a0f49e952c57c",
      "tree": "454921ebef5312cb81fa3e8e011c0d4d4eae9ad6",
      "parents": [
        "b32c6a914e7e7658c5ea64a00f2776e351adaa74"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 07 17:07:02 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 13 10:32:10 2018 -0700"
      },
      "message": "Ensure we never instrument Proxy.\u003cinit\u003e entrypoint\n\nDue to the way we implement Proxy classes we need to be very careful\nwhen modifying proxy classes and the (non-proxy)\njava.lang.reflect.Proxy class and its methods. In particular we always\navoid installing an instrumentation entrypoint into the Proxy.\u003cinit\u003e\nmethod since we copy it for each proxy class. Failing to do this\ncauses problems as the instrumentation entrypoint bounces to the Proxy\nentrypoint which gets confused since the copied init method is not\nreally a proxy method. Unfortunately if one starts the profiling\nprocess early enough it was possible for the Proxy.\u003cinit\u003e method to\nget instrumented as it is being loaded. This CL ensures that the\nmethod is skipped just like it would be if profiling was started\nlater.\n\nNB Test requires several other patches to actually run far enough to\nobserve this issue.\n\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xplugin:libtracefast-trampolined.so\nTest: ./test/testrunner/testrunner.py --host --run-test-option\u003d\u0027--with-agent libtifast.so\u003dMethodEntry,MethodExit\u0027\nChange-Id: I18fb381d18d7100b5ec843b3cddd387f2d033776\n"
    },
    {
      "commit": "f28586390b055a5681e50617d729a3fa09792d9c",
      "tree": "f213a9d41709dea55d2c0a9014423ac27d04e952",
      "parents": [
        "30a2d9c61da75359dee4ce90236d19fc6341b07a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 02 11:28:50 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Apr 03 15:51:41 2018 +0000"
      },
      "message": "Revert^6 \"Ensure that OSR still is possible with jvmti\"\n\nThe instrumentation uninstall could set methods to non-debuggable\nboot.oat code. This could cause events to be missed due to methods\nbeing inlined. We needed to change the path so that we would only have\nthe JIT/interpreter replace methods. We do this by adding a new\ncallback that can be used to determine if a method needs to be\ndebuggable and being more careful about replacing code when this is\ntrue.\n\nThis reverts commit 5f3005c8844d851d7d218b88b5f90d6c9083ce24.\nThis unreverts commit b9ad26d1ed9146b89555d4333021f44eeb831f05.\n\nReason for revert: Fixed issue causing CTS version of test 993 failure.\n\nTest: cts-tradefed run cts-dev CtsJvmtiRunTest993HostTestCases\nTest: ./test.py --host -j50 --all -t 993\nTest: ./test.py --host\nTest: while ./test/run-test --host --jit 1935; do; done\nTest: while ./test/run-test --host --jit --jvmti-redefine-stress 1935; do; done\nTest: am start --attach-agent -n com.example.android.displayingbitmaps/.ui.ImageGridActivity\n      Run blur filter.\nBug: 76226464\nBug: 77306669\n\nChange-Id: I5068201a03f7613787c66981405499b6499c24e1\n"
    },
    {
      "commit": "f807153d18adec59f5eb1ca270dcbbc7a7335cc7",
      "tree": "e0fbfcc7c6b7672d9258364841145cf4978ecf8e",
      "parents": [
        "23be1464aab396f36f0183e635735cedf96d5607"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 02 18:13:40 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 02 18:15:09 2018 +0000"
      },
      "message": "Revert^5 \"Ensure that OSR still is possible with jvmti\"\n\nThis reverts commit 23be1464aab396f36f0183e635735cedf96d5607.\n\nReason for revert: Seems to break test 993 when running on CTS\n\nBug: 76226464\nBug: 77306669\n\nTest: None\n\nChange-Id: Ie62c1c685455bdf67944d3140fa5d20299b42516\n"
    },
    {
      "commit": "23be1464aab396f36f0183e635735cedf96d5607",
      "tree": "4fda7999eb163771317b657f5540ca6a2dd0d75b",
      "parents": [
        "0b1d3ca323bd504818e4cdab1baa732964ee150a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Mar 30 15:44:26 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Mar 30 19:44:19 2018 +0000"
      },
      "message": "Revert^4 \"Ensure that OSR still is possible with jvmti\"\n\nThis reverts commit ce2836aaf9b04a0ad23739b24adc4437b6443bd3.\nThis unreverts commit b9ad26d1ed9146b89555d4333021f44eeb831f05.\n\nReason for revert: Fixed issue with test 1935 causing flakiness.\n\nIt was possible for the (rather small) jit-code-cache to fill up\nbefore we call ensureJitCompiled in test 1935. This call as a\nside-effect turns off jit garbage collection which means the jit is\nnever able to compile the method and end up failing the test. We fixed\nthis by removing the call to ensureJitComiled and increasing the\njit-code-cache size to 32 megabytes.\n\nTest: ./test.py --host -j50 --all -t 993\nTest: ./test.py --host\nTest: while ./test/run-test --host --jit 1935; do; done\nTest: while ./test/run-test --host --jit --jvmti-redefine-stress 1935; do; done\nTest: am start --attach-agent -n com.example.android.displayingbitmaps/.ui.ImageGridActivity\n      Run blur filter.\nBug: 76226464\nBug: 77306669\n\nChange-Id: I9aaf9eaf6d240637567359cd72d4f172e5326511\n"
    },
    {
      "commit": "ce2836aaf9b04a0ad23739b24adc4437b6443bd3",
      "tree": "6af9fc3c699a1d55818a39d74e8820498ea37210",
      "parents": [
        "94e3dd79da6c94a6b024da776b34a87d59a6d53d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Mar 30 14:32:17 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Mar 30 14:32:17 2018 +0000"
      },
      "message": "Revert^3 \"Ensure that OSR still is possible with jvmti\"\n\nThis reverts commit 94e3dd79da6c94a6b024da776b34a87d59a6d53d.\n\nReason for revert: test 1935 is sporadically failing on bots.\n\nBug: 76226464\n\nChange-Id: I42f6eaa51887701a2c88187abbc100e2ec3ef922\nTest: None\n"
    },
    {
      "commit": "94e3dd79da6c94a6b024da776b34a87d59a6d53d",
      "tree": "fc41b1b5e8cc44ee51ef30c40ff006f8190c17da",
      "parents": [
        "8086e6ab1e853493a81d108b3a9628ef978bc08e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Mar 29 09:15:56 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Mar 29 17:30:49 2018 +0000"
      },
      "message": "Revert \"Revert \"Ensure that OSR still is possible with jvmti\"\"\n\nReason for revert: Fixed issue causing test 1935 to be flaky\n\nThis reverts commit 4f3d1cfbee45a27d5997c379f4eb7b7108224ca8.\nThis unreverts commit b9ad26d1ed9146b89555d4333021f44eeb831f05\n\nTest: ./test.py --host -j50 --all -t 993\nTest: ./test.py --host\nTest: while ./test/run-test --host --jit 1935; do; done\nTest: am start --attach-agent -n com.example.android.displayingbitmaps/.ui.ImageGridActivity\n      Run blur filter.\n\nBug: 76226464\nChange-Id: Iccdd2d6b788db83786690d697e955c15bcd76c73\n"
    },
    {
      "commit": "4f3d1cfbee45a27d5997c379f4eb7b7108224ca8",
      "tree": "96c64a15237d87a5d9de0136e517f9505eb1247b",
      "parents": [
        "b9ad26d1ed9146b89555d4333021f44eeb831f05"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 29 08:13:20 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 29 08:13:20 2018 +0000"
      },
      "message": "Revert \"Ensure that OSR still is possible with jvmti\"\n\nBug: 76226464\n\nTest doesn\u0027t work.\n\nThis reverts commit b9ad26d1ed9146b89555d4333021f44eeb831f05.\n\nChange-Id: I3bdb60981e0e37457686cf9aeefb0f1103d485a0\n"
    },
    {
      "commit": "b9ad26d1ed9146b89555d4333021f44eeb831f05",
      "tree": "de866c749ad0ea0d03aa9ec3d4a1f0df854e1d6f",
      "parents": [
        "bdb02895c7499e60358ffe4dba21b223e2a1a279"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Mar 23 17:10:04 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 28 19:34:07 2018 +0000"
      },
      "message": "Ensure that OSR still is possible with jvmti\n\nWe were previously disabling OSR by always claiming to be interested\nin every method. This could cause slowdown on some methods. To fix\nthis we correctly only claim to be interested in methods if we might\nhit breakpoints from an invoke, have modified locals, or have forced\nthe function to the interpreter.\n\nThere was also a minor bug in the instrumentation removal code that\ncaused prebuilt compiled code to be used when it should have been\nignored.\n\nIn the future we should get the granularity down to single frames but\nthat is currently not possible.\n\nTest: ./test.py --host -j50 --all -t 993\nTest: ./test.py --host -j50\nTest: am start --attach-agent -n com.example.android.displayingbitmaps/.ui.ImageGridActivity\n      Run blur filter.\nBug: 76226464\n\nChange-Id: I6a7aa0c6353372aebe01613b66841543614f3054\n"
    },
    {
      "commit": "74c91c9e90ca502a88240b3d14aed4dd818eedc2",
      "tree": "7e1babd7ddd1d796f8b1c25a60f69f2c0ce030f4",
      "parents": [
        "e9278663e0d6e6a0d2b0fd99f6d9f28b58773669"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Mar 08 14:01:44 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Mar 08 17:02:18 2018 -0800"
      },
      "message": "Fix instrumentation stack tracking\n\nWe were incorrectly tracking the instrumentation stack, bailing out of\ninstallation early. This could lead to missing instrumentation events,\nfailing CHECKs or (potentially) corrupt thread stacks.\n\nTest: ./test.py --host --trace --ntrace --stream -j50\nTest: Use gapid.\n\nBug: 67384421\nBug: 74386428\n\nChange-Id: I91686ac4f44550d89b9d7a5f716df88f505d91b1\n"
    },
    {
      "commit": "e9278663e0d6e6a0d2b0fd99f6d9f28b58773669",
      "tree": "fad8c7191b0d54ea53ea03a4f956f6eb74b195c4",
      "parents": [
        "66f40dbc3e56c7102820842ec49a55b70cf0e151"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Mar 08 16:55:58 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Mar 08 17:02:18 2018 -0800"
      },
      "message": "Revert \"Correctly handle instrumenting threads multiple times.\"\n\nThis CL is incorrect in multiple ways. First it is way too strict with\nthe checks about where additional methods can be. More importantly we\ncannot bail-out early without breaking the instrumentation stack.\n\nThis is linked with the next CL that fixes this correctly.\n\nThis reverts commit 055407c8c0d7658d53fef595dec8ec8095797992.\n\nTest: build.\nBug: 67384421\nBug: 74386428\n\nChange-Id: I745a8e88a5789f68794faaa705c82ed81b8fb29f\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": "055407c8c0d7658d53fef595dec8ec8095797992",
      "tree": "5e8f7de9dae6702ccc0af27f410575a6afa6aaaf",
      "parents": [
        "e4827a83c44abe17ecf04881bd935a4aa6849616"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 26 13:44:04 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 26 14:00:28 2018 -0800"
      },
      "message": "Correctly handle instrumenting threads multiple times.\n\nWe had a problem where if threads were instrumented multiple times we\nwould have CHECK failures as the final non-upcall frame would have an\nunexpected return-pc. This changes the check logic to ensure that we\nare robust with respect to that. This could happen when a thread was\ninstrumented while tracing was enabled.\n\nTest: ./test.py --host --trace --ntrace --stream -j50\nBug: 67384421\nChange-Id: Ic5aadf9e7db964aea653ac57a4d36eccbeac699d\n"
    },
    {
      "commit": "0a80b0e6d087f0efc78083c1c958f088f183e050",
      "tree": "6e8f5943c4e86ca2ec048bafd28e02c3937a2201",
      "parents": [
        "7fe39afe80098d147e34149dac1d6304e858fe44"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 15 15:58:37 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 15 16:00:22 2018 -0800"
      },
      "message": "Extend logging around instrumentation check\n\nThis check in instrumentation.cc will very occasionally fail during\nlibjdwp tests. Add additional logging to try to figure out what is\ngoing on.\n\nBug: 69243589\nTest: build\nChange-Id: Ib0940a8b37e897fcfee7f2aeb4cd79e6fd7c2a50\n"
    },
    {
      "commit": "d8eb6736b994e70fecc2a5b0f78b0796aff82cdc",
      "tree": "bf4894e62a36f738274982167da4a7818cf9538d",
      "parents": [
        "0406e1e59970399393f53923704e1b9a828b2173"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 29 15:16:02 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 29 15:16:02 2018 -0800"
      },
      "message": "Lower a LOG(WARNING) to VLOG(deopt) in instrumentation\n\nDuring late-attach of a debugger it is fairly common for there to be\nnon-debuggable frames present. Change the instrumentation code to not\nprint a warning for all of them unless we have -verbose:deopt.\n\nTest: None\nChange-Id: I6f995f4d0eb5164e205a0eac209b4ff1e073d017\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": "fc49fecbc59330cccf2c17dd2b011153c0f6bda1",
      "tree": "d430a8412d277b7807d1225c7ac33ecfc59bbfa9",
      "parents": [
        "4b3dec38319a8d4af51e401ca13987cf0c2dd98d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 16 22:28:36 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 16 22:28:36 2018 +0000"
      },
      "message": "Revert^3 \"Ensure that methods requiring interpreter entrypoint always have it.\"\n\nThis reverts commit 4b3dec38319a8d4af51e401ca13987cf0c2dd98d.\n\nReason for revert: Failing on debuggable-gcstress\n\nBug: 62821960\nChange-Id: Id143ffa2d9c379566328a03f3cbce1713ae31e51\nTest: None\n"
    },
    {
      "commit": "4b3dec38319a8d4af51e401ca13987cf0c2dd98d",
      "tree": "a145d8fd79e74952b7b395018ccc4818b4a5417d",
      "parents": [
        "6d4c343ee5db18f039aeb3e07ff8d3c1fd37c3a0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sun Jan 14 05:59:14 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 16 18:41:17 2018 +0000"
      },
      "message": "Revert^2 \"Ensure that methods requiring interpreter entrypoint always have it.\"\n\nThe code in test 067-preemptive-unpark is able to cause a method to\nhave a null entrypoint. This is a valid (though rare) state. The check\nwe had did not account for it and failed. Made the DCHECK explicitly\nallow for null entrypoints.\n\nThis makes the check consistent with the code around lines 363 and 398\nlower in the function.\n\nThis reverts commit c971f6e06a43e70a2d86cb4b3ad0e13a9ae9a06c.\n\nReason for revert: fixed issue causing test 067 and others to fail.\n\nTest: ./test.py --host -j50\nTest: ./test/testrunner/testrunner.py -j50 -t 067-preemptive-unpark\n\nBug: 62821960\n\nChange-Id: I537e05fd52fa4c8859d4102ac9475cacd75d7437\n"
    },
    {
      "commit": "c971f6e06a43e70a2d86cb4b3ad0e13a9ae9a06c",
      "tree": "9fa6be931e7bc8d0f47b0eb2d91a683ffcf1c3f1",
      "parents": [
        "94730ef9ca432b5ede81e928cffc4006911aa650"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 14 00:22:04 2018 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 14 00:29:51 2018 +0000"
      },
      "message": "Revert \"Ensure that methods requiring interpreter entrypoint always have it.\"\n\nThis reverts commit 94730ef9ca432b5ede81e928cffc4006911aa650.\n\nDebug tests failing.\nRan: test/run-test --always-clean --prebuild --compact-dex-level none --optimizing --no-relocate --runtime-option -Xcheck:jni --64 --build-with-javac-dx  067-preemptive-unpark\n\nBug: 62821960\n\nChange-Id: Ia4fb7b7b3a60879662dea50ce32b1cfb5e0a3eff\n"
    },
    {
      "commit": "94730ef9ca432b5ede81e928cffc4006911aa650",
      "tree": "254cb5436566b2449283574f60129287d944d814",
      "parents": [
        "2ce6fc80711af9afa3ecda8fdff6f4ed80aa3022"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 10 15:33:34 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 12 09:34:08 2018 -0800"
      },
      "message": "Ensure that methods requiring interpreter entrypoint always have it.\n\nThere were some situations where a method that requires an interpreter\nentrypoint could end up having an oat-entrypoint. This could cause issues\nwith debugging and single stepping inside of the code.\n\nTest: ./test.py --host -j50\nBug: 62821960\nChange-Id: I5da04dfe18898ea8dc2b92d12a9782ef5f028e54\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": "808c7a57bb913b13c22884f57cdacd59bf1fdb3f",
      "tree": "d7f0d7cabaac5a7646c25bae584a82a9aa279cc0",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 15 11:19:33 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 22 09:41:17 2017 -0800"
      },
      "message": "Make CodeItem fields private\n\nMake code item fields private and use accessors. Added a hand full of\nfriend classes to reduce the size of the change.\n\nChanged default to be nullable and removed CreateNullable.\nCreateNullable was a bad API since it defaulted to the unsafe, may\nadd a CreateNonNullable if it\u0027s important for performance.\n\nMotivation:\nHave a different layout for code items in cdex.\n\nBug: 63756964\nTest: test-art-host-gtest\nTest: test/testrunner/testrunner.py --host\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nChange-Id: I42bc7435e20358682075cb6de52713b595f95bf9\n"
    },
    {
      "commit": "0fa1786bdcc333873ed65a1f77a4669d5701ac5e",
      "tree": "3ee1a5ead68150d60c0a72efa4c85b7db5b3e689",
      "parents": [
        "0d2b2ad6cd9ca650d7a3f85a42afaf518cbfa4e0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 24 13:43:05 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 30 09:43:57 2017 -0700"
      },
      "message": "Avoid JVMTI global deoptimization when possible\n\nThis changes the openjdkjvmti plugin to be more controlled about the\nsituations that it will deoptimize everything. Most notably this makes\nthe plugin deoptimize only individual methods for breakpoints instead\nof doing a full deoptimization. It also doesn\u0027t deoptimize for the\nJVMTI_EVENT_EXCEPTION method, since our throwing code will always send\nthe appropriate event.\n\nImpact:\n    Exoplayer benchmark with breakpointlogger setting a breakpoint on\n    a method that is never called.\n\n    The agent is the tools/breakpoint-logger agent.\n\n    \u0027art\u0027 options are for all runs were:\n        --64\n        -Xusejit:true\n        -Xcompiler-option --debuggable\n    \u0027art\u0027 options for \u0027Pre change\u0027 and \u0027Post change\u0027 runs included:\n        -Xplugin:libopenjdkjvmti.so\n        \u0027-agentpath:libbreakpointlogger.so\u003dLbenchmarks/common/java/BenchmarkBase;-\u003erun()V@0\u0027\n\n    Clean run (no agent loaded):\n        Running FMP4 x 1 : 53\n        Running TS x 1 : 144\n        Running FMP4 x 2500 : 3309\n        Running TS x 100 : 3584\n        ExoPlayerBench(RunTime): 6977000.0 us.\n    Pre change:\n        Running FMP4 x 1 : 159\n        Running TS x 1 : 9395\n        Running FMP4 x 2500 : 298591\n        Running TS x 100 : 944447\n        ExoPlayerBench(RunTime): 1.243226E9 us.\n    Post change:\n        Running FMP4 x 1 : 87\n        Running TS x 1 : 495\n        Running FMP4 x 2500 : 2939\n        Running TS x 100 : 3947\n        ExoPlayerBench(RunTime): 6979000.0 us.\n\n    Post change vs clean run is well within margin of error for this\n    benchmark.\n\nTest: ./test.py --host -j50\nTest: ./art/tools/run-prebuild-libjdwp-tests.sh\n\nBug: 62821960\nBug: 67958496\n\nChange-Id: I63ef04f71c36c34d8534651d0c075921a836ec08\n"
    },
    {
      "commit": "e2abbc604ce003c776c00ecf1293796bb4c4ac5a",
      "tree": "f7d124d1861cad2162c30dfe932bb4e1beaf41ef",
      "parents": [
        "7090dfe84f78b1928fcbdfd664d0dd9ea52633ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 15 11:59:26 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 11:36:24 2017 -0700"
      },
      "message": "ART: Move kDexNoIndex to dex_file_types.h\n\nDefine the constant with the types to allow lowering the dependency\non DexFile.\n\nTest: m\nChange-Id: I3c61421db45be96d2057e01b1a7825883d8bd178\n"
    },
    {
      "commit": "0a5ec3dde72d93111a1cfe229e4f1888f06a9541",
      "tree": "a9fc32ec94da5c1c59c72f083253b8f997611bc3",
      "parents": [
        "82629c9182dffb823f05dec30f7ac72cf8fb3ba5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 25 16:50:26 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Sep 11 11:05:24 2017 -0700"
      },
      "message": "Don\u0027t deoptimize everything with can_access_local_variables\n\nChange the can_access_local_variables setup to not need to deoptimize\neverything immediately. Instead ensure all methods are\nasync-deoptimizable and deoptimize the thread we are examining prior\nto examining the stack.\n\nTest: ./test.py --host -j50\nBug: 33616143\nBug: 34414073\nChange-Id: I312a4865c09e63a8d3fe3b2d201f1c071fb4305f\n"
    },
    {
      "commit": "82629c9182dffb823f05dec30f7ac72cf8fb3ba5",
      "tree": "2e74a2ac49fab21ce80f5b7e11a7c5e77097d735",
      "parents": [
        "ac8a2a76e34d0ec0bfc10e067eafbd8a87ea4446",
        "2ee17909eadd7155f4a7751c38398b36fc267f04"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Sep 06 17:20:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 06 17:20:45 2017 +0000"
      },
      "message": "Merge \"Revert^4 \"Allow deoptimization when returning from a runtime method.\"\""
    },
    {
      "commit": "2ee17909eadd7155f4a7751c38398b36fc267f04",
      "tree": "2d13de7e9aae9d24ceb4ff1e03f81e46a5aee54b",
      "parents": [
        "1accd636dc90edef2878f0b8e2716b078379842e"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Aug 30 11:37:08 2017 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Sep 05 13:22:15 2017 -0700"
      },
      "message": "Revert^4 \"Allow deoptimization when returning from a runtime method.\"\n\nThis reverts commit 07c7028e518b98d3267a77dfe0d149db1adbe858.\n\nNeed some special treatment of string init\u0027s shorty.\n\nTest: run-test/gtest on both host and target\nTest: 597-deopt-busy-loop, 597-deopt-invoke-stub\nBug: 33616143\nChange-Id: Id4c64910acfdd088835b6db6fc503e6ade0218e7\n"
    },
    {
      "commit": "9fb1ab1f6bb58bdaccef78bc81b3202d0121e2ed",
      "tree": "f4ec9bb10a2191f4aa80b1ee40332071bed38bab",
      "parents": [
        "c101222c854a0c476f5b6ae64e20adbd38126a3c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 05 09:32:49 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 05 10:54:05 2017 -0700"
      },
      "message": "Revert \"Revert \"JVMTI Exception and ExceptionCatch events\"\"\n\nFixed error where we were incorrectly not updating a ShadowFrame\ndex_pc causing deoptimization errors.\n\nBug: 62821960\nBug: 65049545\n\nTest: ./test.py --host -j50\nTest: ./art/tools/run-libcore-tests.sh \\\n            --mode\u003dhost --variant-X32 --debug\n\nThis reverts commit 959742483885779f106e000df6dd422fc8657931.\n\nChange-Id: I91ab2bc3e645ddf0359c189b19a59a3ecf0d8921\n"
    },
    {
      "commit": "959742483885779f106e000df6dd422fc8657931",
      "tree": "413cbb42607eb92012cfc20f7e0d32d0da3e9875",
      "parents": [
        "798eab03120f6189e8f6aa804d67af1b1d9f00b0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 04 08:45:51 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 04 08:45:51 2017 +0000"
      },
      "message": "Revert \"JVMTI Exception and ExceptionCatch events\"\n\nBreaks tests.\n\nBug: 62821960\nBug: 65049545\n\nThis reverts commit 798eab03120f6189e8f6aa804d67af1b1d9f00b0.\n\nChange-Id: Ie96903df06bbbe41f288f5b75a5114b142998fac\n"
    },
    {
      "commit": "798eab03120f6189e8f6aa804d67af1b1d9f00b0",
      "tree": "828a9a896619a8575bcf20a078f193df54354899",
      "parents": [
        "9c4feaa082d8e8c00611a0657c3f80b1c1179a6f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 23 12:54:53 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 01 10:10:14 2017 -0700"
      },
      "message": "JVMTI Exception and ExceptionCatch events\n\nAdd support for the JVMTI can_generate_exception_events capability.\nThis includes the Exception and ExceptionCatch events and all their\nassociated behaviors.\n\nTest: ./test.py --host -j50\nBug: 62821960\nBug: 65049545\n\nChange-Id: I21cc8522c01033cdeb47bf34fa433bf04bf7ca5c\n"
    },
    {
      "commit": "8ef4b6121ea496d38c0b8aeebad3f1227f819b17",
      "tree": "37847d1e1637ecf43cc11017c03f6cd626769311",
      "parents": [
        "8ee58600c368b7b00e54aff09c575d4e2904316e",
        "07c7028e518b98d3267a77dfe0d149db1adbe858"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 30 09:49:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 30 09:49:52 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Allow deoptimization when returning from a runtime method.\"\"\"\""
    },
    {
      "commit": "07c7028e518b98d3267a77dfe0d149db1adbe858",
      "tree": "71fbc9572541cdf08c21c88e3a1d5ff92f1d9885",
      "parents": [
        "047abb20d02546d3dd6e8630befc31e5568fa90e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 30 08:09:42 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 30 08:09:42 2017 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Allow deoptimization when returning from a runtime method.\"\"\"\n\nBug: 33616143\n\ndeopt string test still failing on occasion.\n\nThis reverts commit 047abb20d02546d3dd6e8630befc31e5568fa90e.\n\nChange-Id: I89fc28696290da52317d0e3dd07ecf0d1bdac823\n"
    },
    {
      "commit": "e814f9d09c0fb1b678e610780d11ce3577db3599",
      "tree": "fd0aeecb079c0e2383d73907410c831f3e172779",
      "parents": [
        "02cb397857c979dffae95e2db2678a72ec407cf0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jul 31 16:14:39 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 29 14:52:11 2017 -0700"
      },
      "message": "JVMTI NotifyFramePop support\n\nAdds support for the JVMTI can_generate_frame_pop_events capability.\nThis includes the NotifyFramePop function and the FramePop event.\n\nWe mark the interpreter shadowframes directly to get the events. This\nrelies on the fact that we never replace extant shadow-frames on the\ninterpreter stack to ensure that we can distinguish which jvmti-envs\nrequested the frame pops.\n\nTest: ./test.py --host -j50\nBug: 34414072\nBug: 62821960\nBug: 65129403\n\nChange-Id: I6e79e39f62fdf79268540c5c1be6311df704cff7\n"
    },
    {
      "commit": "0b5cb35e40901303a4d4283722025d20f2e68e17",
      "tree": "1fc1d1de751e8587218c79291e09bdbfc4ab19df",
      "parents": [
        "5575513f1529ea43371a6d4d9a495b57e7d68409",
        "047abb20d02546d3dd6e8630befc31e5568fa90e"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Aug 28 16:30:48 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 28 16:30:48 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Allow deoptimization when returning from a runtime method.\"\"\""
    },
    {
      "commit": "047abb20d02546d3dd6e8630befc31e5568fa90e",
      "tree": "dfe08cef1f53a7559f792221e3e06dccbe704380",
      "parents": [
        "95d9bdd36b7ae6682f8602292fd547a0faa73829"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Aug 23 15:26:57 2017 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Aug 24 14:36:21 2017 -0700"
      },
      "message": "Revert \"Revert \"Allow deoptimization when returning from a runtime method.\"\"\n\nThis reverts commit 2b87ae0073256e909e15f464300912552e58ee48.\n\nFor an invocation runtime method such as quick-to-interpreter bridge,\nadd a special stack walk to get the shorty for the invoked method.\n\nTest: run-test/gtest on both host and target, and 597-deopt-runtime-method.\nBug: 33616143\n\nChange-Id: I53ae93880f62c95dcf48005239b925d7f7b11eb6\n"
    },
    {
      "commit": "6e1607e247d979a1671a1fd5a98de3f1031fe719",
      "tree": "1174cdcce601419dcd5d1563777f721477d5cb6a",
      "parents": [
        "2ee17e69110a9ef98ea8c94219c7da23b918ef3f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 23 10:06:18 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 23 13:15:17 2017 -0700"
      },
      "message": "Rename instrumentation ExceptionCaught to ExceptionThrown\n\nThe instrumentation ExceptionCaught event was badly named since it is\nactually sent at the time the exception is thrown and is sent even if\nthe exception is never actually caught. Rename it and associated\nmethods/fields to ExceptionThrown to more accurately reflect the\nevent\u0027s semantics.\n\nTest: ./test.py --host -j50\nChange-Id: I1e9c401ab619259b25928dbf19f62d3fa9573d47\n"
    },
    {
      "commit": "2b87ae0073256e909e15f464300912552e58ee48",
      "tree": "0b9db32799d6efa93d3db6dca5170d185627e138",
      "parents": [
        "fc63babf6be7bdd96be1492391594ad628f1fd3c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 23 10:16:26 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 23 10:16:47 2017 +0000"
      },
      "message": "Revert \"Allow deoptimization when returning from a runtime method.\"\n\nReason for revert:\n    Some tests failing even after a minor fix.\n\nThis reverts commit edeba10d523c3e283ab939a16c7203af32c7707e.\n\nChange-Id: I6407c9b489c016d19a12c28d1da0efa55ad554a7\n"
    },
    {
      "commit": "edeba10d523c3e283ab939a16c7203af32c7707e",
      "tree": "88f13395178e7a17979dcb0666c65c024732be6b",
      "parents": [
        "c9d88538d73680563f7a6e73885acfff2c55ef58"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 12 13:43:15 2017 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Aug 21 16:44:57 2017 -0700"
      },
      "message": "Allow deoptimization when returning from a runtime method.\n\nThis CL patches the return pc of a runtime method to allow the top\nJava frame to be deoptimized. This should fix the issue that debugger\ncannot break in a busy loop. It also means we can now do full async\ndeoptimization, if we want to enable it by letting environment keep\nregisters live.\n\nart_quick_instrumentation_exit and art_quick_deoptimize now need to save\nall registers since some compiler slow paths assume runtime methods save\neverything.\n\nSome special handling needs to be done to decide whether dex_pc should\nbe advanced when deoptimized back to interpreter.\n\nTest: run-test/gtest on both host and target, and 597-deopt-runtime-method.\nBug: 33616143\nChange-Id: I2e2c199998825afd5057f7deadfc8fa203ce1936\n"
    },
    {
      "commit": "8cf9cb386cd9286d67e879f1ee501ec00d72a4e1",
      "tree": "88e86e214b425e444760fe4e0ffeee677e1558a2",
      "parents": [
        "914b7b6a6c9f399b26b41e9160e9871ef749e0db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 09:28:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 16:07:10 2017 -0700"
      },
      "message": "ART: Include cleanup\n\nLet clang-format reorder the header includes.\n\nDerived with:\n\n* .clang-format:\n BasedOnStyle: Google\n IncludeIsMainRegex: \u0027(_test|-inl)?$\u0027\n\n* Steps:\n find . -name \u0027*.cc\u0027 -o -name \u0027*.h\u0027 | xargs sed -i.bak -e \u0027s/^#include/ #include/\u0027 ; git commit -a -m \u0027ART: Include cleanup\u0027\n git-clang-format -style\u003dfile HEAD^\n manual inspection\n git commit -a --amend\n\nTest: mmma art\nChange-Id: Ia963a8ce3ce5f96b5e78acd587e26908c7a70d02\n"
    },
    {
      "commit": "b7edcda968bb0cbaa69a3ad387fcd3194f5612be",
      "tree": "50748aac195d20a7e8f6d59a6e499f3fe69418de",
      "parents": [
        "049f2a58ea9276dfd162760271ad443570f2e660"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 27 13:20:31 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 09 10:54:02 2017 -0700"
      },
      "message": "Add method tracing JVMTI callbacks\n\nAdd MethodEntryHook and MethodExitHook callbacks and associated\ncapabilities.\n\nSplit --jvmti-stress option in run-test into --jvmti-trace-stress and\n--jvmti-redefine-stress to test each different component.\n\nNB 3 differences from RI found:\n  1) RI will call methodExitHook again if the method exit hook throws\n     an exception. This can easily cause an infinite loop and the test\n     is specifically tweaked to prevent this from happening on the RI.\n  2) RI always includes the method being exited in the stack trace of\n     errors thrown in the hooks. In ART we will not include the method\n     if it is native. This is due to the way we call native methods\n     and would be extremely difficult to change.\n  3) The RI will allow exceptions thrown in the MethodEnterHook to be\n     caught by the entered method in some situations. This occurs with\n     the tryCatchExit test in 989. In ART this does not happen.\n\nBug: 34414073\nTest: ./test.py --host -j40\nTest: ART_TEST_FULL\u003dtrue DEXTER_BINARY\u003d\"/path/to/dexter\" \\\n      ./test/testrunner/testrunner.py --host -j40 -t 988\nTest: ART_TEST_FULL\u003dtrue DEXTER_BINARY\u003d\"/path/to/dexter\" \\\n      ./test/testrunner/testrunner.py --host -j40 -t 989\nTest: lunch aosp_angler-userdebug; \\\n      m -j40 droid build-art \u0026\u0026 \\\n      fastboot -w flashall \u0026\u0026 \\\n      ./test.py --target -j4\n\nChange-Id: Iab229353fae23c2ea27c2b698c831627a9f861b1\n"
    },
    {
      "commit": "8228cdf4ad6322ec8133564aaa51f966d36c0f17",
      "tree": "6d2f5cf4e742ad644ad30eb96a9f943c9ebcb34b",
      "parents": [
        "83b140474aa1759739c8ee4464bf226c4fa0f6d7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 15:03:54 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 13:13:15 2017 -0700"
      },
      "message": "ART: Move CalleeSaveType to callee_save_type.h\n\nMove the type out of runtime to decrease dependencies. Make it\na proper enum class. Fix up usage.\n\nTest: m test-art-host\nChange-Id: Id84c44bf3c59f37c8a43548e720c5fb65707b198\n"
    },
    {
      "commit": "d76615851af31791c7b1549e8c4609152237b9ce",
      "tree": "e438a8cb0892e02768c55c2bc99f8be1d00abacb",
      "parents": [
        "6ecff4d2127e70738aa2493d6deceb946c204eff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 01 13:48:16 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 07 11:10:50 2017 -0700"
      },
      "message": "Handler-ize InstrumentationListener and related code\n\nWe are going to be making instrumentation listeners that can cause\nsuspensions during their running. We explicitly handler-ize all the\ninstrumentation listener functions in order to ensure this is safe.\n\nBug: 34414073\nTest: ./test.py --host --ntrace --trace -j40\nChange-Id: Ic719080d0991b104d41b7757df8d1f332c72cd04\n"
    },
    {
      "commit": "3481f7a104723480497e65d2c3beee67de3c4760",
      "tree": "7dcd1074f462f230a13f0986f2b737cb705b39e3",
      "parents": [
        "1561de49b382627ddd277b8ad7e5e8f4cec32f0b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Feb 10 12:07:36 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Feb 10 12:11:26 2017 -0800"
      },
      "message": "Fix a moving gc bug in Instrumentation::ExceptionCaughtEvent.\n\nThis fixes JDWP exception caught test crashes.\n\nBug: 34929692\nTest: CtsJdwpTestCases on angler.\nTest: test-art-host\nTest: The jdwp test on host.\nChange-Id: I2f6a66d7e871e6c7d65a8ad287249286b301c3b1\n"
    },
    {
      "commit": "4ba388a39333b13f0f3bcde826444c77fd7166ed",
      "tree": "bbb2b337ee5798f50c5720d2e8467c53477d7826",
      "parents": [
        "8f28bd479af445293474867191a0bf1cf0f08a4f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 27 10:26:49 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 30 12:13:30 2017 -0800"
      },
      "message": "Remove Deoptimization code from class transformation.\n\nSince we removed the current_method from the compiled code we don\u0027t\nneed to deoptimize all frames anymore.\n\nThis is a partial revert of commit dba614810.\n\nBug: 32369913\nBug: 33630159\n\nTest: ART_TEST_TRACE\u003dtrue \\\n      ART_TEST_JIT\u003dtrue   \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\n\nChange-Id: I44a6dd89e1d96bd8c82c2c24a2f42fef023a80be\n"
    },
    {
      "commit": "a0619e25aacf8b8074132f4951f75fdbcfd42925",
      "tree": "dddc053886464b99be29b9ca69039d74d49605ca",
      "parents": [
        "ca21dc47adeed92a15a9d3fd090bdd0e6654679c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 20 13:57:43 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 12:41:52 2017 +0000"
      },
      "message": "Make --debuggable rely on JIT code.\n\nRemoves -Xfully-deoptable in the process, which was added as a\ntemporary workaround until this CL.\nPartial revert of https://android-review.googlesource.com/#/c/302232/\n\nMakes things consistent with existing infrastructure:\n\n- Parse the --debuggable from the compiler options, just like\n  --compiler-filter.\n\n- Add DEBUG_JAVA_DEBUGGABLE, passed by the zygote, for debuggable apps.\n\n- Java debuggable now solely relies on JIT for simplicity.\n\n- Debugging under userdebug for non-java-debuggable apps is still\n  best effort.\n\nTest: test-art-host, jdwp\n\nbug: 28769520\nChange-Id: Id0593aacd85b9780da97f20914a50943957c858f\n"
    },
    {
      "commit": "72ab684871f870aead76b23cb67deb046107b380",
      "tree": "d4bb40cab65df449246b35ae582234238676b7bb",
      "parents": [
        "e36c51aee58e61e9fc89851b767379c587f050e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 20 19:32:50 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 24 12:05:02 2017 +0000"
      },
      "message": "Add class status for resolved erroneous classes.\n\nSplit the old ambiguous status mirror::Class::kStatusError\ninto kStatusErrorUnresolved and kStatusErrorResolved. Once\na class has been resolved, IsResolved() shall return true\neven if the class later becomes erroneous. Allow returning\nerroneous class from ClassLinker::EnsureResolved() if it has\nbeen previously resolved. This allows consistent behavior\nfor retrieving classes, immune to multi-threaded races and\nmulti-dex weirdness. It also allows JVMTI to properly report\n\"prepared\" (i.e. resolved) classes that are also erroneous.\n\nThe new behavior is consistent with the RI.\n\nAdd regression tests to 008-exceptions for inconsistent\nbehavior for multi-dex retrieval of erroneous resolved class\n(wrapping or not wrapping the old exception based on which\ndex file is used for lookup) and for a CHECK(IsResolved())\ncrash in ClassLinker::LoadSuperAndInterfaces() (without any\ntests for similar checks that could have previously failed\nonly due to extremely unlikely race conditions; these should\nnow also be fixed).\n\nInconsistency still remains for class verification as shown\nby the new exceptionsForSuperClassInitFailure() test in\n008-exceptions, where interpreter and Optimizing still\ncause different exceptions to be thrown.\n\nNote: This is partially changing behavior implemented for\nbug 28787733. Since we allow the class loader to retrieve an\nerroneous resolved class, the ExceptionInInitializerError is\nnot thrown at all from VMClassLoader_findLoadedClass(), so\nthere is nothing to wrap in ClassNotFoundException.\n\nTest: m test-art-host\nBug: 30627598\nBug: 28787733\nChange-Id: I86cdca00f35a0d6221d2559e3026ac0428a3613c\n"
    },
    {
      "commit": "dba61481035b7944173181ec9ee02aea41dd0e29",
      "tree": "8629775e657cc8968e2f8fa2af6256c7a58c7dd4",
      "parents": [
        "cb2ce333ee2d1053919fe0acc390369bea3ad77e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 21 08:20:29 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 21 11:43:14 2016 -0800"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Basic obsolete methods support\"\"\"\"\n\nA GetDeclaringClass()-\u003eGetDexCache() got inserted during the\nmerge/review process meaning that we would try to access incorrect\ndex-cache in obsolete methods in some situations.\n\nAlso when using tracing we would loop forever (or at least until an\nOOM error) in test 916 due to tracing forcing InterpretOnly mode\nmeaning methods would never be jitted.\n\nBug: 32369913\nBug: 33630159\n\nTest: ART_TEST_TRACE\u003dtrue \\\n      ART_TEST_JIT\u003dtrue   \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\n\nThis reverts commit f6abcda293b115a9d7d8a26376ea2dcf2d1dc510.\n\nChange-Id: I0773bfcba52e3cd51a83be815c6a50c189558f48\n"
    },
    {
      "commit": "f6abcda293b115a9d7d8a26376ea2dcf2d1dc510",
      "tree": "a30ce596848d14c95a73449dbf2bfccf26a510b9",
      "parents": [
        "ce77fc0e7f60a15354bb20c356537cbf8b53b722"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 09:26:18 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 09:26:18 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Basic obsolete methods support\"\"\"\n\nFails in tracing mode\n\nBug: 32369913\nBug: 33630159\n\nThis reverts commit ce77fc0e7f60a15354bb20c356537cbf8b53b722.\n\nChange-Id: I1bdcf6ad467f2e31f9c5d0c3c987b90a4f5efc69\n"
    },
    {
      "commit": "ce77fc0e7f60a15354bb20c356537cbf8b53b722",
      "tree": "b4301967c423ab190a4274409d99a3d6e23f0e8a",
      "parents": [
        "d54f43ca39dfa92f08c2d760123f185f0f65fb86"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 01:05:52 2016 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 19 14:26:18 2016 -0800"
      },
      "message": "Revert \"Revert \"Basic obsolete methods support\"\"\n\nThis reverts commit b81a9840b44480bfeacd74b8d9f51e06f295411d.\n\nThere were 2 issues with the original CL\u0027s test 916-obsolete-jit that\ncaused it to sporadically fail.\n\nFirst, when checking if we had jitted the function under test in\n916-obsolete-jit we failed to check to see if the function \u0027doCall\u0027,\nwhich is used to work-around bugs in our deoptimization \u0026 compilation\nsystems, had also been jitted.\n\nIn the case where the \u0027sayHi\u0027 function had been jitted but the\n\u0027doCall\u0027 function had not we would (correctly) fail to redefine the\n\u0027Transform\u0027 class since we would not be able to deoptimize the \u0027sayHi\u0027\nfunction since it is under a quick_to_interpreter_bridge (runtime)\nframe.\n\nSecondly, the function Main.isInterpretedFunction was incorrect and\nwould always return false, regardless of the actual state of the\nfunction. This would cause the test to fail as the\nquick_to_interpreter_bridge frame prevented deoptimization of the\nobsoleted function. Usually the warm-up period was enough to make sure\nthe methods were jitted anyway but this was not guaranteed.\n\nBoth of these problems become more likely to occur on systems with\nmore cpu contention such as the buildbots.\n\nTest: stress --cpu 60 \u0026; while ./test/run-test --host --jit 916; do ; done\n\nReason for revert: Fixed bug in test that was causing failures.\n\nOriginal Tests:\n\nTest: ./test/run-test --host 914\nTest: ./test/run-test --host 915\nTest: ./test/run-test --host 916\nTest: mma -j40 test-art-host\nTest: ART_TEST_JIT\u003dtrue \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --no-jit\n\nBug: 32369913\nBug: 33630159\n\nChange-Id: If1a92e47b90965a7dc21c5826185debe62bd1554\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "b81a9840b44480bfeacd74b8d9f51e06f295411d",
      "tree": "d79a3567b272b6eb4fb94d66a537cf92bef455db",
      "parents": [
        "d8936da27b792d1ca02e59c92456a1a53c7b9905"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 00:59:05 2016 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 00:59:05 2016 +0000"
      },
      "message": "Revert \"Basic obsolete methods support\"\n\nThis reverts commit d8936da27b792d1ca02e59c92456a1a53c7b9905.\n\nReason for revert: Some sort of race in JIT\n\nChange-Id: Ibb4e520bb0721d6d7aa2c841a52eb5baff07740e\n"
    },
    {
      "commit": "d8936da27b792d1ca02e59c92456a1a53c7b9905",
      "tree": "6a593dd426e7f4a15c651dd3b872f22fb64f09ce",
      "parents": [
        "7c73bf3518eea7544406eadfed6946411c54a267"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 28 16:24:32 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 14 13:01:27 2016 -0800"
      },
      "message": "Basic obsolete methods support\n\nAdd support for executing obsolete methods following redefinitions.\nThis support includes methods that have been jitted. This does not add\nany additional validity checks to our redefinition functions.\n\nNote using work-arounds to ensure 916 works pending some fixes to the\ncompiler, deoptimizer, or both.\n\nTest: ./test/run-test --host 914\nTest: ./test/run-test --host 915\nTest: ./test/run-test --host 916\nTest: mma -j40 test-art-host\nTest: ART_TEST_JIT\u003dtrue \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --no-jit\n\nBug: 32369913\nBug: 33630159\n\nChange-Id: I78ef95f484146f1fb93c37fc50f56575bdab2432\n"
    },
    {
      "commit": "5ace201d84adb7753680bf4c7877b3b71558da82",
      "tree": "4687d41f5a1c8358e8356066d1e1b43b231b6037",
      "parents": [
        "304f2d3a1d090846a7a55a0016efc9fc8eb14078"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 30 10:15:41 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 30 11:01:52 2016 -0800"
      },
      "message": "Revert \"Revert CC related changes.\"\n\nDisable entrypoint switching in ResetQuickAllocEntryPointsForThread\ninstead of callers. Fixes bug where instrumentation would switch\nto non CC entrypoints for non X86_64 architectures causing aborts.\n\nBug: 31018974\n\nTest: test-art-host\nTest: test/run-test 099\n\nThis reverts commit 96172e0172c5fca6e9a5ad4b857a24d8c7b064e5.\n\nChange-Id: If206694ae35ff4446c6a8a97bfbcbf2dac35e3f9\n"
    },
    {
      "commit": "96172e0172c5fca6e9a5ad4b857a24d8c7b064e5",
      "tree": "04bb8fe644c9bc961c8ac33e609c1b162ec45222",
      "parents": [
        "626b839f881f09a1481377a76712d08580c47a16"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 30 11:52:19 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 30 11:52:19 2016 +0000"
      },
      "message": "Revert CC related changes.\n\nRevert: \"X86_64: Add allocation entrypoint switching for CC is_marking\"\nRevert: \"Fix mips build in InitEntryPoints\"\nRevert: \"Fix mac build in ResetQuickAllocEntryPoints\"\n\nTest: test-art-target-run-test\nChange-Id: If38d44edf8c5def5c4d8c9419e4af0cd8d3be724\n"
    },
    {
      "commit": "f5de23265360e15fcfceb7d07bdadca0e5bb5f0a",
      "tree": "1bf893445a4c6fb35c430a68d79f66fa02fe4d2b",
      "parents": [
        "e89667815b9d0a1eacb91678fed2a7518bb07cc2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 15 17:56:15 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 16 23:26:16 2016 +0000"
      },
      "message": "X86_64: Add allocation entrypoint switching for CC is_marking\n\nOnly X86_64 done so far. Use normal TLAB allocators if GC is not\nmarking.\n\nAllocation speed goes up by ~8% based on perf sampling.\n\nWithout change:\n1.19%: art_quick_alloc_object_region_tlab\n\nWith change:\n0.63%: art_quick_alloc_object_tlab\n0.47%: art_quick_alloc_object_region_tlab\n\nBug: 31018974\nBug: 12687968\n\nTest: test-art-host-run-test\n\nChange-Id: I4c4d9eb229d4ad2f41b856ba5c2958a5eb3b7ffa\n"
    },
    {
      "commit": "28357fab628bd9b91749988b554977398caf9963",
      "tree": "957fac3c1003713c349e0e216762836138c596a7",
      "parents": [
        "c89f9776a107ca20d0146c16fa881db91c4f8266"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 18 16:27:40 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 19 10:04:37 2016 -0700"
      },
      "message": "Move most of class linker to ObjPtr\n\nReturn values are still mirror pointer. Fix some failing asserts in\ncompiler driver and tests.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4450bf9dfb2541749496b8388616e8aae8488919\n"
    },
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "162ae5088e5fd0f2f717fd45bac73e8d3f400a9d",
      "tree": "09ad4fca9e083fa8b769f190664412389bd29f29",
      "parents": [
        "9248a8105c2361eda9ac0293d613cb025b72973d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 18 10:03:42 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 18 10:03:42 2016 -0700"
      },
      "message": "ART: Expect a null self in SetEntrypointsInstrumented\n\nFollow-up to commit 157c77eb9a5d6a7fe6ebcc29afa7f1913a877c87.\n\nBug: 31684277\nTest: m ART_TEST_GC_STRESS\u003dtrue test-art-host\nChange-Id: I9de848ea6a9484798b75a594f3e390ef27394743\n"
    }
  ],
  "next": "157c77eb9a5d6a7fe6ebcc29afa7f1913a877c87"
}
