)]}'
{
  "log": [
    {
      "commit": "9cc65df0146e05bda535991290f53b795a61a025",
      "tree": "b1ea41c26c54984a031c17abbc0c85e1195e4ca2",
      "parents": [
        "08a37a09da7992dde879cabb6a8deb3c9e78115c"
      ],
      "author": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Tue Sep 21 15:09:58 2021 +0000"
      },
      "committer": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Fri Sep 24 09:23:34 2021 +0000"
      },
      "message": "Drop unused arguments for MethodEntered function\n\nthis_object and dex_pc aren\u0027t used in MethodEntered listener.\n\nTest: art/test/run-test\nChange-Id: I158f962befe1015d21d08c757d4c415fe7865d16\n"
    },
    {
      "commit": "e4f983c808b0b7d2d9c39f34f67971bba1354b08",
      "tree": "80dd518ac4e7ea00670f2ebdb70efbe8b1f577cd",
      "parents": [
        "5f2f289b64f163e491b9b53364ce04874f82b4e3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 12 15:53:27 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 13 12:14:13 2021 +0000"
      },
      "message": "Remove mterp.\n\nTest: test.py\nChange-Id: Id800bcf86965ab19cf1e79ecbfa8996a6a6c335e\n"
    },
    {
      "commit": "e8efdaa09b7ff36d5a986f0320f29ac4a7563896",
      "tree": "5066cecab43006a7bf23f793aa911f74559c8017",
      "parents": [
        "ae553e0e1b26d95006aa27df4675104bfb55d49d"
      ],
      "author": {
        "name": "Christian Wailes",
        "email": "chriswailes@google.com",
        "time": "Wed May 26 17:33:54 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 27 19:28:16 2021 +0000"
      },
      "message": "Revert \"Remove stack protector from some interpreter functions\"\n\nA performance regression was noticed in go/lem banchmarks for ART.  This\nis likely caused by the no_stack_protector attribute preventing inlining\ninto hot functions.\n\nReason for revert: performance regression\nReverted Changes:\nIe0c81f97f:Remove stack protector from some interpreter funct...\nIaf565a374:Reset stack guard after fork from Zygote\n\nBug: 168258494\nChange-Id: I018d58759c3a5bb624ea8e7fe09b6b49c9b19b6a\n"
    },
    {
      "commit": "abe7c69edb5ff8f9a4b8019d475caa2f35085aa7",
      "tree": "d8d86bf8c2264897eb9f7cf35be7c523f611688e",
      "parents": [
        "571a6bea24452e9b288106f379c7510c380a7f61"
      ],
      "author": {
        "name": "Chris Wailes",
        "email": "chriswailes@google.com",
        "time": "Wed May 12 17:16:50 2021 -0700"
      },
      "committer": {
        "name": "Christian Wailes",
        "email": "chriswailes@google.com",
        "time": "Tue May 25 17:47:38 2021 +0000"
      },
      "message": "Remove stack protector from some interpreter functions\n\nThis CL removes stack protection from several functions in the\ninterpreter to allow us to re-set the stack protector cookie when new\nprocesses fork from any of the zygotes.\n\nTest: boot\nTest: atest KeyboardVisibilityControlTest\nBug: 168258494\nChange-Id: Ie0c81f97fedfcdde7afc1b6b4befa65524724194\n"
    },
    {
      "commit": "0685b981042acb57355e6742cf0ab18fbcfc4e25",
      "tree": "b9af226c72e2f173943c96c95a04349fe63134bb",
      "parents": [
        "579db19af4f718c1aac5ca95c180a70c5114c6bd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 25 11:59:22 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 30 14:39:19 2021 +0000"
      },
      "message": "Abort transaction when Class.forName() fails.\n\nAnd update VmClassLoader.findLoadedClass implementation in\nUnstartedRuntime which has erroneously diverged since\n    https://android-review.googlesource.com/145075 .\nAlso prevent transactional interpreter from transfering\ncontrol to a catch handler for aborted transactions.\n\nAlso clean up Transaction::kAbortExceptionDescriptor naming\nand some unused parameters.\n\nTest: TransactionTest.CatchClassForNameAbortClass\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ibfc544283f5434efbaab238d11a6152ed2578050\n"
    },
    {
      "commit": "384dae4c7e51c34e1fd047c6f58dde63e08ab6a3",
      "tree": "03303fdae65bbdfe5cab7fe9b2b8a650e7ceb144",
      "parents": [
        "4d23e51e67a419291598af3cb308aadaed1afd62"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 09 10:24:15 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Oct 11 14:41:19 2020 +0000"
      },
      "message": "Support access checks in mterp.\n\nThis is to start not treating access checks failure as soft failures.\n\nTest: test.py\nBug: 112676029\nChange-Id: I9cde52e5a2f6e00450616403ce6d9aa822a8380e\n"
    },
    {
      "commit": "4717175e40a19e79af904dfb7b7dd13f046debd7",
      "tree": "426f040eacf5a8305f8bb8d504bd509824d984c8",
      "parents": [
        "1faacf59b9f74e9d2de4e0331ef0cdfcf132225d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 31 15:03:20 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 07 07:29:59 2020 +0000"
      },
      "message": "Move code item to the data pointer and remove code_item_offset.\n\nThis saves 4 bytes on 32bit and 8 bytes on 64bit on ArtMethod.\n\nAlso update nterp to directly fetch the code item from the data pointer.\n\nTest: test.py\nBug: 112676029\n\nChange-Id: Ic01f43c7ccf2cbce1ec517478e81362232d36371\n"
    },
    {
      "commit": "013d1ee96b928f3bda9031e94d4a69f827133ce6",
      "tree": "4e374c043330f123dc3888922b554fd1291349b4",
      "parents": [
        "9ca8b2bf46978e3a5698f8a27b48aa7eff3514df"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 04 16:18:15 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 17 09:43:08 2019 +0000"
      },
      "message": "Introduce the notion of an nterp frame.\n\nSee comments in nterp_helpers.cc. An nterp frame follows the\ncalling conventions and exception handling of the compiler. There are\nno ManagedStack transitions, and the compiler and interpreter can\njust call each other directly.\n\nFor the stack walker, an nterp frame looks like a compiled frame.\n\nThis CL introduces an nterp frame, another CL will contain an\nimplementation for x64.\n\nBug: 119800099\nTest: test.py\nChange-Id: Ie9b691f58908b7f283b4cd63b84b651526155d27\n"
    },
    {
      "commit": "86bf2fe254f2e2b3511a9c6293c4cd3a238e465e",
      "tree": "297b840e8d27b31417cb109625678642bfd77775",
      "parents": [
        "d5fe17eac91c5c0cefb2ab8093f41ddc68c2f724"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 27 15:54:42 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 02 12:40:06 2019 +0000"
      },
      "message": "Remove too agressive DCHECK.\n\nBoot classpath does contain soft failures, eg:\ncom.android.framework.protobuf.UnsafeUtil$JvmMemoryAccessor\n\nBug: 141606408\nTest: libartd boots\nChange-Id: Ife657a295560420fd69d14bc11c85720e250f4aa\n"
    },
    {
      "commit": "baa81b5f25e10dd054e3562688802468512f8f67",
      "tree": "3833d8d83baf6988e995b2dd757353f7925ba939",
      "parents": [
        "38a062eb7390f07ee0a318517f71d9b56491a5f7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 02 10:14:04 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 05 20:35:53 2019 +0000"
      },
      "message": "Use ClassStatus::kVisiblyInitialized in interpreter.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter --interp-ac\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --interpreter --interp-ac\nBug: 36692143\nChange-Id: Ic081c3fab8fb98ba2667bc851fb2b7dd746e7020\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": "765b2a04576f4e985a88165456f5ee55cdfe56b8",
      "tree": "1eb91d1e6dcdee31b5b396ee0ed8baf8c94aca96",
      "parents": [
        "023533677989028d48f4e64dad0a5b3b4e59b726"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 02 11:04:13 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 03 19:46:42 2019 +0000"
      },
      "message": "Add -verbose:interpreter\n\nAdds a mode to track what methods are being interpreted. Good\nfor debugging interpreter usage during app startup.\n\nBug: 130185360\nTest: test-art-host\n\nChange-Id: I8119f79e534cdad7d6a72d4f01115a288e9c8d9a\n"
    },
    {
      "commit": "d7e9bbf092b5a61048358fd54183526ef12284af",
      "tree": "620cee17c499bdb23217224b0b1332408d725a6e",
      "parents": [
        "bb206de72135271e66e58576b1196f3e08d5b6fd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 13:18:57 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "Clean up explicit conversions to ObjPtr\u003c\u003e.\n\nAdd an ObjPtr\u003c\u003e::DownCast() overload that takes a plain\npointer and remove unnecessary calls to MakeObjPtr(),\nusually preceding DownCast(). Move the MakeObjPtr() to\ncommon_art_test.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I2a243b6d8f3b2e773396dfc53b659c5f7d9ea44a\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": "d388390c556181942b78a5384c3c66afd1d34222",
      "tree": "ca62bd886f00c53260abe3053dd8c058354984d6",
      "parents": [
        "817a47faba3b9150fd9345fbbda1320b02ebfa01"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 17:29:32 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 17:29:32 2019 +0000"
      },
      "message": "\"Revert^3 \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 817a47faba3b9150fd9345fbbda1320b02ebfa01.\n\nReason for revert: Breaks build.\n\nChange-Id: I51a38e47186f778b4c1c119e9f21a5d5a1b786a8\n"
    },
    {
      "commit": "817a47faba3b9150fd9345fbbda1320b02ebfa01",
      "tree": "51d0876c8cb667384a25ee6a2eede761a121d455",
      "parents": [
        "e173798b890e3fdd2bbd68cda997d7b3d1a5a902"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jan 08 14:05:37 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 11:08:41 2019 +0000"
      },
      "message": "Revert^2 \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 9fd68f6795eab7085986f80b1c4d00dc45a68485.\n\nTest: art/test.py -b --host --64\nTest: art/tools/run-libcore-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX64\u0027\nTest: art/tools/run-libjdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX64\u0027\nChange-Id: I9d2faeb8b88ce7cf42915890c6089c725907e6dd\n"
    },
    {
      "commit": "7210108e6d930f9b8bcf5eac6b7a03ea29f92f84",
      "tree": "809a2477f11a98eeb5f258635489424841e6feba",
      "parents": [
        "2ef01100bb56b3f8ab5fbc886a7066d721290d74"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 05 16:16:30 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 14:05:17 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in art/runtime/.\n\nAnd in art/test/.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I14c7cddd7ba4fb2183c643d32a89b594008d8bd0\n"
    },
    {
      "commit": "f05ad2a8d1e573c4d1aa0f3add9c721c0a8eb894",
      "tree": "8d26dcb9c406b9840586adfa62b4fdf0ec0a12b2",
      "parents": [
        "6c22540b2c21399285abd390fbef9f2ea1ea794f",
        "9fd68f6795eab7085986f80b1c4d00dc45a68485"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 01:14:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 21 01:14:21 2018 +0000"
      },
      "message": "Merge \"Revert \"Suspend the runtime when switching interpreters.\"\""
    },
    {
      "commit": "9fd68f6795eab7085986f80b1c4d00dc45a68485",
      "tree": "960357f9bc42471a0a97ba6e7da5b380aeb83f87",
      "parents": [
        "01e1d3217c9b6ad5b3f118a539bea6778ad6096c"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 00:33:46 2018 +0000"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 00:33:46 2018 +0000"
      },
      "message": "Revert \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 01e1d3217c9b6ad5b3f118a539bea6778ad6096c.\n\nReason for revert: JDWP JIT and Interpreter tests on hosts failing.\n\nChange-Id: I95bbda936c573983ff0c6041267bffaa73315cb7\n"
    },
    {
      "commit": "b7e23dcd0c499bc00632666328810483f39aece6",
      "tree": "061b7987e0d01e9c5689c2f50d7898802d2d5c70",
      "parents": [
        "adf595900e6f6328c68a15b88f53529cb5e520f3",
        "01e1d3217c9b6ad5b3f118a539bea6778ad6096c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 20 16:18:32 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 20 16:18:32 2018 +0000"
      },
      "message": "Merge \"Suspend the runtime when switching interpreters.\""
    },
    {
      "commit": "01e1d3217c9b6ad5b3f118a539bea6778ad6096c",
      "tree": "7fc2ff1a143a66990485ed36afd24f98f50de646",
      "parents": [
        "58431a7cf863b2eb7fe25eff6a28ec376f2f151d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 29 19:48:58 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 14 17:02:46 2018 +0000"
      },
      "message": "Suspend the runtime when switching interpreters.\n\nMake the interpreter switch more deterministic by suspending.\n\nThis also allows to remove some of the checks - for example,\nif we are in mterp the conditions must be favourable already.\n\nTest: ./art/test.py -b --host --64\nChange-Id: Ic5fa70592393c7e17decfb84565f3138659340fe\n"
    },
    {
      "commit": "81c61bf0ef90c1fd79694aab49758e16cd0dd044",
      "tree": "7af6bdf9457c4f10c654ec1975fc7b22a9c63cf1",
      "parents": [
        "c2f685a64f819193fb563d33924d233872b8970a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 11 18:57:39 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 13 10:52:08 2018 -0800"
      },
      "message": "ART: Add integrity check\n\nBoot classpath classes are expected to be fully verified. Check in\nthe interpreter that we are not running access-checks for the boot\nclasspath.\n\nBug: 115834172\nTest: m test-art-host\nChange-Id: I39a9313e9a3b99133115e764c0155f2303b65f10\n"
    },
    {
      "commit": "8ed45c876077771455d63dd7e315b439230812f8",
      "tree": "239cc6db092fa00908af0be433b80baff16b172e",
      "parents": [
        "a5de05da46e8a93436e68e7e0d242dce46269527"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 15:08:57 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 17:09:16 2018 +0000"
      },
      "message": "Add test configuration for the switch interpreter.\n\nBug: 31358597\nTest: ./art/test/testrunner/run_build_test_target.py art-interpreter-cxx\nChange-Id: Iebb7a3a5168a27654984f3749a7b86542422671b\n"
    },
    {
      "commit": "cb4f09e050ec2ef98b7b0b359f36fbb9d36a6e10",
      "tree": "1057f31fea9bb05eaa35bc27f9c2b08b55043f80",
      "parents": [
        "ce2a00daa92670a4fc01ef59fdbc3769a846f69c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Oct 21 08:45:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 29 14:52:09 2018 +0000"
      },
      "message": "Move some fast invoke checks to CanUseMterp\n\nThis speeds up arm64 golem interpreter benchmarks by 1.5%.\n\nTest: test.py -b -r --interpreter --host\nChange-Id: Ia9d7c885cd488de56c6b726373072070b509bdf1\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": "0aa7a5a6a7bc350b79351f52e26c97747e927acf",
      "tree": "a583889668d9703d16d37586d56421bd27c62661",
      "parents": [
        "e12575640dca5118bf96245f373acda276c22178"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Oct 10 15:58:14 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 11 16:41:54 2018 -0700"
      },
      "message": "Revert^4 \"JVMTI PopFrame support\"\n\nThis reverts commit 202b617acf477e8e8e11915f467120a0bd518e74.\nThis unreverts commit 202b617acf.\nThis unreverts commit 88a2a9d7a1.\n\nThere were several bugs with the implementation of pop-frame related\nto interactions between the jit, exception handling, class-loading,\nand deoptimization.\n\n- We were instrumenting the target thread stack in cases where it was\n  unnecessary which caused the exception handler to incorrectly\n  determine that a method was not deoptimizable. This caused the\n  pop-frame to be ignored.\n\n- We were incorrectly sending ExceptionCatch events if an exception\n  suppressed by pop-frame would have been caught in the current frame.\n\n- We were allowing pop-frame to be used on threads suspended in the\n  ClassLoad or ClassPrepare events despite having surprising semantics\n  in that situation (see b/117615146).\n\nNeeded to modify test 1953 slightly for inclusion in CTS. I needed to\nmake the CTS entrypoint not run the class-load tests (since the cts\nconfiguration means the classes are loaded by the verifier and not the\ninterpreter). I updated the expected.txt and check script to reflect\nthis.\n\nReason for revert: Fixed issue causing Exception events to sometimes\n                   eat PopFrame and other issues.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\n\nBug: 73255278\nBug: 111357976\nBug: 117533193\nBug: 117615146\n\nChange-Id: I655c4fe769938cf41d7589f931d6710cf2001506\n"
    },
    {
      "commit": "202b617acf477e8e8e11915f467120a0bd518e74",
      "tree": "4d1124b540984f970acaf494f4fd85cc347fbd57",
      "parents": [
        "1c7b1fcf0ff29d83d13d38d0451a54474ccf5964"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 07:47:58 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 07:47:58 2018 +0000"
      },
      "message": "Revert \"Revert^2 \"JVMTI PopFrame support\"\"\n\nThis reverts commit 1c7b1fcf0ff29d83d13d38d0451a54474ccf5964.\n\nBug: 73255278\nBug: 111357976\nbug: 117533193\n\nReason for revert: Test failures\n\nChange-Id: I9da863fd95264007c4efeb85539e704e83499dcf\n"
    },
    {
      "commit": "1c7b1fcf0ff29d83d13d38d0451a54474ccf5964",
      "tree": "b978817acd252f10bd4648d3582ac9459fc9a0f4",
      "parents": [
        "59b950f53152c169464ba8c63d44102eeba1e594"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:42:12 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 08 13:18:35 2018 -0700"
      },
      "message": "Revert^2 \"JVMTI PopFrame support\"\n\nThis reverts commit f67d0cbf2743b29aa6e1be7ae2f71762b8762785.\n\nRedefine-stress causes classes to be loaded at slightly different\nplaces due to the deep verification needed to redefine a class. This\nwould cause the parts of tests 1953 and 1954 to fail due to classes\nloading at unexpected times. We changed the test to skip these\ntest-cases when they cannot be correctly executed.\n\nReason for revert: Fixed issue causing tests to fail under\n                   redefine-stress\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./test/testrunner/testrunner.py --host --redefine-stress\nBug: 73255278\nBug: 111357976\nChange-Id: I46fb4aed878bcc9398f2b73ad5040d7c97aec3ef\n"
    },
    {
      "commit": "f67d0cbf2743b29aa6e1be7ae2f71762b8762785",
      "tree": "b0b1b8a1908541791bfeb18c1117482d559ded38",
      "parents": [
        "88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:39:54 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:40:30 2018 +0000"
      },
      "message": "Revert \"JVMTI PopFrame support\"\n\nThis reverts commit 88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a.\n\nReason for revert: Fails class-load/prepare tests with jit-at-first-use.\nBug: 73255278\nBug: 111357976\nTest: None\nChange-Id: Id8dea6dcf124d56e3a8dfa19e6ed39cc70370c34\n"
    },
    {
      "commit": "88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a",
      "tree": "a19af813a97be817a76072534139a77b16f3ad87",
      "parents": [
        "fc7d33fc052d993eaa205337e6a805022d2cd822"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 14 14:44:29 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 04 11:04:49 2018 -0700"
      },
      "message": "JVMTI PopFrame support\n\nImplement support for the JVMTI can_pop_frames capability. This works\nby marking shadow-frames with a bit that forces it to be popped or an\ninstruction to be retried. When a PopFrame is requested the plugin\nwill deoptimize the targeted thread and force the interpreter to deal\nwith the frame pop. If the can_pop_frames capability is enabled the\nruntime will be forced to handle all exceptions through the\ninterpreter. This is required to support PopFrame during some\nexception events.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nBug: 73255278\nBug: 111357976\nChange-Id: I62d6b1f4ff387c794ba45093c3d6773aaf642067\n"
    },
    {
      "commit": "c55bb390d88b8eb62a50932f7f9b47c2a3733f16",
      "tree": "ec2e74f3f8404dffcb9bfde4e7ffa3416a35543d",
      "parents": [
        "89468aeaa6a67ae4025b30d427391186306d6522"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 21 00:02:02 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 18:37:12 2018 -0700"
      },
      "message": "Revert^2 \"ART: Refactor typedef to using\"\n\nThis reverts commit ee07743e03042c2ca36e0c9513847a9e7d2509f1.\n\nReason for revert: fixed attributes.\n\nBug: 32619234\nTest: m test-art-host\nTest: m test-art-target-gtest-unstarted_runtime_test\nChange-Id: I6f0a775adfdf6ecd132b470f7c5446e949872e20\n"
    },
    {
      "commit": "ee07743e03042c2ca36e0c9513847a9e7d2509f1",
      "tree": "66867d7443a3798f6d882ef2715ddeb7baf3e771",
      "parents": [
        "9a20ff06f7ccee08a742c315ec6d351ab56ba1cd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 15:05:17 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 15:05:17 2018 +0000"
      },
      "message": "Revert \"ART: Refactor typedef to using\"\n\nThis reverts commit 9a20ff06f7ccee08a742c315ec6d351ab56ba1cd.\n\nReason for revert: Attributes on the wrong side.\n\nBug: 32619234\nChange-Id: I8fd2abef619b22c02ccfbf5ae629339f1a60918b\n"
    },
    {
      "commit": "9a20ff06f7ccee08a742c315ec6d351ab56ba1cd",
      "tree": "7e55557e118eb5fffe03ad3456e00d8469a36232",
      "parents": [
        "70dfb6983492aff1c52cc1b52044258aef51f47f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 19 10:58:18 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 19 21:56:32 2018 -0700"
      },
      "message": "ART: Refactor typedef to using\n\nAdd clang-tidy\u0027s modernize-use-using.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: If50d37b5152af4270784e3cde7951292a9e19033\n"
    },
    {
      "commit": "6ec2a1bf1cbecf17546df780dd0ad769042e1874",
      "tree": "09f7430f020e04dc892ff2c2152bb773cd45c0dd",
      "parents": [
        "2d3065e6ca0bd707bc998b7d260bb8e8ec07cf87"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 15:33:48 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 23 13:48:31 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify UnstartedRuntime, fix 2 stale reference uses.\n\nTest: Rely on TreeHugger.\nBug: 31113334\nChange-Id: I35f76c3e3b94dfca18dbe67aba065a1270f4e5ee\n"
    },
    {
      "commit": "fe94875d94ef8c06f6322021d501d58bd64c1606",
      "tree": "0376957503f936cd87411957cb08c5852041974e",
      "parents": [
        "b87dcc1c0bcc819cf7b7109c6427cd98b84f6342"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 23 18:11:43 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 26 11:37:23 2018 +0100"
      },
      "message": "ART: Fix infinite recursion for deopt at dex pc 0.\n\nPreviously, the interpreter checked for dex pc 0 to see if\nthe method was just entered. If we deopt at dex pc 0, the\ninstrumentation would emit an erroneous MethodEnteredEvent\nand the JIT would have received a MethodEntered() call. For\nJIT-on-first-use, the method would be compiled the same way\nas before, leading to the same deopt until stack overflow.\nWe fix this by using a new `from_deoptimize` flag passed\nby the caller.\n\nTest: 680-checker-deopt-dex-pc-0\nTest: testrunner.py --host \\\n      --jit --runtime-option\u003d-Xjitthreshold:0\nBug: 62611253\n\nChange-Id: I50b88f15484aeae16e1375a1d80f6563fb9066e7\n"
    },
    {
      "commit": "0225f8e2939a9340cb7dcebfcfe7996a2bd9bce9",
      "tree": "fd32362dff4ecdc8ff8b0d800a1b46fb0d9d0104",
      "parents": [
        "c7e546ff3963a1d51b1f100d308db735bd19f736"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 31 08:52:24 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 31 01:24:53 2018 -0800"
      },
      "message": "Revert \"Revert \"Make libdexfile build independent of runtime dir\"\"\n\nThis reverts commit 787784f9effb126b5d0d3dc97d544c4a477b5daf.\n\nReason for revert: Bot configuration issue.\n\nChange-Id: I6a10bb4a9571f89c7e4dd095f9157e830a44e2de\nBug: 22322814\nTest: make -j 50 checkbuild\n"
    },
    {
      "commit": "787784f9effb126b5d0d3dc97d544c4a477b5daf",
      "tree": "1ff6d9fd284a4dd2a337165dff20e71137997c9d",
      "parents": [
        "b40b7e73469339a6b667b4a2e2b8690112a74dc9"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 18:48:51 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 18:48:51 2018 +0000"
      },
      "message": "Revert \"Make libdexfile build independent of runtime dir\"\n\nThis reverts commit b40b7e73469339a6b667b4a2e2b8690112a74dc9.\n\nReason for revert: on device libdexfile.so missing\n\nChange-Id: I9bd61a98bef870400580e8c991cb061d3f57fa72\n"
    },
    {
      "commit": "b40b7e73469339a6b667b4a2e2b8690112a74dc9",
      "tree": "7e8a34d9c7894c4c946f674f19f0a0a512b95184",
      "parents": [
        "9690ad794b324ba54e936608881ac0f62538b97a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 25 17:11:07 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 01:17:58 2018 -0800"
      },
      "message": "Make libdexfile build independent of runtime dir\n\nRemove libdexfile\u0027s dependency on utils.cc and move utf.cc into\n/dex.  Remove libdexfile\u0027s constituent sources from libart and\nuse libdexfile wherever libart is. Also remove some ART-specific\ninterfaces.  Libdexfile\u0027s tests remain to be converted, plus\nmoving the files to a new directory peer to runtime/.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ifaf695216e4a0e43d3aa377984d933f7a2a243c2\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": "fc9555dac51a3cf12bb13f4e3781d2f2f6c9f91f",
      "tree": "4b7e722061366679f2fbe3478c3fb3ca029b8620",
      "parents": [
        "fd443eb00b2456006f03252ba085c1f851e8adf5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Nov 05 16:32:19 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Nov 05 17:11:15 2017 -0800"
      },
      "message": "Remove mterp reliance on code item layout\n\nPass dex instruction pointer intead of code item pointer to the mterp\nentry code. This removes a dependency on the code item layout since it\nmay change in the future for compact dex.\n\nBug: 63756964\nTest: test/testrunner/testrunner.py --host -j40\n\nChange-Id: Icfffb2e17372439f0833ecce1c0ddb05e7e7e69c\n"
    },
    {
      "commit": "373a9b5c718a45ac484afcf4fe6ce84f4bb562b3",
      "tree": "52a3e78fa8bc94a76674caaae837c728332d05dc",
      "parents": [
        "d0332e01ac26c2fd0a900de000a55ed5768ff936"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 18 09:01:57 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 25 10:13:59 2017 -0700"
      },
      "message": "ART: Depend on libnativehelper headers only\n\nDepend on header-only versions where possible. Move projects\nexcluding libart to libnativehelper_header_only.\n\nBug: 65522645\nTest: mmma art\nChange-Id: I53dd3b2a97e94ee685f72de007ed3858f7f5c6b6\n"
    },
    {
      "commit": "580667b8d9cf6943596efff4df64f5879c1529e3",
      "tree": "b12378ae46584e568c23f5414f18578636b8d896",
      "parents": [
        "0a0935f36f23d37ec20151ff7250180050f3b822"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 23 11:20:39 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 23 14:16:54 2017 -0700"
      },
      "message": "ART: Correct static invariant checks\n\nInstances of initializing classes may leak to other threads. It is\nlegal to execute methods and access fields, as long as they are not\nstatic. However, the class should still be initializing (or already\nbe erroneous). Replace checks with this weaker invariant.\n\nFollow-up to commit 4e99b3d8955131f3fc71aa113f0fa71f0092cb6f.\n\nBug: 15899971\nBug: 62478025\nBug: 67719550\nTest: m test-art-host\nChange-Id: I63190253759df95ca54e40fd4117a24e12e0c069\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": "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": "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": "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": "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": "fc63babf6be7bdd96be1492391594ad628f1fd3c",
      "tree": "88f13395178e7a17979dcb0666c65c024732be6b",
      "parents": [
        "57b4e13d9528a3ebac05db280be1df92a261cf79"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 23 10:15:24 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 23 10:15:24 2017 +0000"
      },
      "message": "Revert \"Fix some issues for deoptimizing runtime methods.\"\n\nReason for revert:\n    Some tests still failing, reverting the original CL.\n\nThis reverts commit 57b4e13d9528a3ebac05db280be1df92a261cf79.\n\nChange-Id: I49d9da676be7a1994b39ea9046c8d62695ff8422\n"
    },
    {
      "commit": "57b4e13d9528a3ebac05db280be1df92a261cf79",
      "tree": "3eefd0cfb93bb1e9366c48e5511ecca4abedfd4e",
      "parents": [
        "edeba10d523c3e283ab939a16c7203af32c7707e"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Aug 22 16:22:57 2017 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Aug 22 16:36:42 2017 -0700"
      },
      "message": "Fix some issues for deoptimizing runtime methods.\n\nDon\u0027t dereference a null return value after deoptimizing a runtime\nmethod since we don\u0027t classify the return type of a runtime method.\nRight now we just re-execute idempotent runtime methods.\n\nBug: 33616143\nTest: host run-test\nChange-Id: Ifc81e0e466e46f1b39e632b6af0b5f330bce6413\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": "e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7",
      "tree": "b8733533e2478069aabbdc3a34d0f40aff33e1b1",
      "parents": [
        "b98d384eb424ad7e1dc9816392ded33dce0e0372"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 16:53:49 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 18:25:55 2017 -0700"
      },
      "message": "art: use proper nativehelper headers\n\nlibnativeheader exports headers under nativeheader. These were\navailable before incorrectly as global headers in order to give\naccess to jni.h.\n\nTest: modules using art find headers\nBug: 63762847\nChange-Id: I5c820d677e94e07b2859e78610bc997fe51b41dc\n"
    },
    {
      "commit": "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": "513061a792b22c417c938d31c19581390709561c",
      "tree": "80b4fdce03711170626aa5640d07b07de4a326a1",
      "parents": [
        "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 09:17:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 12:59:13 2017 -0700"
      },
      "message": "ART: Clean up thread.h and thread_list.h\n\nRemove dependency on stack.h and gc_root.h. Remove unused object\ncallbacks include. Factor out ManagedStack into its own set of files.\nFix up users of transitive includes.\n\nTest: m test-art-host\nChange-Id: I01286c43d8c7710948c161b1348faabb05922e59\n"
    },
    {
      "commit": "5ea8413714ceec50a758df6614dc4a3ec6179112",
      "tree": "edbf6a2ffe8aa717d2121b0daa1fc68678fc2ed2",
      "parents": [
        "8bdf4e0d2094b7c9a9a1ffc1a58dbdff4cbe7126"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 05 16:59:29 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu May 25 15:11:56 2017 -0700"
      },
      "message": "Stop interpreter from accessing code items of compiled code.\n\nThe ArtInterpreterToCompiledCodeBridge accesses the code item in a\nnumber of places to handle argument marshalling. However, the code item\nof a compiled method should have no need to be accessed by the runtime\nat all, since the code has been compiled. By removing these accesses,\nthere is a drop in the memory footprint of the dex file, since these\ncode items remain untouched by the runtime.\n\nIncludes fixes for JIT and deopt.\n\nFor Maps:\nSystrace vdex memory usage: 19.4/33.4MB -\u003e 18.8/33.4MB\nDumpsys meminfo vdex PSS: 9371kB -\u003e 9275kB\n\nBug: 35800981\nTest: mm test-art-host\nChange-Id: I3bf17f8866287d9a8f127c16da23bebb801456dc\n"
    },
    {
      "commit": "ef65271c52cff9b39aeb5f326a605e4753214ab2",
      "tree": "305ca05714b8c3c9458d52a02861ece688f81ce2",
      "parents": [
        "178dce79220c16e6f0061bcd12e9e9683ec045ee"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 18 13:04:37 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 18 13:04:37 2017 +0000"
      },
      "message": "Revert \"Stop interpreter from accessing code items of compiled code.\"\n\nThe entrypoint of a method can change concurrently.\n\nBug: 35800981\n\nThis reverts commit 178dce79220c16e6f0061bcd12e9e9683ec045ee.\n\nChange-Id: I25ae8d0d2830eb8412c52f61736bac7b16281c11\n"
    },
    {
      "commit": "178dce79220c16e6f0061bcd12e9e9683ec045ee",
      "tree": "1cff48009b99bd67d8859f2aa13075612a1d7fee",
      "parents": [
        "6579b099786c8cac8fdb0c86d98ad4b232a52ea0"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 05 16:59:29 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 16 11:28:26 2017 -0700"
      },
      "message": "Stop interpreter from accessing code items of compiled code.\n\nThe ArtInterpreterToCompiledCodeBridge accesses the code item in a\nnumber of places to handle argument marshalling. However, the code item\nof a compiled method should have no need to be accessed by the runtime\nat all, since the code has been compiled. By removing these accesses,\nthere is a drop in the memory footprint of the dex file, since these\ncode items remain untouched by the runtime.\n\nMaps Vdex Memory Usage: 19.4/33.4MB -\u003e 18.8/33.4MB\n\nBug: 35800981\nTest: mm test-art-host\nChange-Id: I147a9267ec022547b384374e1449d20bcab1ead2\n"
    },
    {
      "commit": "db01a091aefbd78b56777f4c2e8c5e3f2d8c2712",
      "tree": "62dbbd082c5a4cfc122830a4df0a2ced219d8d6d",
      "parents": [
        "432fccc4c001fcd822f401aea1a4214b713bd896"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 03 15:39:55 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Apr 04 11:44:35 2017 -0700"
      },
      "message": "Ensure invoking obsolete methods throws errors.\n\nThis sets the entrypoint for obsolete methods to a special stub that\nwill ensure that calling them results in an Error being thrown.\nPreviously we were allowing obsolete methods to be run if they could\nreach the appropriate places in the runtime.\n\nGetting into the state where this is possible is extremely difficult\nsince one can only get an jmethodID to an obsolete method by snatching\nit off the stack (or by inspecting internal runtime data). From there\nnormally invoking it will do lookup on the receiver which will get you\nthe original version.\n\nBug: 36867251\nBug: 31455788\n\nTest: ./test.py --host -j40\nTest: (with aosp_marlin-userdebug device) ./test.py --target -j4\n\nChange-Id: I2ca0503966a4e3de18dd89cb7ff224eba1459b49\n"
    },
    {
      "commit": "d9911eeca13f609c885e0f6a5ce81af9b6340bfa",
      "tree": "f850510643ee120dba140bf0bb3e1c1b9c9ce4db",
      "parents": [
        "46bfb7c047a590ac5c24b658f31c170631556bb6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 27 13:27:24 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 27 13:53:48 2017 -0700"
      },
      "message": "ART: Clean up field initialization\n\nAdd explicit field initialization to default value where necessary.\nAlso clean up interpreter intrinsics header.\n\nTest: m\nChange-Id: I7a850ac30dcccfb523a5569fb8400b9ac892c8e5\n"
    },
    {
      "commit": "01822299e8c3a7827d6613cd08fca6aa52c4ae42",
      "tree": "0091c82b4f3b239b6b28418062954b9a0583261d",
      "parents": [
        "df79ddb545f0d6e71d6eebb9cb94aa6916351ee9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 09 09:03:19 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 09 09:03:19 2017 +0000"
      },
      "message": "Revert \"Stop interpreter from accessing code items of compiled code.\"\n\nBug: 35800981\n\nThis reverts commit df79ddb545f0d6e71d6eebb9cb94aa6916351ee9.\n\nChange-Id: I04b1cb8d002ca330c0aa6e68b431c7f80c2779d6\n"
    },
    {
      "commit": "df79ddb545f0d6e71d6eebb9cb94aa6916351ee9",
      "tree": "3fb9da92f3049c3afa99920898b0ddc57e68b074",
      "parents": [
        "68948e01f56ad1996af77f4c0aab721940b0e18d"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Feb 27 14:47:06 2017 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Mar 09 00:36:13 2017 +0000"
      },
      "message": "Stop interpreter from accessing code items of compiled code.\n\nThe ArtInterpreterToCompiledCodeBridge accesses the code item in a\nnumber of places to handle argument marshalling. However, the code item\nof a compiled method should have no need to be accessed by the runtime\nat all, since the code has been compiled. By removing these accesses,\nthere is a drop in the memory footprint of the dex file, since these\ncode items remain untouched by the runtime.\n\nBug: 35800981\nTest: mm test-art-host\nChange-Id: Ib7d29c17e80b1690aa819d083f5b12739492ebd6\n"
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "ef41db7a3f322a1feb305fdb457410c4cea94d00",
      "tree": "c03152c091ef62ab70f5be0a2fe3a965b189132c",
      "parents": [
        "1458e0c09fe0a3b9fa5fd7beb9b6077d1fc46b1d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 25 15:08:01 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 26 15:25:40 2016 -0700"
      },
      "message": "Move interpreter to ObjPtr\n\nMoved most of interpreter, interpreter_common,\ninterpreter_switch_impl, and some of mterp to ObjPtr.\n\nBug: 31113334\n\nTest: test-art-host ART_TEST_INTERPRETER\u003dtrue\nTest: art/tools/run-libcore-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nChange-Id: I0935d18287e1332205c17c5a018aa167788ab897\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": "1a5337fff2cc6cb9d563c8b32aca75f485d23373",
      "tree": "03616e90a91c5c4c1bd7ff03c3d193c3b24bf0db",
      "parents": [
        "c8b722b3cebff245d614e95d1849de45ef7bdf06"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 13:48:23 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 17:37:56 2016 -0700"
      },
      "message": "Move mirror::ObjectArray to ObjPtr\n\nAlso reduce calls to ObjPtr::Ptr.\n\nBug: 31113334\n\nTest: test-art-host -j32\n\nChange-Id: I73e1b356972bb079b66332f00f7f07451601044e\n"
    },
    {
      "commit": "28bd2e4f151267b34b8e1eb19c489d8d547bbf5c",
      "tree": "d99ae3fe74ea63b83091898d830d3efe68cd479d",
      "parents": [
        "6e5fa09510c7280168e040382d27dd8b55760d9a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 13:54:57 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 10:59:28 2016 -0700"
      },
      "message": "Move mirror::Class to use ObjPtr\n\nLeave the return types as non ObjPtr for now. Fixed moving GC bugs\nin tests.\n\nTest: test-art-host\n\nBug: 31113334\n\nChange-Id: I5da1b5ac55dfbc5cc97a64be2c870ba9f512d9b0\n"
    },
    {
      "commit": "1cc62e4ea24828fdb3f3da0b8603f0b107d09a04",
      "tree": "718e322f3d05ac095770d4dc2a68b824bf3974a7",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 18:01:28 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 10:46:16 2016 -0700"
      },
      "message": "Rename ObjPtr::Decode to ObjPtr::Ptr\n\nDone to prevent ambiguity with ScopedObjectAccess::Decode.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I07a2497cc9cf66386311798933547471987fc316\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "f61df9b450f8734b84584671ad22fa4f29d386e4",
      "tree": "a97f593b18e8f03fb01c0bf23703cf0fc7638f5d",
      "parents": [
        "9d185da3bef8caf015d3dbf4ad79c520af7ce3b1"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 07 07:12:29 2016 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 07 07:42:27 2016 -0700"
      },
      "message": "ART: Remove computed-goto interpreter\n\nART currently has 3 interpreters: a baseline switch-statement based\ninterpreter, a C++ computed goto interpreter and a fast assembly\ninterpreter (mterp).\n\nThe C++ computed goto interpreter was intended to get some of the\nbenefits of the old Dalvik mterp interpreter - which it did.  However,\nwe now have the faster assembly interpreter, so it is no longer\nneeded.\n\nTest: m test-art-host\nTest: m ART_TEST_INTERPRETER\u003dtrue test-art-host\nChange-Id: I0e8f139ab6bc48d0568951af1f83e2b1c00835f8\n"
    },
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "5e26eb1dc8ea89b2ebf4ce4b40cbe18542758fbd",
      "tree": "ac8eaad8db47f667e3290e63f52f6e1c06f9fbad",
      "parents": [
        "cf834d00de838272cf28f2382ffc26fe716aae5c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 22 17:54:17 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 22 21:30:40 2016 -0700"
      },
      "message": "ART: Clean up interpreter includes\n\nMove goto-interpreter special-cased Clang declarations to goto\nimplementation file. Separate out declarations into their own\nheaders. Tag the declarations with thread safety annotations.\n\nMinor compile-time impact when running with -j1.\n\nChange-Id: I03664d4e7dc6361b2510a8c9beb693d23a657c9d\nTest: m test-art-host\nTest: m ART_TEST_INTERPRETER\u003dtrue test-art-host\n"
    },
    {
      "commit": "6740997e6934bbca27d5830a32352d82aabbd38b",
      "tree": "684ab2e46ddeaaf251fb6919bf64295810e46afa",
      "parents": [
        "dc4f4d42aa1712a7ac2e4c24c0aebe58b71ae2c0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 19 22:34:53 2016 -0700"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 20 11:44:25 2016 +0100"
      },
      "message": "ART: Change return types of field access entrypoints\n\nEnsure that return types guarantee full-width data as the compiled\ncode and mterp expect by using size_t and ssize_t.\n\nThis fixes Clang no longer sign-/zero-extending small return types.\n\nBug: 30232671\nTest: m ART_TEST_RUN_TEST_NDEBUG\u003dtrue ART_TEST_INTERPRETER\u003dtrue test-art-host-run-test\nChange-Id: Ic505befc6c94e2dccbc8abf2b13d4c2d662e68d1\n"
    },
    {
      "commit": "ffedec510c07cf0f77d0cce51940838f2e630514",
      "tree": "7b21bd86b08f2750bab8d4fd9f23a721ec4eba84",
      "parents": [
        "247250f28028a5b2260ba2eb0a7f555a183b996a"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 19 10:48:40 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri May 20 11:36:18 2016 -0700"
      },
      "message": "Revert \"Revert \"Move rewritten StringFactory call results into dex registers for deopt\"\"\n\nPotential gc points can make the result value stale. We now set the result value\nto null proactively once it\u0027s moved to shadow frame registers. IsStringInit()\nis written in a way that does string comparison instead of requiring method\nresolution so that it doesn\u0027t have a gc point. Also we don\u0027t cache the callee\nmethod during frame unwinding since the method may be rewritten already.\n\nBug: 28555675\n\nChange-Id: Ic51511a4a0fc84a852d8d907f91e7835f49ac478\n"
    },
    {
      "commit": "695e2c4aa1e61aa006412c83f15c4a659111a08a",
      "tree": "37bd8865195a0eeff1b237dbbd94db2dc7f31f70",
      "parents": [
        "8ca33bf04060fadd5b35fa93fa56547c62fe52e7"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 19 00:15:12 2016 +0000"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 19 00:15:12 2016 +0000"
      },
      "message": "Revert \"Move rewritten StringFactory call results into dex registers for deopt\"\n\nThis reverts commit 8ca33bf04060fadd5b35fa93fa56547c62fe52e7.\n\n597-deopt-new-string is failing.\n\nBug: 28846692\nBug: 28555675\nChange-Id: Ibfb59ec36e089c987ea64e4af4ca3709e536412a\n"
    },
    {
      "commit": "8ca33bf04060fadd5b35fa93fa56547c62fe52e7",
      "tree": "8f41ac9cad78e9cae1902fbd2f2e9636a9d5bd31",
      "parents": [
        "8ccc728d9275ad9bf839507a4979774f26ee7392"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 16 11:01:49 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue May 17 17:03:58 2016 -0700"
      },
      "message": "Move rewritten StringFactory call results into dex registers for deopt\n\nBug: 28555675\nChange-Id: I9236df283f2e83ca5dcde01f73dc0522d745cd59\n"
    },
    {
      "commit": "0122320f86ae004aa195d76814c52564d84ee632",
      "tree": "0284342034932f022a520aea87a86701cd0d4ffd",
      "parents": [
        "b0fca360a081eff1a44c6f055c628e2dba44c003"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu May 05 15:10:42 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue May 10 10:05:55 2016 -0700"
      },
      "message": "Break the debug cycle!\n\nRationale:\nWhen entering the path that implements method invocation,\nit is possible for the interpreter and JIT to cycle around\ntrying to interpret or compile a method, never making a\ndecision. This bug fix avoids such cycling with a minimum\nof extra runtime overhead.\n\nBUG\u003d28537292\n\nChange-Id: If805b7bc0279019d0ebf322ddd17cb57a9e884eb\n"
    },
    {
      "commit": "504a69081f63818ca332ddaf54e8198448554538",
      "tree": "337b397a2167c91ada31f33f9613b9ec6479c4a3",
      "parents": [
        "b652da7aae5515c58c776a6975305d895f81ac19"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Apr 28 16:23:01 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 05 11:44:27 2016 -0700"
      },
      "message": "Fix assert failure in interpreter after deoptimization.\n\nThere is code that does\n  new String(chararr, 0, chararr_count);\nwhich under debuggable turns into a call into pNewEmptyString() plus a\ncall into pNewStringFromChars_CII().\nEven though we currently don\u0027t patch return pc in a runtime method,\ncalling into pNewEmptyString() is special since it\u0027s hacked such\nthat it\u0027s acting as if the caller calls into the java method\nStringFactory.newEmptyString() directly. So deoptimization can now\nhappen at the NewEmptyString site and the assert is triggered since\nit\u0027s a new instance instead of an invoke instruction.\n\nThe fix relaxes the assert to allow the special case.\n\nBug: 28555675\nChange-Id: Idbb159b5aa450df2344cd93ae74fef5f55bdc534\n"
    },
    {
      "commit": "56fdd0e63812764bbeb8cc52e376d3fd1f270052",
      "tree": "6988e995bf02f788066fb6e748cd3049fe87d31a",
      "parents": [
        "9d05b59a8595cf7eeece1795eb65b6b8706aad45"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 28 14:56:54 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 29 17:33:22 2016 -0700"
      },
      "message": "ART: Disambiguate access-checks mode from lock-counting\n\nLock-counting (when structural locking verification failed) is a\nspecial sub-mode of access-checks and must be disambiguated, because\nwe currently use access-checks mode class-wide when at least one\nmethod soft-fails, but do not stop the compiler/JIT to compile\nthe \"working\" methods. So we may end up in the access-checks\ninterpreter for a working method through deopt without knowing\nwhich locks are already held.\n\nBug: 28351535\n\n(cherry picked from commit f517e283d477dd2ae229ee3f054120c6953895db)\n\nChange-Id: I083032f064d88df8f8f0611ad8b57d1b39cd09fb\n"
    },
    {
      "commit": "71cd50fb67fa48667b0ab59aa436a582c04ba43d",
      "tree": "9f99f187060b0ef3a118120db367555d8f757f0c",
      "parents": [
        "9b863613454ee139370d24e65adb41fabe75d482"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 14 15:00:33 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 15 15:42:31 2016 +0100"
      },
      "message": "Add weight to compiled/interpreter transitions.\n\nAlso:\n- Cleanup logging.\n- Check ArtMethod status before adding compilation requests.\n- Don\u0027t request osr compilation if we know AddSamples does not come\n  from a back edge.\n\nBug: 27865109\n\nChange-Id: I84512f7d957b61ce2458360ed430adb151830278\n"
    },
    {
      "commit": "274fe4adcb0610a9920be7814d9beb9cac6417ce",
      "tree": "4a5c41dd2568869ceaf0a510e37065a606f512fb",
      "parents": [
        "6990775e323cd9164d6cc10955a047b9d9f15f32"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 12 16:33:24 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 13 17:34:53 2016 +0100"
      },
      "message": "Remove the JIT from the instrumentation framework.\n\nThis was slowing down the interpreter for no reason.\nAlso, call AddSamples for invoke-static and invoke-direct.\n\nChange-Id: I7b5641097f7741dd32feb1ce6af739fd27fb37c2\n"
    },
    {
      "commit": "b5e8ade3b6bf2162a885133f2ac728c578c3c2b0",
      "tree": "328252a5eba3615246ec12dc7d55cf1961253358",
      "parents": [
        "0344f4e1bd62eb092d77840ec7d9cb48adb48a15",
        "00b53b7f3f9ce5996b767b52c28dd846f47a723c"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 02 20:17:51 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 02 20:17:52 2016 +0000"
      },
      "message": "Merge \"Fast ART MIPS64 interpreter\""
    },
    {
      "commit": "35122443e5f8606cc5a660ac32745a06aefb341b",
      "tree": "be44db33797ae729342c671fb95b7746e363e799",
      "parents": [
        "f9f3c5b0ebacbfed59af9c5c81fe9752e6b1258c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 02 12:05:30 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 02 16:35:18 2016 +0000"
      },
      "message": "Revert \"Revert \"Use the interpreter as a heartbeat for the JIT.\"\"\n\nBug: 27398183\nBug: 23128949\nBug: 26846185\n\nThis reverts commit a96917a6983a5abbe973255a3846fda549fb1657.\n\nChange-Id: I5c4f0d87d3293a6a7ab56a33396670704b66a347\n"
    },
    {
      "commit": "00b53b7f3f9ce5996b767b52c28dd846f47a723c",
      "tree": "f0f5edd96d6b4b2256955fe78aad4b2f1da0b45f",
      "parents": [
        "00e94fb884eb0c58e75a623b0fd26330a9327f1e"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Tue Feb 02 20:25:45 2016 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 02 08:04:30 2016 -0800"
      },
      "message": "Fast ART MIPS64 interpreter\n\nChange-Id: I5dda522df0acf9f9df626fe4f5ecfe6c4df600d3\n"
    },
    {
      "commit": "73e31f8ae826be5b9b0c3c216abb904cbfa71077",
      "tree": "ed0a002d71f059a87957b851b710554b4ed2b561",
      "parents": [
        "a8fde8e67dc8d15a436db16c7bbe201dbb249290",
        "a96917a6983a5abbe973255a3846fda549fb1657"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 22:18:18 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 01 22:18:18 2016 +0000"
      },
      "message": "Merge \"Revert \"Use the interpreter as a heartbeat for the JIT.\"\""
    },
    {
      "commit": "a96917a6983a5abbe973255a3846fda549fb1657",
      "tree": "aa03a2a6d0f70faa20f3579458abde24f71abb04",
      "parents": [
        "7273a5d045d3ceb3ff011ad65765356b69b155e8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 22:18:02 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 22:18:02 2016 +0000"
      },
      "message": "Revert \"Use the interpreter as a heartbeat for the JIT.\"\n\nHits a DCHECK testing libcore.\n    art F 11973 12675 art/runtime/jit/jit_code_cache.cc:644] Check failed: it.second-\u003eGetProfilingInfo(sizeof(void*)) !\u003d nullptr \n\n\nBug: 27398183\nBug: 23128949\nBug: 26846185\n\nThis reverts commit 7273a5d045d3ceb3ff011ad65765356b69b155e8.\n\nChange-Id: I6614a82e775ea71aa16f041313f67546db41eac8\n"
    },
    {
      "commit": "7191fddfe6c623976dc8a97f785e3ce848e46d39",
      "tree": "2b4283da97295eb7612c7302c9c1fe4e9a5dba90",
      "parents": [
        "a2313aa47096ea59ffb661d5afc7ff792bab22d6",
        "6cbe0814952bd3bbb329c4ca4dc683ac87c2c2de"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Mar 01 18:19:42 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 01 18:19:42 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Fast ART x86_64 interpretator\"\"\""
    },
    {
      "commit": "01f4dae0b455f03ae3ba531a37eff5e4e8e9451f",
      "tree": "bacb31729cc86d232cf300a52c51949eaa1dd5c8",
      "parents": [
        "4cb069fa2fd967312d5884b86bbdac343df9eb28",
        "7273a5d045d3ceb3ff011ad65765356b69b155e8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 15:17:42 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 01 15:17:42 2016 +0000"
      },
      "message": "Merge \"Use the interpreter as a heartbeat for the JIT.\""
    },
    {
      "commit": "7273a5d045d3ceb3ff011ad65765356b69b155e8",
      "tree": "addf5dcdc82e54605cfb9a622d284bf06b849327",
      "parents": [
        "c3bcf40e905c53ec857ec40a9ae45f4c86738929"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 29 15:35:39 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 14:03:32 2016 +0000"
      },
      "message": "Use the interpreter as a heartbeat for the JIT.\n\nWhen doing a partial code cache collection, update all entrypoints to\ninterpreter, so that the next full collection will remove code\nthat wasn\u0027t executed during that window.\n\nbug:27398183\nbug:23128949\nbug:26846185\n\nChange-Id: I4423f5c4810dac183dc8973078bf218818745e80\n"
    },
    {
      "commit": "6cbe0814952bd3bbb329c4ca4dc683ac87c2c2de",
      "tree": "cdfac167046bf0da3b2bb372a756aceff42835b5",
      "parents": [
        "757701fc80dfe35ff9677c858b3d85e946e1ae36"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Tue Mar 01 16:10:48 2016 +0600"
      },
      "committer": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Tue Mar 01 16:16:22 2016 +0600"
      },
      "message": "Revert \"Revert \"Fast ART x86_64 interpretator\"\"\n\nCFI is updated. Now unwinder can fall through fast interpreter.\n\nThis reverts commit c4a575f58007036ff3408b15c2ec48108add20f3.\n\nChange-Id: Ibb0a2ef41e4d02ab0b4ecc4f030ba0e72971aa9d\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "15315abf91c94a4ebb0a64050f2753798b34bc1f",
      "tree": "851f18eeb8b6401793051d5f52dfad1f7e69f965",
      "parents": [
        "3140ed59665d2ecea1e3ff153363ff26dab48b75",
        "c4a575f58007036ff3408b15c2ec48108add20f3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 26 08:57:18 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 26 08:57:18 2016 +0000"
      },
      "message": "Merge \"Revert \"Fast ART x86_64 interpretator\"\""
    },
    {
      "commit": "c4a575f58007036ff3408b15c2ec48108add20f3",
      "tree": "c08cc40abef82342c73019be6a52dc37561c0c44",
      "parents": [
        "c669beb798e273dd3d44cfa6a7a95ff90eba7209"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 26 08:56:45 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 26 08:56:45 2016 +0000"
      },
      "message": "Revert \"Fast ART x86_64 interpretator\"\n\nFails gcstress configuration.\n\nThis reverts commit c669beb798e273dd3d44cfa6a7a95ff90eba7209.\n\nChange-Id: Ifac92471f91a116fc271d0dde8356fbbb0a08048\n"
    }
  ],
  "next": "200f040af3e4fe9e178cb63c90860d58d90ef665"
}
