)]}'
{
  "log": [
    {
      "commit": "46f9340f2a055a8fdfebbfbb739c697c20d83e7c",
      "tree": "acb172f74723e4ea9ac7ded73b94c661217ec90d",
      "parents": [
        "fe9a4f061841a3c597aac6817a47c799c54fcad7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 29 11:59:50 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 30 14:24:56 2017 +0000"
      },
      "message": "Add SuspendReason enum and change Suspension functions.\n\nMore self-documenting and more type safe.\n\nBug: 62821960\nTest: ./test.py\nChange-Id: Ic7a1ae6a25e687d65f5aa10c1aad54a7b80dd086\n"
    },
    {
      "commit": "97e78033e6cf81d72c9d4d016e349282b911303c",
      "tree": "6d24f271c7c707646ae2eb87161c887004fcd469",
      "parents": [
        "ef43805b0e80015645a5fc52e53b93ad178f60e3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 27 17:51:55 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 28 09:55:48 2017 -0700"
      },
      "message": "Move debugger.cc GetCanonicalMethod to ArtMethod\n\nThis functionality will be useful to other parts of the runtime so put\nit in a more central place.\n\nTest: ./test.py --host -j40\nChange-Id: I4d19cc1016884f5921245ac284c7323cbf3ea8cd\n"
    },
    {
      "commit": "e00ec30588a36eed90aa24eaca9dbc7520f17bf7",
      "tree": "c31d512d62ae2d33b3f57a6549b4c585e0235627",
      "parents": [
        "61944b0c756309a6cf4a3f03fe2aa515e3721621"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 16 08:56:43 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 16 11:22:26 2017 -0700"
      },
      "message": "Make native field operations call instrumentation listeners.\n\nPreviously native reads and writes of fields would not be reported to\ninstrumentation listeners.\n\nWe filter these events out from the debugger since currently the\ndebugger will deadlock if it tries to propagate them through JDWP.\n\nBug: 62712031\n\nTest: ./test.py --host --trace -j40\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost\nTest: Manual\nChange-Id: Ibc75248bdca06537d8b4ff7bb890546136ffa161\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": "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": "77d8a1c3572afb38542cb5a2b3516674a182ce48",
      "tree": "cc8d5d0bdc7b656a73beb5d65ca660e36a0fe22e",
      "parents": [
        "6b90142986f76436503bcdca37ace6537ba8f0d4"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 24 14:53:19 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 26 10:07:39 2017 +0000"
      },
      "message": "Revert^2 \"ART: Support for SourceDebugExtension\"\n\nThis reverts commit 6530cab77a36d6d284c9d61084e39cd2c7fb91f8.\n\nBug: 30109642\nBug: 37560145\nTest: art/tools/run-jdwp-tests.sh --mode\u003ddevice --test org.apache.harmony.jpda.tests.jdwp.ReferenceType.SourceDebugExtensionTest\nChange-Id: I74cacb351fb7b181c5a17e004914d6d8bdcaaa48\n"
    },
    {
      "commit": "6530cab77a36d6d284c9d61084e39cd2c7fb91f8",
      "tree": "d04da8c615716cabac429319a124b013ff0a39e4",
      "parents": [
        "40dc110da3d951465bd2e1ea80ccec8bf99bddaa"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 24 14:32:00 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 24 14:41:31 2017 +0100"
      },
      "message": "Revert \"ART: Support for SourceDebugExtension\"\n\nThis reverts commit 70a45017d6371521c251d67a9aac7d1c86fb6a06.\n\nPending fix for run-jdwp-tests.sh --mode\u003ddevice.\n\nBug: 30109642\nTest: art/tools/run-jdwp-tests.sh\n\nChange-Id: I62f84e0fb09b6fe280ca6b518fbd2bc431318a56\n"
    },
    {
      "commit": "40dc110da3d951465bd2e1ea80ccec8bf99bddaa",
      "tree": "edc4e6d103606bc2f9379060c90f5fdd4bf588db",
      "parents": [
        "5a0336dd8926e1ddee517f7bf39fd6ed3c68f656",
        "70a45017d6371521c251d67a9aac7d1c86fb6a06"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 24 08:05:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 24 08:06:00 2017 +0000"
      },
      "message": "Merge \"ART: Support for SourceDebugExtension\""
    },
    {
      "commit": "cdd798de1b2e7807f1cab8ebbfbb165069beae6b",
      "tree": "3cd00e41bdc8972936f39e6ec7f3cd262b45fa1e",
      "parents": [
        "2203253254e18ebde386740d3c841c04c432a42e"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 18 18:28:51 2017 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 19 10:16:45 2017 +0200"
      },
      "message": "Follow-up to 70d60275cc2860bde50e5f9c5b151e94f745ae14\n\nTest: make -j build-art-host\nChange-Id: Id6e81518041bd64dec537ff3da2fa049d39b27d0\n"
    },
    {
      "commit": "70a45017d6371521c251d67a9aac7d1c86fb6a06",
      "tree": "f9352ab3e446094013fd986fcfa10e6ed5ea26ea",
      "parents": [
        "1cae72e6cfc0b4cd4ad20467dfea243139296998"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Mar 30 16:30:31 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Apr 18 14:05:55 2017 +0100"
      },
      "message": "ART: Support for SourceDebugExtension\n\nAdds support for reading SourceDebugExtension class annotation from\nDEX files.\n\nBug: 30109642\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost --test org.apache.harmony.jpda.tests.jdwp.ReferenceType.SourceDebugExtensionTest\nChange-Id: I2187a2776953a21d36f8b2d165bef6733c02811e\n"
    },
    {
      "commit": "70d60275cc2860bde50e5f9c5b151e94f745ae14",
      "tree": "afc785bedfa86320cce7a1d3c4578ae9763f076f",
      "parents": [
        "c1be9f2b776b4900e0603013f7c4d84e534f0bb0"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 14 14:18:36 2017 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 14 14:22:18 2017 +0200"
      },
      "message": "JDWP: fix Dbg::ResumeThread\n\nA thread should be resumed if and only if it has been suspended by\nthe debugger. Therefore, we must check the debug suspend count, not\nthe suspend count (which includes debug suspend count). Otherwise we\ncould end up resuming a thread that has been suspended for another\nreason (like a GC) but not by the debugger itself.\n\nBug: 27385848\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nChange-Id: I70ed6dfc233501e92332634650babf21ba911048\n"
    },
    {
      "commit": "7337631929812fb8a60b5182eba076a32d1cb851",
      "tree": "5831355a92d0a0cfc7bc4f8507899ec59623b16e",
      "parents": [
        "c48266eb44296fa086868b82d8a3c2b57ce186ae"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 06 10:10:51 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 06 10:23:14 2017 -0700"
      },
      "message": "Fixup JDWP for obsolete methods\n\nWe needed to implement some additional methods and behaviors in JDWP\nin order to support JVMTI obsolete methods.\n\nTest: Manual (using art/test/915-obsolete-2 \u0026 jdb debugger)\nTest: Manual (using art/test/915-obsolete-2 \u0026 Android Studio/IntelliJ debugger)\n\nBug: 31455788\n\nChange-Id: I20c2fa27a2dd002e37526b126f23ce552f19e623\n"
    },
    {
      "commit": "cafa08146648442ee53348c4918a4fab29e591c1",
      "tree": "12f855ca12879a947414401838bdd68b5a59614d",
      "parents": [
        "be2cfabab221613b60c7f4cafb7eb00aa1e69d43"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 15 18:27:34 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 15 18:57:56 2017 +0000"
      },
      "message": "Use GetPeerFromOtherThread in debugger.\n\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --debug\nChange-Id: I6b92153752becbad04563d96b824a06c002f8392\n"
    },
    {
      "commit": "fa4333dcb481e564f54726b4e6f8153612df835e",
      "tree": "ae597c7587dc214434a180962c4373d3748f51ab",
      "parents": [
        "2d98ba68f13dc219c088a12f369c5778bf398f14"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:10:34 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:44:48 2017 -0800"
      },
      "message": "ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\n\nGet it in line with ObjPtr and prettify our code.\n\nTest: m\nChange-Id: I1322e2a9bc7a85d7f2441034a19bf4d807b81a0e\n"
    },
    {
      "commit": "433b79a9130df5f2375b9d3d7518c1f3fb84a467",
      "tree": "dddc053886464b99be29b9ca69039d74d49605ca",
      "parents": [
        "81356645157af44152c7b7db383596b5cf3479b5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 20:54:45 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 20:54:45 2017 +0000"
      },
      "message": "Revert \"Revert \"Make --debuggable rely on JIT code.\"\"\n\nFixed by https://android-review.googlesource.com/#/c/330165/\n\nThis reverts commit 81356645157af44152c7b7db383596b5cf3479b5.\n\nChange-Id: Ifb74e1cc90ab6dea621f7f54a00b540d6ccd0cf6\n"
    },
    {
      "commit": "81356645157af44152c7b7db383596b5cf3479b5",
      "tree": "59aca3792abfa47c7424e4dac13248651e4662b2",
      "parents": [
        "a0619e25aacf8b8074132f4951f75fdbcfd42925"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 20:18:02 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 20:19:28 2017 +0000"
      },
      "message": "Revert \"Make --debuggable rely on JIT code.\"\n\nBreaks 137-cfi with ART_TEST_RUN_TEST_DEBUGGABLE\u003dtrue\n\nThis reverts commit a0619e25aacf8b8074132f4951f75fdbcfd42925.\n\nbug: 28769520\nChange-Id: Ifd7b8fc7c9b72c0a523fd57c4b1b80edd3547caa\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": "0f01b583c3952d0219696480654a0db8fac4b661",
      "tree": "33184022e0c9bc0a6af4d89b21864fd460f32df4",
      "parents": [
        "04bbb5be5b9c0f0b3a72116353d23ea63c8bc5e9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 18 15:22:37 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 15:12:12 2017 -0800"
      },
      "message": "ART: Add ClassLoadCallback\n\nAdd callback for class-load and class-prepare events. Move Dbg\nover. Add tests.\n\nBug: 31684920\nTest: m test-art-host-gtest-runtime_callbacks_test\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost\nChange-Id: I871f6b3c54448fd6ece8d9a7571b2042be50d525\n"
    },
    {
      "commit": "04bbb5be5b9c0f0b3a72116353d23ea63c8bc5e9",
      "tree": "51ee41e14d6bfccc88ccde91938cac901c0e39a9",
      "parents": [
        "a58bc2e74441ac89cb706b49c5a6d096df97080b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 17:49:03 2017 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 15:12:06 2017 -0800"
      },
      "message": "Revert \"Revert \"ART: Start RuntimeCallbacks\"\"\n\nThis reverts commit bf6331a45f730e1f1044af2ce43bceda660ae6fc.\n\nSwitch to using the mutator lock.\n\nBug: 31684920\nTest: m test-art-host-gtest-runtime_callbacks_test\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost --debug\nChange-Id: I6ce0f71de2aa9f90cd23cfca7723a793b560b16b\n"
    },
    {
      "commit": "44751efea1d5457f8eaf1b685ac9a09be1fd7c3e",
      "tree": "920e59513f690dd13f8a5edf7e043d418d95b192",
      "parents": [
        "b0355130e38034db6b904783a00f74a3524e1881",
        "bf6331a45f730e1f1044af2ce43bceda660ae6fc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 09:03:12 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 19 09:03:13 2017 +0000"
      },
      "message": "Merge \"Revert \"ART: Start RuntimeCallbacks\"\""
    },
    {
      "commit": "bf6331a45f730e1f1044af2ce43bceda660ae6fc",
      "tree": "66013474dc85b2a868d5fad2506c8674a086fa1a",
      "parents": [
        "13093d455b8266338fd713b04261c58e9dc2b164"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 09:02:50 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 09:02:50 2017 +0000"
      },
      "message": "Revert \"ART: Start RuntimeCallbacks\"\n\njdwp tests failing with:\n    STDERR\u003e dalvikvm32 E 01-18 23:14:50 12180 12198 thread-inl.h:137] holding \"runtime callbacks lock\" at point where thread suspension is expected\n\nBug: 31684920\n\nThis reverts commit 13093d455b8266338fd713b04261c58e9dc2b164.\n\nChange-Id: I94e4154e273d006eecdd485607dcfd96392d6a00\n"
    },
    {
      "commit": "a7e64f00df89dfd984a8798548af46c7d0657511",
      "tree": "fc87511672825a99a034c2955efd7cd38d16f283",
      "parents": [
        "5d61614eda1ec69d46584605b439c56b6f3fd5e0",
        "13093d455b8266338fd713b04261c58e9dc2b164"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 18 22:52:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 18 22:52:26 2017 +0000"
      },
      "message": "Merge \"ART: Start RuntimeCallbacks\""
    },
    {
      "commit": "13093d455b8266338fd713b04261c58e9dc2b164",
      "tree": "b4c5e54ce8a74af2f8929df089133967ea7f7274",
      "parents": [
        "3a5e34b65727d2c9e7e6ebe45c337dae0d0398a4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 17 21:40:35 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 18 19:48:37 2017 +0000"
      },
      "message": "ART: Start RuntimeCallbacks\n\nAdd a central RuntimeCallbacks structure to handle certain interesting\nruntime events.\n\nIn a first iteration, add ThreadLifecycleCallback with ThreadStart and\nThreadStop. Move Dbg over to ThreadLifecycleCallback.\n\nAdd a test.\n\nBug: 31684920\nTest: m test-art-host-gtest-runtime_callbacks_test\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost\nChange-Id: Ie0f77739a563207bfb4f04374e72dc6935c40b4f\n"
    },
    {
      "commit": "942fd3130254d8276cbfe8e6201825e9c49e9b2c",
      "tree": "62dbcd85ab150604e2d72a3c2d0c3639a28c9b7a",
      "parents": [
        "8bd59a0fd46db83616785168231e09fb95ed2ead"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 16 20:52:19 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 17 16:12:15 2017 +0000"
      },
      "message": "Reduce using ArtMethod\u0027s dex_cache_resolved_types_.\n\nAvoid using the ArtMethod\u0027s dex cache type array shortcut\nin runtime, preparing for its removal. We do not completely\nremove the shortcut yet because it is still used by array\nallocation entrypoints.\n\nFix ArgArray::BuildArgArrayFromObjectArray in reflection.cc\nto not ask for the parameter type to be resolved. It should\nhave been previously resolved when retrieving the Method.\n\nAlso partially revert\n    https://android-review.googlesource.com/310717\nbecause it relied on the removed AIOOBE check in the removed\nArtMethod::GetDexCacheResolvedType(). The removed check was\nsimply defensive but it could not be triggered without some\nmemory corruption.\n\nTest: m test-art-host\nBug: 30627598\nChange-Id: Ic45a5ff8c66b79429e440cbc08d67bf22a083682\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": "19a4d374738da4dc668a078f92dbe887ff9f00d9",
      "tree": "a210638e93d80cf0a297de07f4c9cdc60784ce50",
      "parents": [
        "aea9ffece7eb32f3884a4ad0553e1df4d90fd9e4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 08 14:41:46 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 09 13:30:00 2016 +0000"
      },
      "message": "Clean up Class::GetDirectInterface().\n\nOnce the `klass` has been resolved, this function should not\nneed to resolve interface types anymore. Drop the type\nresolution from this function and pass the Class as ObjPtr\u003c\u003e\ninstead of Handle\u003c\u003e. Make callers that expect non-null\nresult DCHECK() that assumption. For the callers that may\nactually need to resolve these interface classes, introduce\na new function ResolveDirectInterface().\n\nAlso improve ObjPtr\u003c\u003e constructors and assignment operator\nto improve overload resolution. For example, if we have\nfoo(ObjPtr\u003cT1\u003e) and foo(ObjPtr\u003cT2\u003e), calling foo(.) with\na T1* would have previously been ambiguous even if T1 is\nnot a base of T2.\n\nTest: m test-art-host\nChange-Id: Iff44a7285f68f0af4507fc9ba37343865422fe84\n"
    },
    {
      "commit": "08883debd927d18c9ecf66683a2a11aa98165656",
      "tree": "a73e1025905c5d5a4a64f1f20fcc4fc5295c5f5e",
      "parents": [
        "8bab69aafb3039f1dfe4aad4faf2a99986018abb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 13:20:52 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 13:20:52 2016 -0800"
      },
      "message": "ART: Refactor jfieldID handling\n\nArtField objects have been native since Marshmallow.\nRemove the dependency on being runnable. Refactor the\ncode into the jni_internal header.\n\nTest: m test-art-host\nChange-Id: I46708c70f9b4b566d7e26e4c5ffc3f0cbadc43fa\n"
    },
    {
      "commit": "13b27842e88ccf1a42807c92daeb108e867dc4cd",
      "tree": "d95968f678070058ec084376d561c7ed4f1bcff3",
      "parents": [
        "689a331aded82340d2ab144d0adb9bbbbd4b53ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 07 16:48:23 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 07 19:45:48 2016 -0800"
      },
      "message": "ART: Refactor jmethodID handling\n\nArtMethod objects have been native since Marshmallow.\nRemove the dependency on being runnable. Refactor the\ncode into the jni_internal header.\n\nTest: m test-art-host\nChange-Id: I1385fcd4c08981491701da55a87036b447aa2fc2\n"
    },
    {
      "commit": "eb84221ffc00357be6d69e2e461c7a45ee96334a",
      "tree": "00e6a0884a62dfb448e4d617699fe511307db74f",
      "parents": [
        "19c5e5f3e92db92e4a51b354743cbb0edd8e0f48"
      ],
      "author": {
        "name": "Leonard Mosescu",
        "email": "mosescu@google.com",
        "time": "Thu Oct 06 17:26:36 2016 -0700"
      },
      "committer": {
        "name": "Leonard Mosescu",
        "email": "mosescu@google.com",
        "time": "Tue Oct 25 19:46:58 2016 +0000"
      },
      "message": "Enable agent attaching during live phase\n\nThis is the ART part, the plumbing from VMDebug_attachAgent() to\nactually loading the agent into the runtime.\n\nTest: m test-art-host\n\nBug: 31682382\n\nChange-Id: I3ccc67aa050c1f78278882128983686ed44ddec2\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": "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": "2d8559517759dcfac749a28d6713d36809ec556f",
      "tree": "5fb2530b8c7f181dfc073430926bc02c4217db9a",
      "parents": [
        "000432d9a4f828ed6736d2003a5d78de5484a384"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 12 19:37:59 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 12 20:34:22 2016 -0700"
      },
      "message": "Move Heap::GetInstances to use Handles\n\nPrevent moving GC bugs from VisitObjects. Fix JDWP tests.\n\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nBug: 31113334\nChange-Id: Ie7f51f1980ec0c1eddc3b59c3e49564eacb3be85\n"
    },
    {
      "commit": "aea9bfb051bb197fdfb63d56ff0f3d63b36eb499",
      "tree": "d43263caa4e04ac524297421329a68ef8dd78c65",
      "parents": [
        "a9daa3a26900cd0f0f9ee7dab72980fc990adda6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 12 19:19:56 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 12 19:21:40 2016 -0700"
      },
      "message": "Use handles for GetReferringObjects\n\nRequired since VisitObjects may cause thread suspension. Fixes\nfailing jdwp tests.\n\nTest: test-art-host\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nBug: 31113334\nChange-Id: Ic11780b3778c83e7812bc90c0723a293537f376c\n"
    },
    {
      "commit": "e8a3c576301fd531d5f73a65fc8b84a63619d580",
      "tree": "a00e488f153505ee890c28873308d373e6ab231b",
      "parents": [
        "e8317d90c61dde07c12e404a2bc1fabf584905c1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 11 16:52:17 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 12 13:30:54 2016 -0700"
      },
      "message": "Replace StackHandleScopeCollection with VariableSizedHandleScope\n\nVariableSizedHandleScope\u0027s internal handle scopes are not pushed\ndirectly on the thread. This means that it is safe to intermix with\nother types of handle scopes.\n\nAdded test.\n\nTest: clean-oat-host \u0026\u0026 test-art-host\n\nChange-Id: Id2fd1155788428f394d49615d337d9134824c8f0\n"
    },
    {
      "commit": "9d156d500801accee919b6d51e22d6ddcdcd4a05",
      "tree": "92129562c0ba1673c660297f26444a4a2ad31459",
      "parents": [
        "078483d4dfd049d5b3f192a99e2dfdc355e4754f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 06 17:44:26 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 12 09:49:49 2016 -0700"
      },
      "message": "Move Heap parameters to ObjPtr\n\nDeleted some unused object dumping code.\n\nTest: test-art-host\n\nBug: 31113334\n\nChange-Id: I747220caafe6679591fd4b361d7f50383a046164\n"
    },
    {
      "commit": "f8ac97f94aad9ce2d324c2c7c21dde3abf13315b",
      "tree": "9359680f07a65531898113dd335020db33b9b6e6",
      "parents": [
        "299958fc681f591fee7ff9ae0d81bd3adfebdd2b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 15:56:52 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 15:59:57 2016 -0700"
      },
      "message": "ObjPtr misc cleanup\n\nCheck for subtypes in constructor.\n\nRemove various calls to MakeObjPtr and ObjPtr::Ptr.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I8d680d514ea52cd64fc4f7c2e988926bc726174e\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": "3398c7874e002beaa6c2b2fadf183e7d1ddad23a",
      "tree": "7db754b5b0c3a6c68bc1f91d7cb2477f534d2ad3",
      "parents": [
        "462e21cc8d28a4d48342cf0f634bd1ecc63647d7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 30 10:27:43 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 14:06:27 2016 -0700"
      },
      "message": "Move ArtField to ObjPtr\n\nAdded EXPECT_OBJ_PTR_EQ and variants to gtests.\n\nFixed moving GC bugs in:\nClassLinker::CreatePathClassLoader\nClassLinkerTest: StaticFields\n\nObjPtr Decode call sites: 186 -\u003e 181.\n\nSome tests fail due to ResolvedFieldAccessTest, will fix in follow\nup CL.\n\nBug: 31113334\n\nTest: test-art-host CC baker\n\nChange-Id: I8b266ad00f3c20c8cbe7cfdf280d175083df0b88\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": "de19a25625823496bcf8f92352f709c7a3924bfa",
      "tree": "4742efe941270c72a8e966c0bdb788b87f6e5b1d",
      "parents": [
        "fad6f4dbf914418e7b16fc78a77578edfa618b72"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 14 15:56:35 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Sep 15 18:11:37 2016 -0700"
      },
      "message": "Ensure class is initialized when reading its fields from debugger.\n\nBug: 31016523\nTest: mm run-jdwp-tests-ri \u0026 mm run-jdwp-tests-host\nChange-Id: I6bccf8464de7ec1e0c1fdac862cbacf890abede6\n"
    },
    {
      "commit": "26ead4975e1752e8ae2f5ed6fda73876c4f9ff59",
      "tree": "2ce1b047f54bfb4287483de8eaf79cd12f6058b6",
      "parents": [
        "79f6d706185714dccf80aca20d9f3261337473ae",
        "268764da8022cafa5661c5b514eaa343c5257e57"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 14 16:55:56 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 14 16:55:56 2016 +0000"
      },
      "message": "Merge \"Make ScopedAssertNoThreadSuspension no overhead for non-debug\""
    },
    {
      "commit": "9323e6e44060545d6c4f925139572868f65b7fe3",
      "tree": "65f3f380605d75f34d49aec49fca494bec26ef5b",
      "parents": [
        "58735fbfbb2da0c0a19b3239da07c2353c40767d"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Sep 13 08:58:35 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Sep 14 08:01:39 2016 -0700"
      },
      "message": "Separate annotations from dexfile reading.\n\nBug: 22322814\nChange-Id: I867d66da407dd80394a10d19903ebbc1ec3986ff\nTest: test-art\n"
    },
    {
      "commit": "268764da8022cafa5661c5b514eaa343c5257e57",
      "tree": "7c4b46847a6dcfac7a1492edd79b434fb1a0d6ea",
      "parents": [
        "f9decf915f6fa5b33fceba7c10c119e4cad481e5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 13 12:09:38 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 13 15:18:29 2016 -0700"
      },
      "message": "Make ScopedAssertNoThreadSuspension no overhead for non-debug\n\nPreviously it required Thread::Current() which may not be free.\nThe plan is to add a lot more ScopedAssertNoThreadSuspension in\nthe codebase.\n\nAlso cleaned up callers.\n\nBug: 31458474\nChange-Id: I5a1621a5435476504d22266cc01a9bf26aab7568\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": "064d24e921978a1d44f23aced69d2657d81e9af4",
      "tree": "4f6ead01ca2c43c990dea3fe0b66e44b91f78946",
      "parents": [
        "2851ce0ca21742e3fb33583e87b4da577138d572"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 25 03:52:40 2016 +0000"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 24 21:04:48 2016 -0700"
      },
      "message": "Revert \"Revert \"Fix debugger calling new String().\"\"\n\nBug: 30951794\nTest: mm -j24 run-jdwp-tests-host\n\nThis reverts commit 6f48d4c72e7b4011a6d9652734bd1cb0c389790b.\nThis also includes the reversion of commit\n528954f55e3173b02df2822c1fc680873d6a91c8.\n\nChange-Id: If0b2ae39cb2a9db80b567bb8d5761d504433632d\n"
    },
    {
      "commit": "f91b5f33728bcad74f0d95bf6d81478e4ea77626",
      "tree": "a5b419744a003704a10df4f6129036d831925965",
      "parents": [
        "85f692bc439bd8b14f59b44fc271f3beaf079da7",
        "6f48d4c72e7b4011a6d9652734bd1cb0c389790b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 24 13:48:47 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 24 13:48:48 2016 +0000"
      },
      "message": "Merge \"Revert \"Fix debugger calling new String().\"\""
    },
    {
      "commit": "85f692bc439bd8b14f59b44fc271f3beaf079da7",
      "tree": "ea72de38103b6471cea5da81300393a2a63d1986",
      "parents": [
        "66e7ba24b7f5708515dff42e19d75ae29df1bf37",
        "528954f55e3173b02df2822c1fc680873d6a91c8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 24 13:48:08 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 24 13:48:08 2016 +0000"
      },
      "message": "Merge \"Revert \"Fix debugger missing handle between adding and tagging object.\"\""
    },
    {
      "commit": "528954f55e3173b02df2822c1fc680873d6a91c8",
      "tree": "4ff7d247cf019a0fda43210d463771eb9fd4607c",
      "parents": [
        "9e0878494cdacd0877a1614041efc38ebb053017"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 24 13:40:41 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 24 13:40:41 2016 +0000"
      },
      "message": "Revert \"Fix debugger missing handle between adding and tagging object.\"\n\nBug: 30951794\n\nThis reverts commit 9e0878494cdacd0877a1614041efc38ebb053017.\n\nChange-Id: I3fe1c7e466ae25a81cd37ee5a4aacb40b55686a1\n"
    },
    {
      "commit": "6f48d4c72e7b4011a6d9652734bd1cb0c389790b",
      "tree": "96d0e872b50daad88dbb77357c8e0102b1a4b69d",
      "parents": [
        "f15ec05896ddc5fec1f224ef97bdfebb72b5a855"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 24 13:39:08 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 24 13:39:08 2016 +0000"
      },
      "message": "Revert \"Fix debugger calling new String().\"\n\nBug: 30951794\n\nThis reverts commit f15ec05896ddc5fec1f224ef97bdfebb72b5a855.\n\nChange-Id: Ie7fc565159a19a19a269099f21db833d470aef7c\n"
    },
    {
      "commit": "51a0c4fe2dabeb21525d377047b68031b6fe0186",
      "tree": "83a02e40cd106e6decbf100870b2e931232820db",
      "parents": [
        "e99331f7a430b0b72142dd0b8b0689421489dcf6",
        "3aaa37bba53d6df0265793de48b4b0b57327e57a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 24 00:50:38 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 24 00:50:39 2016 +0000"
      },
      "message": "Merge \"creating workflow for mirror::String compression\""
    },
    {
      "commit": "3aaa37bba53d6df0265793de48b4b0b57327e57a",
      "tree": "ce795803f0f10003eb3d96d9348da620937675b3",
      "parents": [
        "792c98bb773c8c2390f9cbf774f85be9d9a75332"
      ],
      "author": {
        "name": "jessicahandojo",
        "email": "jessicahandojo@google.com",
        "time": "Fri Jul 29 14:46:37 2016 -0700"
      },
      "committer": {
        "name": "jessicahandojo",
        "email": "jessicahandojo@google.com",
        "time": "Tue Aug 23 15:12:26 2016 -0700"
      },
      "message": "creating workflow for mirror::String compression\n\nAll-ASCII String characters are stored in 8-bit blocks\ninstead of 16-bit. The compression has not taken place, but all\nworkflow are in the code already (changing kUseStringCompression in\nstring.h file to TRUE will enable the feature)\n\nNotes: Feature works on interpreter only without optimizing\n\nTest art: m ART_TEST_INTERPRETER\u003dtrue ART_TEST_OPTIMIZING\u003dfalse\n          test-art-host\n\nAlso tested with String tests from libcore/:\n1. libcore.java.lang.StringTest\n2. libcore.java.lang.StringBufferTest\n3. libcore.java.lang.StringBuilderTest\n4. libcore.java.lang.OldStringTest\n5. libcore.java.lang.OldStringBufferTest\n\nMemory improvement is 33% (from 6.03% to 4.03%, total String memory\nfrom all apps per total memory of all apps) measured on Angler\nwith Hprof tools\n\nBug: 31040547\nChange-Id: I9cc92c265ebf1305fc06b5fc33efd83797660cce\n"
    },
    {
      "commit": "9e0878494cdacd0877a1614041efc38ebb053017",
      "tree": "d0b74ea1324541e70534c2fa64bc0781ffffedc5",
      "parents": [
        "82a4c22ef4277faa08bf588c560c3dddcca559d2"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 22 11:34:41 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 22 11:35:55 2016 -0700"
      },
      "message": "Fix debugger missing handle between adding and tagging object.\n\nBug: 30951794\nChange-Id: Ic9c5f296efe839a8961ab00d08afc54c5443bc17\n"
    },
    {
      "commit": "f15ec05896ddc5fec1f224ef97bdfebb72b5a855",
      "tree": "9a8c3117d032160e5d8ab63be8465858bc2acef7",
      "parents": [
        "6670bd2098264d4c4e19750ab4741121da7ee54b"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 19 18:31:39 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 19 18:31:39 2016 -0700"
      },
      "message": "Fix debugger calling new String().\n\nUsed to return an empty string instead of the newly created String.\nRequires accompanying jdwp test fix to test String contents.\n\nBug: 30951794\nChange-Id: I27a8e0afcbe7e32a14dd3c394e44b6cd4d3c58f6\nTest: mm -j24 run-jdwp-tests-host\n"
    },
    {
      "commit": "aef0c91e0b03f26c3947ccf2608d92ae6eae632d",
      "tree": "08d60d0b9b18a87fa02cfd71ccbe94dcc54f785c",
      "parents": [
        "c10ad423024432df36f6360eafca8332d07b946a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Aug 08 10:20:28 2016 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 09 17:41:17 2016 +0200"
      },
      "message": "JDWP: fix method argument count\n\nThe arguments count must include \u0027this\u0027 for instance method.\n\nBug: 30673627\nTest: make test-art-host\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nChange-Id: Ie582e3bb3e27a2572ce5d3c66990f02650eee61b\n"
    },
    {
      "commit": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    },
    {
      "commit": "faf18de818bc39c25d0c87715c19c375b761a463",
      "tree": "688f1d8244c57679394be092dd17c5c282884dcb",
      "parents": [
        "bbfa42aa4c4b5cbc2ed2d8bdea6ff76da615a8aa",
        "98810e34804e224e5ab302cd353393f72a45202b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 26 20:30:34 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 26 20:30:34 2016 +0000"
      },
      "message": "Merge \"Remove SetStateUnsafe in Debugger::Disconnected.\""
    },
    {
      "commit": "98810e34804e224e5ab302cd353393f72a45202b",
      "tree": "696693111fa137965fe03efc29a20b687cfb3b66",
      "parents": [
        "783d02e527107e91880f12bddf41afd313919132"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue May 24 14:55:40 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 26 11:45:13 2016 -0700"
      },
      "message": "Remove SetStateUnsafe in Debugger::Disconnected.\n\nThe debugger thread has the exclusive mutator lock and doen\u0027t need to\nswitch to runnable while updating instrumentation.\n\nThis avoids a spurious failure of the DCHECK in the jdwp test.\n\nBug: 25262836\n\nChange-Id: Ibfd0bc3936a877fd264396fcc4cc1af8d19a1645\n"
    },
    {
      "commit": "3fd448a8b7903b00fceaed5853306e2d7eb31c72",
      "tree": "5ef4f837bb7d0be0f1af86279f22b64b18db8000",
      "parents": [
        "73660f87497cadb77e8b33b4f5e01c34baae00dc"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue May 10 14:30:41 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 16 15:33:19 2016 -0700"
      },
      "message": "Fix an assert during jdwp debugging.\n\nWhen debugger attaches, we patch entry points of methods in framework code.\nDuring that process, it\u0027s possible that some method\u0027s declaring class isn\u0027t\nresolved yet. We need to relax one assert for that case.\n\nBug: 28630805\nChange-Id: I59fd488ad75417a64b52321677ffcac6ccdc5ce1\n"
    },
    {
      "commit": "8f95cf3cb5f715b1277de9cd7fade07ce4b230be",
      "tree": "b66e14b2df428fed5117caa709bc70462d351892",
      "parents": [
        "defccc564481c2c892792680c6abb6020e36bacd"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Apr 19 11:14:06 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Apr 19 11:17:09 2016 -0700"
      },
      "message": "Fix a deadlock between debugger and GC.\n\nAvoid a deadlock between GC and debugger\u0027s SuspendAllForDebugger where\nGC gets suspended during GC.\n\nFix the jdwp tests with the CC collector, but the deadlock is NOT\nspecific to the CC collector.\n\nBug: 25800335\nBug: 12687968\nChange-Id: I8f2869872bce4692d943020072e35ebf5a4e68a5\n"
    },
    {
      "commit": "458b105a9cbab6156d72acf3b9372291dba9097a",
      "tree": "af01339c9c0e18a16455ebc64098bb683055c94b",
      "parents": [
        "fd9ac384741435902d4fc03034f4cbaafaa85780"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 29 14:02:55 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 31 13:00:07 2016 -0700"
      },
      "message": "Obtain stack trace outside of critical section\n\nFixes deadlock if the stack walk does allocations, changed stack\ntrace format to prevent slowdown.\n\nAdded missing GetInterfaceMethodIfProxy to fix a crash in maps.\n\nBug: 27857910\n\n(cherry picked from commit 23428587d32361736d4c5e0ba7270c7602695a43)\n\nChange-Id: I64373bcd87a68fdd1b58fb855db2b16c9f6ed36b\n"
    },
    {
      "commit": "1153282aa91292b740289ab7612a481e5c6bc167",
      "tree": "75e86834c4c0f68144340ab5c6d7933f5b27adaa",
      "parents": [
        "459898dc4470559ba1e1d578bc52a914d1f573f5",
        "6300fd77033817664aee3056c4ff5fab85698d2b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 21 14:53:09 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 21 14:53:09 2016 +0000"
      },
      "message": "Merge \"Code cleanup between debugger and jit.\""
    },
    {
      "commit": "6300fd77033817664aee3056c4ff5fab85698d2b",
      "tree": "55e14dca88cad3d5a733a9a7a50534556cb838b5",
      "parents": [
        "db1f7dac02f6dcecac3e032f10abbcdbf3cf4331"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 18 09:40:17 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 21 14:42:47 2016 +0000"
      },
      "message": "Code cleanup between debugger and jit.\n\nThis is to allow secondary dex files to be fully compiled.\n\n- No need to do full deopt anymore for breakpoints: code in boot.oat\n  is deoptimized as soon as the debugger attaches (and we decided that\n  existing frames could not be debugged), and application being\n  debugged is compiled debuggable.\n\n- jit should only call UpdateMethodsCode if exit stubs are not\n  installed due to lock violation otherwise (the lock level of the\n  jit code cache is lower than the deoptimization lock).\n  This part needs an overall cleanup beyond the scope of this change.\n\nChange-Id: I38d85dcb270db746c1d6b0ceb7893a1aad8c9655\n"
    },
    {
      "commit": "f448016e70fa91269d3750384aab1ac98d7896fd",
      "tree": "9bb4414c763d13c2e178472d3bf1ee73bce97392",
      "parents": [
        "8e57978b5f330a322f05644c2db7fa8ce89b1b46"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Mar 16 00:06:24 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 17 11:54:49 2016 +0000"
      },
      "message": "Do not JIT boot image during native-debugging (keep AOT code instead).\n\nThe performance impact is currently significant and being able\nto debug framework is not our primary goal for native debugging.\n\nChange-Id: I3366c2a6317004f9dd16700b271a6c9b974f1c6e\n"
    },
    {
      "commit": "6ea1a0e2168c8d9b6d97c075c73a72d84080f45b",
      "tree": "7a75b6191dc6539823c174e06256dd09ae50c637",
      "parents": [
        "b4982aab07ae4cdaba13b4cb99306459d92e52d5"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Jan 29 12:12:49 2016 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Feb 23 13:44:50 2016 -0800"
      },
      "message": "AOT compile framework code as non-debuggable\n\nWhen a debugger attaches, we patch method entry points in framework\ncode to interpreter bridge. The code will later be jitted as debuggable.\n\nChange-Id: Id148069ccad95e2339ba214742ae3ef4f084f495\n"
    },
    {
      "commit": "1aa8ec2ccdd7bedb6d30d91c89f1e94ab23c4439",
      "tree": "7b2079631ed5d8350c63c7ed3f6d0393e951ce8c",
      "parents": [
        "c3cf1d2e35a45bd2e2c60fbc9c2a1a6a56dfc529"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 01 10:34:47 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 01 19:58:25 2016 -0800"
      },
      "message": "Fix up dex cache strings stored in classes\n\nPreviously we left the image pointer instead of fixing up the pointer\nto the one in the BSS. This only showed up because JIT does the same\nas boot image, bypassing null check.\n\nFixed a bug where oat files without embedded dex cache arrays would\nget their dex cache arrays corrupted.\n\nAdded a non virtual class visitor for performance.\n\nBug: 26846419\nBug: 22858531\n\nChange-Id: I8cd0d61e440f753b4628ddb8c932eb23a0a81027\n"
    },
    {
      "commit": "81f0f953c4bb159997046c962d44cb1898b1778d",
      "tree": "dffd9e7cdd53da2771770a59832e76769b696c0b",
      "parents": [
        "a27d59b2b98a02b2e9e5dbe40623e7a97aa1e8d8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 20 16:25:19 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 21 14:19:55 2016 +0000"
      },
      "message": "Move backward branch instrumentation to all branch.\n\nThis is in preparation for osr, and later dead branch profiling.\n\nChange-Id: I4597c0784c894c310f295dd534967d67dcefa419\n"
    },
    {
      "commit": "7929a489a9b256020d3add793198ba1e97e426e6",
      "tree": "e4d0344e577666b431d8f508d2be1f7788d8679a",
      "parents": [
        "7a62feae77ebec5119f5e9bea2a6c1cb36ed3084"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 30 19:33:49 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 30 19:33:49 2015 -0800"
      },
      "message": "ART: Fix JDWP GetClassLoader command\n\nThe command is spec-ed to take a type, and return the type\u0027s\nclassloader. Decode the input as a class, just like all the\nother ReferenceType commands already do.\n\nBug: 26349019\nChange-Id: I129fbc844f529fa9234742ffe128d7ac41ce6d7e\n"
    },
    {
      "commit": "7a62feae77ebec5119f5e9bea2a6c1cb36ed3084",
      "tree": "55ecd644063bc95fb68871580a0f1e23cac631ea",
      "parents": [
        "bb41b250153308ef51664d7a6cc26c6a2e588fb7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 31 03:31:57 2015 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 30 19:32:58 2015 -0800"
      },
      "message": "Revert \"ART: Fix JDWP GetClassLoader command\"\n\nThis reverts commit 40144cc022d321e2ec28d7fac2f5a24ba6714aff.\n\nThe implementation should not DCHECK.\n\nBug: 26349019\nChange-Id: I9238ee0b05f8a150f55773e78301ded9e8b38334\n"
    },
    {
      "commit": "40144cc022d321e2ec28d7fac2f5a24ba6714aff",
      "tree": "b36e6011fc73e4c3ca33c34627b7420927129519",
      "parents": [
        "4ee5c8c8389a231a5db030d77276daca6333c4d1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 29 16:23:20 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 29 16:23:20 2015 -0800"
      },
      "message": "ART: Fix JDWP GetClassLoader command\n\nThe command is spec-ed to take a type, and return the type\u0027s\nclassloader. The input is thus already a Class, not a generic Object.\nFix the implementation to not always return null.\n\nBug: 26349019\nChange-Id: I4aa075902f4a112624edc644d3540a59eea057c8\n"
    },
    {
      "commit": "1fc9ac74a51ee319422ed1a6a741bf635f909517",
      "tree": "cd4981c8a3ac21ae3b0d149ac8e68401e4ed15ed",
      "parents": [
        "0e8f03a7ef78bed5511b6eab4b17b594068c9418",
        "c4affaa361cd73681ad9c493b5b41fae94fb5be0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 18 23:10:49 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 18 23:10:49 2015 +0000"
      },
      "message": "Merge \"Make use of new method iterators.\" am: 045d37ae20\nam: c4affaa361\n\n* commit \u0027c4affaa361cd73681ad9c493b5b41fae94fb5be0\u0027:\n  Make use of new method iterators.\n"
    },
    {
      "commit": "51a64d5d4fe91842cc2a5f2a412441147c145683",
      "tree": "dca598e01c333bce50b50d931516027987b4f343",
      "parents": [
        "fae1db92d8433d0f75258c190bcf2c940731f036"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 17 13:55:59 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 17 14:18:45 2015 -0800"
      },
      "message": "Make use of new method iterators.\n\nChange-Id: I1f82f17951339b2054a1dac87bde79f9e803fc4a\n"
    },
    {
      "commit": "02e0382b7d277f5d7587a4717619d03e344d52bc",
      "tree": "8605c35fa321eb55f1f3b538fe7b287473d596f2",
      "parents": [
        "64a12038e19d5c9d1fc4080281299c07ac4aa0a0",
        "ed3ae851f06f8ff6c2c0e86011e3df83267a7f09"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 16 19:14:07 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Dec 16 19:14:07 2015 +0000"
      },
      "message": "Merge \"Remove references to dlmalloc specific functions\" am: 1f312652e1\nam: ed3ae851f0\n\n* commit \u0027ed3ae851f06f8ff6c2c0e86011e3df83267a7f09\u0027:\n  Remove references to dlmalloc specific functions\n"
    },
    {
      "commit": "1f312652e138e05328b9c4c738d3ecbab2d09ae9",
      "tree": "412147f93661a5663f1cef6e72657aaadb5f0cb7",
      "parents": [
        "c3ca1e6543ef5e717183c059e68ac34597be7022",
        "e6465bc8a52cfa3995b4072810cdb7ab397a7793"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 16 19:00:55 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 16 19:00:55 2015 +0000"
      },
      "message": "Merge \"Remove references to dlmalloc specific functions\""
    },
    {
      "commit": "75009e8acd80cc4111a4cebbc350dad895ad1f55",
      "tree": "7114dfe68c682ef4692d0c2b0448fb87056d4d6e",
      "parents": [
        "c5b8e84236126a1176d97fe8f924d8cb40c1de6e",
        "2b1db0743f7af28785b92e30436cce20143872be"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 15 08:19:06 2015 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Dec 15 08:19:06 2015 -0800"
      },
      "message": "Merge \"Refactor DexFile::DecodeDebugInfo.\" am: 96c9de9510\nam: 2b1db0743f\n\n* commit \u00272b1db0743f7af28785b92e30436cce20143872be\u0027:\n  Refactor DexFile::DecodeDebugInfo.\n"
    },
    {
      "commit": "b06e28e5b9fbabe3e69b18f31bf353eaff5d0c1f",
      "tree": "18ff419c6a3b80ecff3125f13b72a8851e848ab0",
      "parents": [
        "f71b3ade9c99ce2fec2f5049ce9c5968721e1b81"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 10 13:15:00 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 15 15:11:50 2015 +0000"
      },
      "message": "Refactor DexFile::DecodeDebugInfo.\n\nSplit the method into two - one for locals and one for positions.\nAll uses of the method request only one of the two and it makes the\ncode slightly cleaner. The position variant requires fewer parameters.\n\nExpose additional line table information which was previously ignored\nby the decode method (prologue, epilogue, source file).\n\nChange-Id: Idf8ba98fa58ea0d2103932b5cc0af81365885107\n"
    },
    {
      "commit": "e6465bc8a52cfa3995b4072810cdb7ab397a7793",
      "tree": "129552e367889a6b6a19a5010613bd0fe34cd80b",
      "parents": [
        "a8be6ae6fcf1c58c0c2067739352e16b92972c41"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 14 18:55:02 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 14 20:44:25 2015 -0800"
      },
      "message": "Remove references to dlmalloc specific functions\n\nRemove references to internal libc dlmalloc_* functions\nso that we can hide them for lp64\n\nChange-Id: I13977bea63d900e1819052140e3bd6bc1f2fc759\n"
    },
    {
      "commit": "27786445aa50d7082071baf5eba356348079e167",
      "tree": "1c4778b17880a863b724aa3b55c234031a57336b",
      "parents": [
        "2f4b12233a2620deed38c20026ef878cb819f2a3",
        "eec0132c41ad3e1c3f8daf2996824a593429577c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 30 23:45:29 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Nov 30 23:45:29 2015 +0000"
      },
      "message": "Merge \"Make debugger support default methods.\" am: 996935e961 am: 679841d2be\nam: eec0132c41\n\n* commit \u0027eec0132c41ad3e1c3f8daf2996824a593429577c\u0027:\n  Make debugger support default methods.\n"
    },
    {
      "commit": "6c8467ffc427a513dc2fdea7ed9eeb0bb54d30ef",
      "tree": "a3f0258c260e3818c32aa254d484724fde1d16d3",
      "parents": [
        "b9bbbeb2b05d74cae0fe0682a26b19f5a7e68d8c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Nov 20 15:03:26 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 30 22:39:43 2015 +0000"
      },
      "message": "Make debugger support default methods.\n\nSupports breaking on, stepping into and through default methods.\n\nBug: 25549445\nBug: 24618811\n\nChange-Id: I1a47e3263a0624adbd9e83b99d0acd7bef7757a4\n"
    },
    {
      "commit": "464595f53abe4370ee6f589eb472e2036e39bce7",
      "tree": "eb623b90c89b6dd57aed8b535588fc6ca858bab2",
      "parents": [
        "099ab4d06857ccbe642d98ba25df1eb02aee99c7"
      ],
      "author": {
        "name": "Przemyslaw Szczepaniak",
        "email": "pszczepaniak@google.com",
        "time": "Tue Nov 24 11:59:59 2015 +0000"
      },
      "committer": {
        "name": "Przemyslaw Szczepaniak",
        "email": "pszczepaniak@google.com",
        "time": "Tue Nov 24 11:59:59 2015 +0000"
      },
      "message": "Enso ThreadGroup.groups is an array not ArrayList\n\nThreadGroup.groups in the enso branch uses plain\narray in place of ArrayList. debugger.cc code\nneeded minor adjustments to access it.\n\nBug: 25857261\nChange-Id: I77ffb92b64a3642933c3240dbadedab5def5dc1b\n"
    },
    {
      "commit": "a7a3ba792d608535e4d53ccc3b7a89d110609f12",
      "tree": "2c9910ecd7ea709ed02f65878b3ada9b06e97be1",
      "parents": [
        "3e1ff83fb210818df66b7a0a7bc70dca6c7b9d47",
        "636b9252af8d8848dbf8f30b7e9638867b62c791"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Nov 18 10:29:22 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 18 10:29:22 2015 +0000"
      },
      "message": "Merge \"Support deoptimization only to set vreg\""
    },
    {
      "commit": "636b9252af8d8848dbf8f30b7e9638867b62c791",
      "tree": "ef2d3080fab4c51e320114e012bcde49aaa089e4",
      "parents": [
        "6bf6e438cd4746effce0b26d504c54100191c988"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Jul 31 16:40:24 2015 -0700"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 17 11:57:12 2015 +0100"
      },
      "message": "Support deoptimization only to set vreg\n\nThis CL removes the old API that was used to update vreg. We now rely\nexclusively on deoptimization to change the value of a vreg (mainly\nfrom the debugger). This allows to have only one mechanism working\nwith both Quick and Optimizing compilers. It also remove run-test\n455-set-vreg which was the only user of the old API.\n\nThis CL also renames StackVisitor::SetVReg[Pair]FromDebugger to\nStackVisitor::SetVReg[Pair] to reflect that change.\n\nBug: 25428216\nChange-Id: Ib09510185280dbd0f6d02c52549ae9671c187e32\n"
    },
    {
      "commit": "dc184177452ed438718befccd9d984cc93de51cc",
      "tree": "808ea305a96e13a65e031e69e4c0aa0640a3183e",
      "parents": [
        "2264f624e41acf09b17c3961bd52966e43f2b58f",
        "a5891e81a2fb833307cf7c7e7267070dc0223dc8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 09 08:57:28 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 09 08:57:28 2015 +0000"
      },
      "message": "Merge \"Fix interaction between JIT and instrumentation.\""
    },
    {
      "commit": "a5891e81a2fb833307cf7c7e7267070dc0223dc8",
      "tree": "a7acb2a0f2836fee2729db2b795d15bb3f586863",
      "parents": [
        "2fa684206b0a8bd203d07e1edf74a839b498f74f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 14:18:27 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 16:05:42 2015 +0000"
      },
      "message": "Fix interaction between JIT and instrumentation.\n\n- The JIT needs to go through the instrumentation to update\n  entry points.\n- The instrumention needs to know if a method got JITted\n  to know if needs to deoptimize.\n\nbug:25438583\n\nChange-Id: I4b186a1da9f4a3fb329efd052a774d5502a902a1\n"
    },
    {
      "commit": "a3e1377f3f389a33f6a283796ea5cea1583911f3",
      "tree": "4e78b7db0e3a8f3b58321bf2bcabe8231f369ec7",
      "parents": [
        "55a77ef5f99c2b056eb5f2820c1ff3b29c0ec270"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Nov 05 12:09:44 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Nov 05 15:50:45 2015 +0100"
      },
      "message": "JDWP: fix returned tag for ClassType.NewInstance\n\nBug: 25490662\nChange-Id: I0c369f04342a60caef4f7462005804307a410d18\n"
    },
    {
      "commit": "56d5e50a7519495777f3223e21b9d73d8ceaa6ad",
      "tree": "0f69811b89768281809c69d66966fbb9f463f706",
      "parents": [
        "4bbe7807f313bb8e59131812c31bf31513094f8f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 03 17:38:35 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 03 17:38:35 2015 +0100"
      },
      "message": "JDWP: fix java.lang.String creation\n\nBug: 25439464\nChange-Id: I56f11ed942585e8110dbbba1178cf11ec76e032f\n"
    },
    {
      "commit": "41af5e50d0b5e9d13084a61cfe9dfa6b6e201a40",
      "tree": "d8c47581bf110021fa10c05351d33c5f873e11e3",
      "parents": [
        "13f6af0f9c8af1fce34e9610ad9d30d4d0434478"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 28 11:10:46 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 28 15:42:42 2015 -0700"
      },
      "message": "Store method as ArtMethod* instead of jmethodId in Breakpoint\n\nPreviously we needed a ScopedObjectAccess for Dbg::VisitRoots,\nthis could cause deadlocks in the following scenario:\n\nGC:\nGoes to runnable state while holding mutator lock as shared held.\nThis occurred in Dbg::VisitRoots when calling Breakpoint::Method.\n\nOther thread:\nCalls SuspendAll and suspends the GC thread before it can go back\nto suspended thread state. This thread then attempts to exclusive\nlock mutator lock, but the GC is suspended while holding it in a\nshared state.\n\nBug: 25336094\nChange-Id: Idcb8d34c314b1d6951abe533a0cfa586cc07d7d6\n"
    },
    {
      "commit": "4b8f1ecd3aa5a29ec1463ff88fee9db365f257dc",
      "tree": "d113f8a5c6b61c078256cf15c7cbb9f7c8de0390",
      "parents": [
        "114873103db3d4d6e0da42ca02bad1ea8826443b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 26 18:34:03 2015 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 15 12:22:39 2015 -0700"
      },
      "message": "Use ATTRIBUTE_UNUSED more.\n\nUse it in lieu of UNUSED(), which had some incorrect uses.\n\nChange-Id: If247dce58b72056f6eea84968e7196f0b5bef4da\n"
    },
    {
      "commit": "a6b1ead81603513fd40b77fd72f06d8cb1f35276",
      "tree": "3ba5add50b6b0034024e65c6de3aea1004ec5161",
      "parents": [
        "bcb71a2ce5bcb516f76fc9fe838b61b0c48e1210"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 06 10:32:38 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 06 13:24:20 2015 -0700"
      },
      "message": "Mark breakpoint roots\n\nUsed to prevent class unloading on methods that have breakpoints.\n\nBug: 22720414\nChange-Id: I9aee8bcbfdf253607e89dfc55a50ba3f11d99206\n"
    },
    {
      "commit": "aa5168291c46f9b418d989bccf2d8e09338a83e6",
      "tree": "bad4c44f503962fc5d74c3079f14f9af1ce7864d",
      "parents": [
        "1aba494df441c31836e5b7d4d8e408420a93cb8d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 02 15:53:37 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 05 11:50:18 2015 -0700"
      },
      "message": "Add exclusion between instrumentation and GC\n\nInstrumentation calls VisitClasses while exclusive holding the\nmutator lock. This can cause deadlocks since VisitClasses needs to\ndecode JNI weak globals. If the system weak slow path flag is set,\nthen we wait holding locks while exclusive holding the mutator lock.\nThis causes a deadlock since the GC cannot acquire the mutator lock\nto sweep system weaks.\n\nThis fixes a deadlock seen in one of the tracing tests.\n\nChange-Id: I580152118e068a70f309dcc19df4144afec835dd\n"
    },
    {
      "commit": "8ac9c91cfa2408cf8d27bcf12785a60923aab775",
      "tree": "fec6ebbdf2031aa648fa3699b3511048d64e0656",
      "parents": [
        "25217af2a7cae96b32ba566aaf697288f3374c99"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 01 15:58:41 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 01 18:06:22 2015 -0700"
      },
      "message": "Make SetStateUnsafe run checkpoints before going to suspended\n\nThis prevents cases where we can get a checkpoint request in runnable\nand then unsafe set to suspended. This was bad behavior since the\ncheckpoint may not be run in a timely manner.\n\nBug: 24191051\nChange-Id: I73605c1a1154f67699f3902141f3232ab064793f\n"
    },
    {
      "commit": "99170c636dfae4908b102347cfe9f92bad1881cc",
      "tree": "1ecff5dd69ea20b09e622cb88e7835a55dfa4be8",
      "parents": [
        "5836f8465ddd0a7f5cbeec9c30d739bd0619867f"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Jul 06 11:10:37 2015 -0700"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Sep 17 17:07:22 2015 +0200"
      },
      "message": "Deoptimization support in optimizing compiler for setting local values\n\nDue to compiler optimizations, we may not always be able to update\nthe value of a local variable in a compiled frame (like a variable\nseen as constant by the compiler). To avoid that situation, we simply\ndeoptimize compiled frames updated by the debugger so they are\nexecuted by the interpreter with the updated value.\n\nWhen the debugger attempts to set a local variable (actually a DEX\nregister or a pair of registers) in a compiled frame, we allocate a\nShadowFrame associated to that frame (using its frame id) and set the\nnew value in that ShadowFrame. When we know we are about to continue\nthe execution of the compiled frame, we deoptimize the stack using\nthe preallocated ShadowFrame (instead of creating a new one). We\ninitialize it with the current value of all DEX registers except\nthe ones that have been set by the debugger. Therefore, the\nShadowFrame represent the runtime context modified by the debugger.\n\nBumps oat version to force recompilation.\n\nBug: 19944235\nChange-Id: I0ebe6241264f7a3be0f14ee4516c1f7436e04da6\n"
    },
    {
      "commit": "26f728661a08062a373a3203b72dc2555c2aed2d",
      "tree": "4f6e8168ac7ca422c7de3c7cdda6db21958358fd",
      "parents": [
        "b6f7dd330f115fc977d1d5a10122c41c9dd7c210"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 15 09:52:07 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 15 11:15:12 2015 +0200"
      },
      "message": "Cleanup thread access in StackVisitor\n\nAdds method StackVisitor::GetThread to give access to the visited\nThread* so we no longer need to copy that pointer in subclasses.\n\nAlso adds a few missing const and DISALLOW_COPY_AND_ASSIGN.\n\nChange-Id: I57649ee7742ef4ef1e01447ac2fbb66f977b22eb\n"
    },
    {
      "commit": "4f55e22630d99ca0edd9e951e5ee96b57bb9b980",
      "tree": "84b7d55a6a7c31c09ed2865cc1bc2f4393476533",
      "parents": [
        "2d06e08d25bbf8eff1de945736a60810009e59ad"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 04 13:26:21 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 11 13:14:20 2015 -0700"
      },
      "message": "Add and use ScopedSuspendAll\n\nUsage replaces most SuspendAll and ResumeAll calls.\n\nChange-Id: I355683a5365876242cea85a656dcb58455f7a294\n"
    },
    {
      "commit": "e2cb7f297dfeb1a6e19c3b8d45b742427054fa56",
      "tree": "b5501cd32e859351b5f058da56e62accb03a3821",
      "parents": [
        "15982a940dd0032e225f8d2829609d7a35a3d842",
        "520633bebd2bf4d70884d30f179dbde9f275aac6"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Sep 11 15:40:48 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 11 15:40:48 2015 +0000"
      },
      "message": "Merge \"Support deoptimization on exception\""
    },
    {
      "commit": "5550ca8bcc742b109d77e62f3a0877c667d894d3",
      "tree": "522c873c59b56fff0244e754dd869f18ccf485f4",
      "parents": [
        "dbd357086fdb7fce619d745fda4efd52377becdd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 21 18:38:30 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 11 15:08:37 2015 +0100"
      },
      "message": "Record profiling information before Jitting.\n\n- Add a new instrumentation kind to record dynamic invokes.\n- Use the JNI entry point field to store the profiling data.\n- Record seen receivers for every dynamic invoke.\n\nChange-Id: I2c1738ab2a72052d45964d055dc16b44b906e54c\n"
    },
    {
      "commit": "520633bebd2bf4d70884d30f179dbde9f275aac6",
      "tree": "0006fb9db71545d9aaa88df3952a7488b30b2ae6",
      "parents": [
        "e0a49e3a93aa54b9e603d797d9e925a98742753a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 08 17:03:36 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Sep 10 17:39:56 2015 +0200"
      },
      "message": "Support deoptimization on exception\n\nAllows to deoptimize when an exception is being thrown. We only\ndeoptimize if an executable frame (starting from the catch handler)\nneeds to be executed with the interpreter.\n\nBefore executing deoptimized frames, the exception is restored. The\ninterpreter starts by handling this exception at the point of the\nthrowing instruction.\n\nBug: 23714835\nChange-Id: I0c5f7d4b257644acf12210aae8e5b6bb0f4af1f7\n"
    },
    {
      "commit": "957fb8930766ae422568e7b1b816159a9e9bc18c",
      "tree": "849a611f978656f1c85182402e1ef2c8ca50c5e6",
      "parents": [
        "68ffda887e35f35e978f2f607b7a91e44a5e1969",
        "05792b98980741111b4d0a24d68cff2a8e070a3a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 04 10:34:04 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 04 10:34:04 2015 +0000"
      },
      "message": "Merge \"ART: Move DexCache arrays to native.\""
    },
    {
      "commit": "f1d666e1b48f8070ef1177fce156c08827f08eb8",
      "tree": "772cbbe6652b32ea2be31532156295db27579390",
      "parents": [
        "897ce64153e4758663e464fb5fb339f9a7b496c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 16:13:34 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 17:33:19 2015 -0700"
      },
      "message": "Add ScopedThreadSuspension\n\nFixes the TransitionFromRunnableToSuspended and\nTransitionFromSuspendedToRunnable pattern that was prone to errors.\n\nChange-Id: Ie6ae9c0357c83b4fc4899d05dfa0975553170267\n"
    },
    {
      "commit": "05792b98980741111b4d0a24d68cff2a8e070a3a",
      "tree": "bad79a387bcbdaefc87c07b388099960ca9caff3",
      "parents": [
        "c26b4512a01d46756683a4f5e186a0b7f397f251"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 03 11:56:49 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 17:30:57 2015 +0100"
      },
      "message": "ART: Move DexCache arrays to native.\n\nThis CL has a companion CL in libcore/\n    https://android-review.googlesource.com/162985\n\nChange-Id: Icbc9e20ad1b565e603195b12714762bb446515fa\n"
    }
  ],
  "next": "e3485840d071c98e946c4be6864bcd1932630653"
}
