)]}'
{
  "log": [
    {
      "commit": "ae7ff92c430aa12484ff8258ee4ed13421ac7934",
      "tree": "32774f5b3b0f96b921145a4af62dce182882fb7c",
      "parents": [
        "6e5fa09510c7280168e040382d27dd8b55760d9a"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Oct 06 14:59:19 2016 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Oct 13 17:26:37 2016 +0000"
      },
      "message": "jni: Add read barrier fast path to jni compiler\n\nStatic method dispatch via JNI requires a read barrier\nfor the ArtMethod::GetDeclaringClass() load before adding it to the\nJNI StackHandleScope.\n\nWe used to call ReadBarrierJni unconditionally but add a branch\nto skip calling it if the GC is not currently in the marking phase.\n\nTest: ART_USE_READ_BARRIER\u003dtrue make test-art-host test-art-target\nBug: 30437917\nChange-Id: I4f505ebde17c0a67209c7bb51b3f39e37a06373a\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": "c4f3925490a73da8dc74884a1deb965d4ecaf14e",
      "tree": "7fe566827f8ab903af1acb5697c86a6efe3187b3",
      "parents": [
        "18f7de841fee3ca6f0c04e7caa57c3ce76b36231"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 18:32:08 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 06 13:55:58 2016 -0700"
      },
      "message": "Move remaining jobject related functions to use ObjPtr\n\nAlso added ObjPtr::DownCast.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I59c253211dc435579ffdfd49f856861ab13d262c\n"
    },
    {
      "commit": "81c6c8e6ded6d19c6196205a1b19fafa77993850",
      "tree": "c1e7fb8317e2075c437b65dce5323956a3d3a0d6",
      "parents": [
        "765dee21f34e8c191c247506cf8bc73a3c3fed36",
        "02e7f1a46d8dbb277d045182cd1fa4b058d55162"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 06 02:57:57 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 06 02:57:58 2016 +0000"
      },
      "message": "Merge \"Fix a deadlock between thread flip and suspend request.\""
    },
    {
      "commit": "02e7f1a46d8dbb277d045182cd1fa4b058d55162",
      "tree": "bd14cec6d5c4a545c2b9081d72b6e1b49ec7ef1e",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Oct 03 15:32:01 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Oct 05 17:52:29 2016 -0700"
      },
      "message": "Fix a deadlock between thread flip and suspend request.\n\nSee 31683379#9 for the deadlock scenario.\n\nMake ModifySuspendCount(+1) retry if the thread flip function is set.\n\nBug: 31683379\nBug: 12687968\nTest: test-art, N9 libartd boot, Ritz EAAC with CC.\nTest: 129-GetThreadId with gcstress and CC.\nChange-Id: Id5cdfcd90a08a2ff497f9f0e2842fa4c613549bc\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": "a59d9b228b1eda3bf71a81b6201ec64e26086c23",
      "tree": "91adf9f0e282eec50ccb28aa2dbc432a5e28d13f",
      "parents": [
        "05ce52b406dcf6b9a24287d14f0e611211e0db3d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 26 18:13:17 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 16:10:35 2016 -0700"
      },
      "message": "Use ObjPtr for reflection.cc/h/inl\n\nChanged Pretty helpers to use this to reduce usage of Decode. The\neventual goal is not have almost any calls to ObjPtr::Decode.\n\nMoved ObjPtr out of mirror namespace for convenience. Added more\nPoisonObjectPointers calls in class linker, thread suspension.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I44d08db5143d95ed1b65e2f00f9749ef5cf379f7\n"
    },
    {
      "commit": "3f7f03ce9a102a23961753753b5aa500226b0581",
      "tree": "9ff7596cab02c78fc78c95129d12f836cb262531",
      "parents": [
        "0cfe19af3b7395658210ea6044a65c9811962a7a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 26 11:39:52 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 26 16:30:40 2016 -0700"
      },
      "message": "Add basic support for object pointer poisoning\n\nObjPtr is a pointer that checks for heap corruption and is meant\nto replace mirror::Object* in places where a mirror::Object* is a\nlocal variable. Whenever there is a possible suspend point, the\ncurrent thread\u0027s object pointers are all invalidated. This is done\nby storing a cookie in the object pointer associated with what thread\ncreated it.\n\nAdded test case in object_test.\n\nExample failure:\nobject_test F 25379 25379 object_pointer.h:70] Check failed:\nIsValid() Invalid cookie, expected 0 but got 2\n\nBug: 31113334\n\nTest: test-art-host-gtest-object_test\n\nChange-Id: I9fa80ccaf2f0448621942935af702a243a3e1ee6\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": "05846475c8d48ce191dcd333c76d5ccc17aea9dd",
      "tree": "bfbcbba324eda45fae27b31ce0ce589c5f472474",
      "parents": [
        "e305eaf2c08a203e3e046c3a8608b90b9dc5a080"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 14 12:49:57 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 14 12:55:09 2016 +0100"
      },
      "message": "Remove ThrowNoSuchMethod entrypoint.\n\nRun ART test suite on host and Nexus 6.\nBug: 31464666\nChange-Id: I5aa737726031adae0b132f759cf802a93d581a7f\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": "ee23582af60b36f982de2ad16f485a61f35ae817",
      "tree": "ae35b6885b345e210c66acdd992103e345202131",
      "parents": [
        "bf042503dc2c2d328a6331baf33697a7d06acccf"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 19 17:03:27 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Aug 22 11:33:58 2016 -0700"
      },
      "message": "Revert \"Revert \"Improve the thread flip.\"\"\n\nThis reverts commit db3204f87c3f7c4de89762ce9e8502a9dc25c2d8.\n\nImprove the thread flip.\n\n- In addition to the threads that are suspended in FullSuspendCheck(),\n  prioritize the resume of threads that are blocking for the thread\n  flip at the JNI critical section entry and threads are about to\n  transition to runnable (eg. blocking at the SOA entry from JNI).\n- Shorten the length of the thread flip critical\n  section (ThreadFlipBegin/End).\n- Add some systrace scopes.\n- Add a read barrier for the locked objects during the thread dump in\n  case the thread is in the middle of flipping.\n\nBug: 30980189\nBug: 29517059\nBug: 12687968\nTest: test-art-host, Ritz EAAC, N9 libartd boot\nChange-Id: I3a903c47c0fcc746664ec376cc31dee8af3c3ecb\n"
    },
    {
      "commit": "db3204f87c3f7c4de89762ce9e8502a9dc25c2d8",
      "tree": "abb3aa17279c6a9edc9dd1c0691738a7f7c69a10",
      "parents": [
        "e61e6fdd404b8f04bd33fc3ea49e38e92e31ad69"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 19 17:56:11 2016 +0000"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 19 17:56:11 2016 +0000"
      },
      "message": "Revert \"Improve the thread flip.\"\n\nThis reverts commit e61e6fdd404b8f04bd33fc3ea49e38e92e31ad69.\n\nThreadStress failing.\n\nBug: 29517059\nBug: 12687968\nChange-Id: I0ee8ef04f77c5f9378e4bd21c5dedb4e435a2dc6\n"
    },
    {
      "commit": "e61e6fdd404b8f04bd33fc3ea49e38e92e31ad69",
      "tree": "a7d97c2a67dc1f8337f002a6748f50c9d32e303e",
      "parents": [
        "d16ae7fe70d74091778e5952b7920df14866287f"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Aug 02 16:03:06 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Aug 17 20:24:46 2016 -0700"
      },
      "message": "Improve the thread flip.\n\n- In addition to the threads that are suspended in FullSuspendCheck(),\n  prioritize the resume of threads that are blocking for the thread\n  flip at the JNI critical section entry and threads are about to\n  transition to runnable (eg. blocking at the SOA entry from JNI).\n- Shorten the length of the thread flip critical\n  section (ThreadFlipBegin/End).\n- Add some systrace scopes.\n\nBug: 29517059\nBug: 12687968\nTest: test-art-host, Ritz EAAC, N9 libartd boot.\nChange-Id: Idecec9936ae432c23d5f83321ba13339852018df\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": "10b218d32c0006aab747a53a9867d982cde9c938",
      "tree": "03b668bd44f89da024531145043c04f670363528",
      "parents": [
        "e92730cbc5e05b8057cf103af876927c9c361b73"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 25 17:48:52 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 26 10:21:34 2016 -0700"
      },
      "message": "Add missing filter cards to zygote mod union table\n\nWithout filtering the cards, every object in the zygote is grayed\nduring the GC. This was deleted in a PS of previous CL.\n\nGrayAllDirtyImmuneObjects goes from 1.974ms to 376.464us for CC on\nN9 maps. This happens during the pause. This CL also fixes regression\nin zygote PSS.\n\nBug: 29516968\nBug: 12687968\n\nChange-Id: I42014e78b1de3ce9b2eefa3bd32f0d24e2ff71c6\n"
    },
    {
      "commit": "02b75806a80f8b75c3d6ba2ff97c995117630f36",
      "tree": "ecdb1852c3e33f120110091cc2d07a9737fbd3b5",
      "parents": [
        "5f485719b166ceb8e591329d40e76c5e50988022"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 13 11:54:35 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 13 11:54:35 2016 +0100"
      },
      "message": "Introduce more compact ReadBarrierMark slow-paths.\n\nReplace entry point ReadBarrierMark with 32\nReadBarrierMarkRegX entry points, using register\nnumber X as input and output (instead of the standard\nruntime calling convention) to save two moves in Baker\u0027s\nread barrier mark slow-path code.\n\nTest: ART host and target (ARM, ARM64) tests.\nBug: 29506760\nBug: 12687968\nChange-Id: I73cfb82831cf040b8b018e984163c865cc44ed87\n"
    },
    {
      "commit": "e8e1127da3f154fae8d2eb16a94203544a182159",
      "tree": "930aa5bd3f4e81dcf1b27043844da55a3dcb5cc4",
      "parents": [
        "739dc72773c5dee583a1d322f91b5abd61f9889d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 28 18:08:46 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 29 12:31:52 2016 +0100"
      },
      "message": "Do checks on the fault address when we think it\u0027s an NPE.\n\nbug:29321958\nChange-Id: I28f4da56eb3e0b48721d3ac41114858bc80daadb\n"
    },
    {
      "commit": "87f3fcbd0db352157fc59148e94647ef21b73bce",
      "tree": "5bdeabb246f5de86704333b3fcbccc6e9146d246",
      "parents": [
        "b94b5706f0b8e2e1c7e1db22274f9f4bae0c4b5a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 28 15:52:11 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 21 15:17:38 2016 +0100"
      },
      "message": "Replace String.charAt() with HIR.\n\nReplace String.charAt() with HArrayLength, HBoundsCheck and\nHArrayGet. This allows GVN on the HArrayLength and BCE on\nthe HBoundsCheck as well as using the infrastructure for\nHArrayGet, i.e. better handling of constant indexes than\nthe old intrinsic and using the HArm64IntermediateAddress.\n\nBug: 28330359\nChange-Id: I32bf1da7eeafe82537a60416abf6ac412baa80dc\n"
    },
    {
      "commit": "952e1e3710158982941fc70326e9fddc3021235d",
      "tree": "79ba4922cbe7a28d32078516d1667f90354bee6b",
      "parents": [
        "ece5386eeb30aa6be663af2416b68a7ebf9bd42e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 13 14:04:02 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 13 18:10:02 2016 -0700"
      },
      "message": "Support unlimited pending checkpoints\n\nPrevents the spinning that used to happen if RunCheckpoint was called\nwith 3 pending checkpoints. This spinning was done when holding\nthread_list_lock_ and thread_suspend_count_lock_ and could deadlock\nif any of the pending checkpoints required any of these locks.\n\nThe fix is to use an overflow list instead of having a fixed limit of\n3.\n\nChanged suspend stress test to have more threads and only compare last\nline since there may be libbacktrace spam like:\n\"+E/libbacktrace(69891): void SignalHandler(int, siginfo_t *, void *):\nTimed out waiting for unwind thread to indicate it completed.\"\n\nBug: 28988206\n\nChange-Id: I2ae611506147d5199d59a08eee0395f7fa35d448\n"
    },
    {
      "commit": "ea8e02bef0f26a2212247210cc72b168a8157bad",
      "tree": "248d58fa61a647ef724c13e3ec4a7a49f8d26dc4",
      "parents": [
        "347eff2699557340c493a026300a73b84a796cd3",
        "f711f2cf3c28dfe865e36f17419a16f06a0ebb5a"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 26 22:49:55 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 26 22:49:55 2016 +0000"
      },
      "message": "Merge \"Partial fragment deoptimization\""
    },
    {
      "commit": "f711f2cf3c28dfe865e36f17419a16f06a0ebb5a",
      "tree": "3657d68b2a2fb67f4919cb97ca279cf9310224e9",
      "parents": [
        "bbfa42aa4c4b5cbc2ed2d8bdea6ff76da615a8aa"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 23 12:29:39 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 26 13:24:54 2016 -0700"
      },
      "message": "Partial fragment deoptimization\n\nWe used to do either single frame deoptimization, or full fragment\ndeoptimization which deoptimizes all the frames in a fragment.\nThis change allows some methods to be not deoptimizeable, likely due\nto some kind of optimization. So we need another deoptimization mode\nthat unwinds partial fragment. Deoptimizations are now generalized into\neither full or partial fragment. A full fragment deoptimization will\ndeopt all frames in the fragment, and then returns from the invoke stub\nto enter interpreter. A partial fragment deoptimization will deopt a\nsingle frame, or all frames up to the method that\u0027s not deoptimizeable,\nand then jumps to the interpreter bridge.\n\nCurrently code not deoptimizeable is the code in boot image since the\ncode may not be compiled with debuggable flag.\n\nBug: 28769520\nChange-Id: I875c694791cc8ebd5121abcd92ce7b0db95aca38\n"
    },
    {
      "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": "97cbc9206e9adc473a90650ebdb5d620f517ff04",
      "tree": "bef15a43a1c3f3dc2639f156aeea40d95763258e",
      "parents": [
        "85e47976a483844177eb486d6e501fa070fbe6e2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 15 16:16:35 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 28 16:12:33 2016 +0100"
      },
      "message": "Allow the framework to register sensistive threads to the runtime\n\nBug: 27865109\nBug: 28065407\n\n(cherry picked from commit 8fff24953c78bd58f3a42ac83b340b90e7e7228a)\n\nChange-Id: I82094e46a2fd12617e091d98831193f9ff56d26b\n"
    },
    {
      "commit": "e42888f9df4163303244070c65d5229d3e201742",
      "tree": "c3c3e380ed16676186040f1da6042fc2cd58e041",
      "parents": [
        "7f98c9a6babe3a21d84ce1f1e1273c99975a47f5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 14 10:49:19 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 27 12:45:30 2016 -0700"
      },
      "message": "Write conflict tables in image\n\nAdd image sections for runtime methods and conflict tables. This\nmakes it that we do not need to fake up a length prefixed array\nfor runtime methods.\n\nReduces .art private dirty and PSS.\n\nSystem wide .art PSS goes from 32.5MB to 30.5MB after system boot.\n\nBusiness card .art private dirty goes from 588K to 504K.\n\nIncreases image size by ~100K.\n\nBug: 27906566\n\n(cherry picked from commit cda9386add68d94697449c6cb08b356747e55c21)\n\nChange-Id: I38cbe3150c3eeb385b8cad7cf93614e3980f4162\n"
    },
    {
      "commit": "61b3cd45c5e3a5c24f7ccce94843a718375f9b7a",
      "tree": "fc71e27e0ddf6be1f672b69524b7ee978fd9d29c",
      "parents": [
        "74b3c8f3850c2e4a7b17e9821ad78b59e6f8e047"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 18 11:43:29 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 18 15:29:53 2016 -0700"
      },
      "message": "Prevent holding stale Thread pointers\n\nIt is only really safe to hold non-self Thread* if you hold the\nthread list lock. Changed a few places to use thread ids instead\nof Thread.\n\nBug: 28223501\n\n(cherry picked from commit 81c170fede9af9174aba71428334ac8f366a4b4f)\n\nChange-Id: I15e50b699303a5c3739e4d19c153dd306e2ee504\n"
    },
    {
      "commit": "b2771b41a956b50266d4d83fbb067f99faf7b7dc",
      "tree": "797b73b8b97c496938a9f6bc498d75911b1ff3c9",
      "parents": [
        "f9eed16e175f8c7cb37d878acc772d653b07101e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 07 17:09:25 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 13 12:42:29 2016 +0100"
      },
      "message": "Add option to tune sample collection based on thread sensitivity\n\nBug: 28065407\nBug: 27865109\n\nChange-Id: Icdb89f8f8874a41c07e73185523d18e8956620d3\n"
    },
    {
      "commit": "2c2d2a05eaf81d07df27418f8dfd68de6fa28ac1",
      "tree": "f7d49c6caf3e3ed1fa1d59699c00b4ede6921b2f",
      "parents": [
        "db1f7dac02f6dcecac3e032f10abbcdbf3cf4331"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 17 21:27:19 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 18 10:32:25 2016 -0700"
      },
      "message": "ART: Speed up stack guard page install\n\nOnly the main thread doesn\u0027t have its stack mapped in under normal\nconditions. Reading each page is a lot of overhead and we should\ntry to avoid it.\n\nRewrite to first try a (non-fatal) protect. If the outcome is a\nsuccess, finish. Otherwise do the stack mapping, and try again.\n\nBug: 27718174\nChange-Id: I16b214567585ed2f09970f618ccdec7eed219fd3\n"
    },
    {
      "commit": "7e1ce285c3c2cbd8d97c744699c2f2347fa7487b",
      "tree": "40d525eeda56a05576cb396a72479c366d2d463f",
      "parents": [
        "4e4e64511e530db37b33f450016afe49db3c4b20"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Dec 11 15:46:19 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Feb 25 14:00:48 2016 -0800"
      },
      "message": "Assembly TLAB allocation fast path for arm.\n\nSpeedup (GSS GC with TLAB on N5):\n    BinaryTrees:  1872 -\u003e  796 ms (-57%)\n    MemAllocTest: 2522 -\u003e 2219 ms (-12%)\n\nBug: 9986565\nChange-Id: Icb9d1259461f3abe83a4a82c8aff911937eaf57d\n"
    },
    {
      "commit": "20a0be0299183b54be9643820294e011d3358823",
      "tree": "b5f13c1362dc146675792d438ec7528a39c286a4",
      "parents": [
        "eeb3b0bf5339e24b6f5e22c5a884910000c9bcfb"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Feb 19 15:44:06 2016 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Feb 22 11:41:18 2016 -0800"
      },
      "message": "Fix CC collector thread flip and JNI critical section deadlocks.\n\nThere\u0027s a bug in the synchronization between the CC collector\u0027s thread\nflip and JNI critical sections where it incorrectly attempts to make\nthe synchronization scheme to be writer (GC) preference to avoid\nstarvation of GC in the presence of frequent JNI critical section\nenter/exit. This could cause a deadlock between them if a thread\nenters a nested JNI critical section after a thread flip occurs. This\nis reproduced in the added test.\n\nThe fix is to use a thread local disable counter in addition to the\nglobal counter to detect a nested enter by the same thread and avoid\nwaiting if nested.\n\nBug: 19235243\nBug: 12687968\nChange-Id: Idf7720a6906c9ea508219935af3727f76680d2d8\n"
    },
    {
      "commit": "a73280df8cac1279b6dea0424722f42ef0048613",
      "tree": "22adc28cc88bc440b8e28a13a389c3a3c2b22341",
      "parents": [
        "47a2a45a6673ddf3322115ff5058763f82a9368f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 15 13:05:16 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 15 16:24:56 2016 +0000"
      },
      "message": "Add an option to disable native stack dumping on SIGQUIT.\n\nSome of our (stress) run-tests do ANR dumping, which end up\nstressing libunwind, that has known problems. To avoid getting\nflakes due to libunwind, disable native stack dumping on SIGQUIT\nfor our run-tests.\n\nbug:27185632\nbug:24664297\nChange-Id: I69085e48db903d6240448d71666ae2dcd091922e\n"
    },
    {
      "commit": "e6141d7aba1078c0465294408133aaf00ae47f1b",
      "tree": "159b05407974c46ac39f0be10912f16bc910aeff",
      "parents": [
        "f3c35954350ab3386cff538a123bc1b8e78e89f0",
        "7ed9c561048d79083b6d0576c71a986a3123bca6"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Feb 05 22:35:25 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 05 22:35:25 2016 +0000"
      },
      "message": "Merge \"Use 8-byte increment bracket sizes for rosalloc thread local runs.\""
    },
    {
      "commit": "7ed9c561048d79083b6d0576c71a986a3123bca6",
      "tree": "8e352f05dc5e82126dd61e0e8e6ddb2a1003e16a",
      "parents": [
        "c3cf1d2e35a45bd2e2c60fbc9c2a1a6a56dfc529"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Feb 02 15:22:09 2016 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Feb 05 12:12:44 2016 -0800"
      },
      "message": "Use 8-byte increment bracket sizes for rosalloc thread local runs.\n\nVery small space savings (\u003c 1%) after device boot and up to 10%\nallocation speedup.\n\nSome minor cleanup.\n\nBug: 9986565\n\nChange-Id: I51d791c4674d6944fe9a7ee78537ac3490c1a02c\n"
    },
    {
      "commit": "b331febbab8e916680faba722cc84b66b84218a3",
      "tree": "35f985b021e476914bfe91492da23fee218014a7",
      "parents": [
        "586996afc905518ed926e4680aab67bedabec9b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 16:51:53 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 17:11:54 2016 +0000"
      },
      "message": "Revert \"Revert \"Implement on-stack replacement for arm/arm64/x86/x86_64.\"\"\n\nThis reverts commit bd89a5c556324062b7d841843b039392e84cfaf4.\n\nChange-Id: I08d190431520baa7fcec8fbdb444519f25ac8d44\n"
    },
    {
      "commit": "dfe02f6aafee264478d510b9742ee266ea52e8a8",
      "tree": "d56729901410de2b5cea9395c4686b49c38b245d",
      "parents": [
        "85fdcda926fbab0e5a7b3e8b3541f5d225b2bcdb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 01 20:15:11 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 02 15:43:05 2016 -0800"
      },
      "message": "Fix remaining read barrier issues in image relocation\n\nAdded a way to disallow read barriers, this makes it easy to find\nthe issues.\n\nBug: 26786304\nChange-Id: I7ebb50832686d03e096a979aae9741239371683f\n"
    },
    {
      "commit": "1452bee8f06b9f76a333ddf4760e4beaa82f8099",
      "tree": "8ffb80498cd8fdff66a4ab272723cf4d4e69e57b",
      "parents": [
        "7f9ea1451bb74055ee5d51ae04fc869faa06cbdd"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 06 14:43:04 2015 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Jan 11 13:04:49 2016 -0800"
      },
      "message": "Fast Art interpreter\n\nAdd a Dalvik-style fast interpreter to Art.\nThree primary deficiencies in the existing Art interpreter\nwill be addressed:\n\n1.  Structural inefficiencies (primarily the bloated\n    fetch/decode/execute overhead of the C++ interpreter\n    implementation).\n2.  Stack memory wastage.  Each managed-language invoke\n    adds a full copy of the interpreter\u0027s compiler-generated\n    locals on the shared stack.  We\u0027re at the mercy of\n    the compiler now in how much memory is wasted here.  An\n    assembly based interpreter can manage memory usage more\n    effectively.\n3.  Shadow frame model, which not only spends twice the memory\n    to store the Dalvik virtual registers, but causes vreg stores\n    to happen twice.\n\nThis CL mostly deals with #1 (but does provide some stack memory\nsavings).  Subsequent CLs will address the other issues.\n\nCurrent status:\n   Passes all run-tests.\n   Phone boots interpret-only.\n   2.5x faster than Clang-compiled Art goto interpreter on fetch/decode/execute\n       microbenchmark, 5x faster than gcc-compiled goto interpreter.\n   1.6x faster than Clang goto on Caffeinemark overall\n   2.0x faster than Clang switch on Caffeinemark overall\n   68% of Dalvik interpreter performance on Caffeinemark (still much slower,\n       primarily because of poor invoke performance and lack of execute-inline)\n   Still nearly an order of magnitude slower than Dalvik on invokes\n       (but slightly better than Art Clang goto interpreter.\n   Importantly, saves ~200 bytes of stack memory per invoke (but still\n       wastes ~400 relative to Dalvik).\n\nWhat\u0027s needed:\n   Remove the (large quantity of) bring-up hackery in place.\n   Integrate into the build mechanism.  I\u0027m still using the old Dalvik manual\n       build step to generate assembly code from the stub files.\n   Remove the suspend check hack.  For bring-up purposes, I\u0027m using an explicit\n       suspend check (like the other Art interpreters).  However, we should be\n       doing a Dalvik style suspend check via the table base switch mechanism.\n       This should be done during the alternative interpreter activation.\n   General cleanup.\n   Add CFI info.\n   Update the new target bring-up README documentation.\n   Add other targets.\n\nIn later CLs:\n   Consolidate mterp handlers for expensive operations (such as new-instance) with\n       the code used by the switch interpreter.  No need to duplicate the code for\n       heavyweight operations (but will need some refactoring to align).\n   Tuning - some fast paths needs to be moved down to the assembly handlers,\n       rather than being dealt with in the out-of-line code.\n   JIT profiling.  Currently, the fast interpreter is used only in the fast\n       case - no instrumentation, no transactions and no access checks. We\n       will want to implement fast + JIT-profiling as the alternate fast\n       interpreter.  All other cases can still fall back to the reference\n       interpreter.\n   Improve invoke performance.  We\u0027re nearly an order of magnitude slower than\n       Dalvik here.  Some of that is unavoidable, but I suspect we can do\n       better.\n   Add support for our other targets.\n\nChange-Id: I43e25dc3d786fb87245705ac74a87274ad34fedc\n"
    },
    {
      "commit": "7c1559a06041c9c299d5ab514d54b2102f204a84",
      "tree": "c50b54bf82f457f44dbf0741947d836749d4a96a",
      "parents": [
        "7cd230c8f74a227ea04f1dd93c8d855aa81fc1fe"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Dec 15 10:55:36 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Dec 15 11:45:56 2015 +0000"
      },
      "message": "x86 Baker\u0027s read barrier fast path implementation.\n\nIntroduce an x86 fast path implementation in Optimizing for\nBaker\u0027s read barriers (for both heap reference loads and GC\nroot loads).  The marking phase of the read barrier is\nperformed by a slow path, invoking a new runtime entry point\n(artReadBarrierMark).\n\nOther read barrier algorithms continue to use the original\nslow path based implementation, which has been renamed as\nGenerateReadBarrierSlow/GenerateReadBarrierForRootSlow.\n\nBug: 12687968\nChange-Id: Ie610c4befc19ff22378a8cba38b422dcacb54320\n"
    },
    {
      "commit": "9f62af0e1cd770ec3e98f0d1a83a1193e2493cac",
      "tree": "4d47b48f4dcc5a40f41650a6e2417ea2a6252108",
      "parents": [
        "3cf8583a2fe1a2793b4c67098df62f4362b47f0c",
        "6aa137071c53b5f4a04284be9d8cc51362ad3716"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 07 23:20:18 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 07 23:20:18 2015 +0000"
      },
      "message": "Merge \"ART: Fix PACKED size of tls_ptr_size.\""
    },
    {
      "commit": "73be1e8f8609708f6624bb297c9628de44fd8b6f",
      "tree": "47a22745797a345dea8dd846aad00334da0d5bf1",
      "parents": [
        "47229aa5848df7d45578dbdd9285f57dfa9399a8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 15:22:56 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 04 12:08:02 2015 +0000"
      },
      "message": "Inline monomorphic calls.\n\nChange-Id: If38171c2dc7d4a4378df5d050afc4fff4499c98f\n"
    },
    {
      "commit": "04302dbb106d590ff72c0dfecda23d85b6565059",
      "tree": "2fe66e258de36bcebc913d48e04468b7c639578f",
      "parents": [
        "0e06a0989f4fc53e0d281a5a2cb5b5a17feaea0c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Nov 11 23:45:34 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Nov 13 15:21:29 2015 -0800"
      },
      "message": "Fix class unloading with the CC collector.\n\nAvoid unnecessarily decoding dex cache and class loader weak roots,\nwhich would trigger read barriers.\n\nRe-enable 141-class-unload with the CC collector.\n\nBug: 12687968\nBug: 24468364\nChange-Id: Ib4c19f25000873cab0e06047040442d135285745\n"
    },
    {
      "commit": "6aa137071c53b5f4a04284be9d8cc51362ad3716",
      "tree": "784e9cd0a2d8e6635c1c0190b0856e0a534570d3",
      "parents": [
        "28b48026f0686f93b31b9cad47671c18837acc56"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 28 10:57:25 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 28 10:57:58 2015 -0700"
      },
      "message": "ART: Fix PACKED size of tls_ptr_size.\n\nThis should be PACKED to the current pointer size.\n\nChange-Id: I31e23cd7f1fe57655b71b901642617df96a48aa1\n"
    },
    {
      "commit": "6cff48f05894a60aa4742472983a75504536ca15",
      "tree": "bd399d46ef08cd836010f3119c8c5db054561267",
      "parents": [
        "823e693aa946ba75cd047429e1290011a2ed8729"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Sun Jan 26 21:36:13 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 23 11:16:11 2015 -0700"
      },
      "message": "ART: Speed up thread stack tracing for ANRs\n\nShare a BacktraceMap for all threads being dumped, which speeds up\nANR dumping. Results from Nexus 9 (average of five):\n\nBefore: 0.587s\nAfter:  0.206s\n\nChange-Id: Ia70e0dbd39049318c02de561e7b95258d4849467\n"
    },
    {
      "commit": "dc412b6f49a65774b7af654f65cbff619cb7d85a",
      "tree": "f8455c6deb4bb3c96d21e2135d55a1a658045e47",
      "parents": [
        "114873103db3d4d6e0da42ca02bad1ea8826443b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Oct 15 12:26:57 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Oct 15 15:32:41 2015 -0700"
      },
      "message": "Revert \"Revert \"Implement rosalloc fast path in assembly for 32 bit arm.\"\"\n\nWith a heap poisoning fix.\n\nThis reverts commit cf91c7d973f3b2f491abc61d47c141782c96d46e.\n\nBug: 9986565\nChange-Id: Ia72edbde65ef6119e1931a77cc4c595a0b80ce31\n"
    },
    {
      "commit": "a2b2e7365d66553164247bafae214f157d480277",
      "tree": "11fc65a360fb2ff3b4388be0558a39b09eca330a",
      "parents": [
        "d2e0dd179fd2e8c6c820194e187fc5e9164154ff",
        "cf91c7d973f3b2f491abc61d47c141782c96d46e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 07:30:00 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 15 07:30:00 2015 +0000"
      },
      "message": "Merge \"Revert \"Implement rosalloc fast path in assembly for 32 bit arm.\"\""
    },
    {
      "commit": "cf91c7d973f3b2f491abc61d47c141782c96d46e",
      "tree": "b94c289f567014ba56bcd4dec76066085819e90b",
      "parents": [
        "e6316940db61faead36f9642cce137d41fc8f606"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 07:29:38 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 07:29:38 2015 +0000"
      },
      "message": "Revert \"Implement rosalloc fast path in assembly for 32 bit arm.\"\n\nTentative. Looks like heap poisoning breaks with this change.\n\nbug: 9986565\n\nThis reverts commit e6316940db61faead36f9642cce137d41fc8f606.\n\nChange-Id: I5c63758221464fe319315f40ae79c656048faed0\n"
    },
    {
      "commit": "2248d278460f18db9bcdc5a1bdb2dcdfdde2d301",
      "tree": "769455c0ea777310518cf4d8a4af9ecb45c968d0",
      "parents": [
        "bf8fd42a6390d5694fe387b9bc876fc510645810",
        "e6316940db61faead36f9642cce137d41fc8f606"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Oct 14 18:18:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 14 18:18:24 2015 +0000"
      },
      "message": "Merge \"Implement rosalloc fast path in assembly for 32 bit arm.\""
    },
    {
      "commit": "e6316940db61faead36f9642cce137d41fc8f606",
      "tree": "cf0a97827af4679be4112d056855b5a673ee3a32",
      "parents": [
        "8c812b71552a8a1b2bf06e430d355b12b7084807"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Oct 07 15:41:48 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Oct 13 13:06:20 2015 -0700"
      },
      "message": "Implement rosalloc fast path in assembly for 32 bit arm.\n\nMeasurements (N5, ms)\nBinaryTrees:  1702 -\u003e  987 (-42%)\nMemAllocTest: 2480 -\u003e 2270  (-8%)\n\nBug: 9986565\n\nChange-Id: I460af3626ad724078463d27cf74a94b7ff7468c5\n"
    },
    {
      "commit": "3cfa4d05afa76e19ca99ec964b535a15c73683f0",
      "tree": "28c4950dff3700f69e3d32fc496890a722cfc379",
      "parents": [
        "f4156986d1ba5b6dd7dfe89754c8562557cd1bc5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 06 17:04:01 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 07 09:50:25 2015 -0700"
      },
      "message": "ART: Remove interpreter entrypoints\n\nThese are no longer used as entrypoints. Make them proper runtime\nfunctions local to the interpreter.\n\nBump oat version.\n\nChange-Id: Icdd92e20eafc5668b68eeebf55cf624560f462b3\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": "639bdd13993644a267f177f8f5936496bda65e2b",
      "tree": "fc68e344355ab1c0cfef4d47dd8f2cbc9fc7e022",
      "parents": [
        "b175a45be78152606a1db1eac0b79ef8777644f5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 03 11:22:45 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 28 15:37:28 2015 -0700"
      },
      "message": "ART: Single-frame deopt\n\nAdd deoptimization of a single frame. Works by removing the managed\ncode frame and jumping into the quick-to-interpreter bridge, and\nthe bridge understanding a stored ShadowFrame.\n\nWe need a separate fixup pass. For x86, we leave the return address\non the stack so we don\u0027t need to push it there.\n\nBug: 21611912\nChange-Id: I06625685ced8b054244f8685ab50b238a705b9d2\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": "0747466fca310eedea5fc49e37d54f240a0b3c0f",
      "tree": "6d27922fa35330dd8d863ea56c82c5f04b711822",
      "parents": [
        "9ee5d6cdc14ac94b64ea1961bf221bad48746929"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 25 15:12:33 2015 +0000"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Aug 26 16:54:32 2015 +0200"
      },
      "message": "Revert \"Revert \"Fix deoptimization with pending exception\"\"\n\nThis reverts commit 6e2d5747d00697a25251d25dd33b953e54709507.\n\nFixes the deoptimization path from compiled code (generated by the\nOptimizing compiler) by adding wrapper artDeoptimizeFromCompiledCode.\nThis wrapper, called through the matching assembler stub\nart_quick_deoptimize_from_compiled_code, pushes the deoptimization\ncontext just before deoptimizing the stack.\n\nBug: 23371176\nBug: 19944235\nChange-Id: Ia7082656998aebdd0157438f7e6504c120e10d3e\n"
    },
    {
      "commit": "aa50d3a01a4137cd89c152be5487fed23683d0ff",
      "tree": "a676638c9d43eb519214445173c1a66ba38355ac",
      "parents": [
        "f0170ded84fbcd3d9152cdbcf9ffbf74c71b03ba"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 25 15:25:41 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 25 15:56:54 2015 +0200"
      },
      "message": "Add missing field init in constructors\n\nAdds missing field initializations detected by Eclipse IDE.\n\nChange-Id: I5f2f32bcccb12545fc9f0b42fcec74a23dc81376\n"
    },
    {
      "commit": "00370827646cc21cb370c3e7e93f9c0cff4c30c2",
      "tree": "79fd9e7d08ad2055542cb1b64ebf26b00cb3af17",
      "parents": [
        "83f8b5bb9e9c52791a02a84d7b0889cab898efe4"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Aug 18 14:47:25 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Aug 19 12:15:17 2015 -0700"
      },
      "message": "Use thread-local is_gc_marking flags for the CC collector.\n\nThe currently global is_marking flag is used to check if the read\nbarrier slow path needs to be taken for GC roots access. Changing it\nto a thread-local flag simplifies the fast path check and makes it\neasier to do it in assembly code. It also solves the issue that we\nneed to avoid accessing the global flag during startup before the heap\nor the collector object isn\u0027t allocated and initialized.\n\nBug: 12687968\nChange-Id: Ibf0dca12f400bf3490188b12dfe96c7de30583e0\n"
    },
    {
      "commit": "ed8990a467f3d93545221a33e43a9d34b1cc363f",
      "tree": "74e9fa58eb8582ed3ca81822d96d34d90bc62c59",
      "parents": [
        "bea4eb4b29aa1030aa1919dfedaa95aea2599b7a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 23 14:11:16 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 23 14:46:52 2015 -0700"
      },
      "message": "Add some more uninterruptible annotations\n\nAdded to mirror sites, class linker, and intern table.\n\nBug: 20072211\nChange-Id: I2224bcefefaab05d325f14844b1514e3d719e649\n"
    },
    {
      "commit": "4e2cb098017bf073335ebb02b1bc0a36828cd720",
      "tree": "7dfb6c7b71a747f31d2903c383423aac96a11591",
      "parents": [
        "f64914d7392b7d35c7f35bc917b0797b9c4605ac"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 16:17:51 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 17:26:05 2015 -0700"
      },
      "message": "Add uninterruptible role\n\nExample error:\ncannot call function \u0027CopyOf\u0027 while mutex \u0027uninterruptible_\u0027 is held\n\nTODO: Add annotation to more locations.\n\nBug: 20072211\n\nChange-Id: I1bbf5a77e3deeafa5898df529cb7cb53a6d010d2\n"
    },
    {
      "commit": "90443477f9a0061581c420775ce3b7eeae7468bc",
      "tree": "8c74b81dfae162e0fd0ccf8d5ac50827ba815174",
      "parents": [
        "6078aec213dfaf111c29969706e8e5967cfc9bea"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 16 20:32:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 15:13:56 2015 -0700"
      },
      "message": "Move to newer clang annotations\n\nAlso enable -Wthread-safety-negative.\n\nChanges:\nSwitch to capabilities and negative capabilities.\n\nFuture work:\nUse capabilities to implement uninterruptible annotations to work\nwith AssertNoThreadSuspension.\n\nBug: 20072211\n\nChange-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33\n"
    },
    {
      "commit": "14c3bf91b2ec434295ec84d6446f495fb7de6d5c",
      "tree": "6eaa51c263b84b7a11f40f21be993987cdca80f3",
      "parents": [
        "6d3d1e3d866a880b4df95ba96ed126c1723e3dd6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 13 14:35:43 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 17 15:34:40 2015 -0700"
      },
      "message": "Change intern table to not use WaitHoldingLocks\n\nBug: 22423014\nChange-Id: I9e16b8cb4def72fff73f1783a182877105feb7aa\n"
    },
    {
      "commit": "c6f3439b67962584cfb764133e192c3317f0e1fc",
      "tree": "58f31ef9ed7155cd386f139be230383d943a1c72",
      "parents": [
        "e978aba24094cce90453ad3294b8c4536ee8e4b4",
        "eac4424b3420c280f97ff2f815b5dedd8dac9801"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 14 01:47:39 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 14 01:47:39 2015 +0000"
      },
      "message": "Merge \"ART: JNI thread state transition optimization\""
    },
    {
      "commit": "0541502e6d9d0efa50aa333db32898a0664512c3",
      "tree": "1c8c2adc8e70bee2c2e972ac84f0726e19d5a348",
      "parents": [
        "5b1eea0a6c90e6e82393cdb7337f0c2bb05637d9",
        "1e13374baf7dfaf442ffbf9809c37c131d681eaf"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jul 14 00:47:06 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 14 00:48:54 2015 +0000"
      },
      "message": "Merge \"Generalize Valgrind annotations in ART to support ASan.\""
    },
    {
      "commit": "1e13374baf7dfaf442ffbf9809c37c131d681eaf",
      "tree": "9a8a53295a8389d7ec10accf3efb8785a97a3599",
      "parents": [
        "f68c8545382925062da2b87169ca2b5314f0b431"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed May 20 12:30:59 2015 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Jul 13 17:38:40 2015 -0700"
      },
      "message": "Generalize Valgrind annotations in ART to support ASan.\n\nAlso add redzones around non-fixed mem_map(s).\nAlso extend -Wframe-larger-than limit to enable arm64 ASan build.\n\nChange-Id: Ie572481a25fead59fc8978d2c317a33ac418516c\n"
    },
    {
      "commit": "eac4424b3420c280f97ff2f815b5dedd8dac9801",
      "tree": "4e7c31b4312aa000bd3d2250df6a05daf61523d7",
      "parents": [
        "ec97825f8553b3a99b6dfbbb90a50fe65301ea94"
      ],
      "author": {
        "name": "Yu Li",
        "email": "yu.l.li@intel.com",
        "time": "Mon Jun 29 10:50:03 2015 +0800"
      },
      "committer": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Mon Jul 13 15:56:19 2015 -0700"
      },
      "message": "ART: JNI thread state transition optimization\n\nThis patch improves the JNI performance by removing the explicit acquiring and\nreleasing the mutator lock when a thread state transits between suspended and\nrunnable states.\n\nThe functions responsible for changing the state were found to be the costliest\npart of the JNI. Originally, a thread needs to acquire a shared mutator lock by\na CAS instruction when entering the runnable state and also needs to release\nthe lock by a CAS when entering the native state from runnable. This patch\nremoves these CAS operations when a thread state transits between suspended and\nrunnable. A thread in the runnable state is considered to have shared ownership\nof the mutator lock and therefore transitions in and out of the runnable state\nhave associated implication on the mutator lock ownership. Meanwhile, a barrier\nis added to control suspending all threads from running.\n\nJNI transition overhead was reduced by 25% on IA platform and by 17% on ARM\nplatform by this patch, while it has little impact on GC pause time (measured\nwith \"suspend all histogram\").\n\nChange-Id: Icee95d8ffff1bbfc95309a41cc48836536fec689\nSigned-off-by: Yu, Li \u003cyu.l.li@intel.com\u003e\nSigned-off-by: Haitao, Feng \u003chaitao.feng@intel.com\u003e\nSigned-off-by: Lei, Li \u003clei.l.li@intel.com\u003e\n"
    },
    {
      "commit": "0b71357fb52be9bb06d35396a3042b4381b01041",
      "tree": "44b8d6b0ca4a71f33cda55068fa9e14864c55625",
      "parents": [
        "0e87d1809443d41b431ce3a686b4e074df2d7b8b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jun 16 18:29:23 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jul 13 15:50:20 2015 -0700"
      },
      "message": "Thread-local mark stacks for the CC collector.\n\nThread-local mark stacks are assigned to mutators where they push\nreferences in read barriers to reduce the (CAS) synchronization cost\nin a global mark stack/queue.\n\nWe step through three mark stack modes (thread-local, shared,\nGC-exclusive) and use per-thread flags to disable/enable system weak\naccesses (only for the CC collector) instead of the existing global\none to safely perform the marking phase. The reasons are 1)\nthread-local mark stacks for mutators need to be revoked using a\ncheckpoint to avoid races (incorrectly leaving a reference on mark\nstacks) when terminating marking, and 2) we can’t use a checkpoint\nwhile system weak accesses are disabled (or a deadlock would\nhappen). More details are described in the code comments.\n\nPerformance improvements in Ritzperf EAAC: a ~2.8% improvement\n(13290-\u003e12918) in run time and a ~23% improvement (51.6s-\u003e39.8s) in\nthe total GC time on N5.\n\nBug: 12687968\nChange-Id: I5d234d7e48bf115cd773d38bdb62ad24ce9116c7\n"
    },
    {
      "commit": "cbc5064ff05179b97b416f00ca579c55e38cd7d9",
      "tree": "9ce221e6644ff770b8484ba8cb5581e538b88eef",
      "parents": [
        "864a2d955aa85ab989c86d7f1eeacbe0b11f8b0f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jun 01 17:33:12 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jun 10 09:35:08 2015 +0200"
      },
      "message": "JDWP: asynchronous invoke command handling\n\nThe JDWP thread used to wait for the result of a method invocation\nrunning in an event thread. But doing that prevents the JDWP thread\nfrom processing incoming commands from the debugger if the event\nthread gets suspended by a debug event occurring in another thread.\nIn Android Studio (or another IDE), this leads to the debugger being\nblocked (with the famous message \"Waiting until last debugger command\ncompletes\" of Android Studio / IntelliJ) because it is actually\nwaiting for the reply of its latest command while the JDWP thread\ncannot process it.\n\nThis CL changes the way invoke commands (ClassType.InvokeCommand,\nClassType.NewInstance and ObjectReference.InvokeCommand) are handled\nin the ART runtime.\nThe JDWP thread no longer waits for the event thread to complete the\nmethod invocation. It now simply waits for the next JDWP command to\nprocess. This means it does not send any reply for invoke commands,\nexcept if the information given by the debugger is wrong. In this\ncase, it still sends a reply with the appropriate error code.\nThe event thread is now responsible for sending the reply (containing\nthe result and the exception object of the invoked method) before\ngoing back to the suspended state.\n\nIn other words, we add special handling for invoke commands so they\nare handled asynchronously while other commands remained handled\nsynchronously. In the future, we may want to handle all commands\nasynchronously (using a queue of reply/event for instance) to remove\nthe special handling code this CL is adding.\n\nNow the JDWP thread can process commands while a thread is invoking\na method, it is possible for the debugger to detach (by sending a\nVirtualMachine.Dispose command) before the invocation completes. In\nthat situation, we must not suspend threads again (including the\nevent thread that executed the method) because they would all remain\nsuspended forever.\n\nAlso minor cleanup of the use of JDWP constants and update comments.\n\nBug: 21515842\nBug: 18899981\nChange-Id: I15e00fb068340f3d69dc9225d8d2065246e68c58\n"
    },
    {
      "commit": "f795869da0a1fa006fdcdacd8afb6149a63fc1a7",
      "tree": "b4cd23012e62b80788870f2c85c30fc6032299fa",
      "parents": [
        "430afefe1cced35cf5eb12ce7a6dcbfc5007c97e"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 09 14:09:14 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 09 17:17:09 2015 +0200"
      },
      "message": "Follow up on CL 151605\n\n- Fixes return type of StackedShadowFrameRecord::GetType\n- Makes StackedShadowFrameType an enum class (scoped enum)\n- Moves DeoptimizationReturnValueRecord and StackedShadowFrameRecord\n  to thread.cc file and use forward declaration in thread.h header\n- Fixes tools/generate-operator-out.py for scoped enum classes.\n\nBug: 20845490\nChange-Id: I6b67e288b1db563699161e58ec2e2330d42dd8f5\n"
    },
    {
      "commit": "1f2d3ba6af52cf6f566deb38b7e07735c9a08fb6",
      "tree": "af6ae612d43c50703292d39a8a0b37dda3f919a6",
      "parents": [
        "ccd6337f31d13706c602f3d9436e9b4025075b63"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 18 12:12:50 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Jun 08 00:53:55 2015 -0700"
      },
      "message": "Fix nested deoptimization.\n\nHandle nested deoptimization cases. Create a stacked shadow frame\nrecords to keep track of deoptimization shadow frames. Shadow frames\nunder construction can be tracked in the same stack.\n\nBug: 20845490\nChange-Id: I768285792c29e7c3cfcd21e7a2600802506024d8\n"
    },
    {
      "commit": "449357d3f61bdd134967ecdacc3516e1707cf882",
      "tree": "650ef203d23926485398200888cadfc9aa7608fc",
      "parents": [
        "2519fc40d4ae89322d28d1ff610fe81bb90fb564"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 01 22:29:51 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 03 16:10:33 2015 -0700"
      },
      "message": "ART: Refactor Thread::Init\n\nThis refactor allows the parent thread to allocate the JNIEnvExt\nfor the child (with a fallback in place in Init). This allows to\nthrow an OOME in CreateNativeThread instead of aborting in the\nchild.\n\nBug: 21291279\n\n(cherry picked from commit 520abbd0edcf333f07164539620ce65258c72383)\n\nChange-Id: Iccc1a5c202999f5bfacec706d9833e53135ba2fa\n"
    },
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "80afd02024d20e60b197d3adfbb43cc303cf29e0",
      "tree": "ef054c7b4f2a739f7cf063e0bc4c501c2c7e41b5",
      "parents": [
        "559b178e34c5d92e7932f92e5d8a981ac334606f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 19 18:08:00 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 15:59:02 2015 +0100"
      },
      "message": "ART: Clean up arm64 kNumberOfXRegisters usage.\n\nAvoid undefined behavior for arm64 stemming from 1u \u003c\u003c 32 in\nloops with upper bound kNumberOfXRegisters.\n\nCreate iterators for enumerating bits in an integer either\nfrom high to low or from low to high and use them for\n\u003carch\u003eContext::FillCalleeSaves() on all architectures.\n\nRefactor runtime/utils.{h,cc} by moving all bit-fiddling\nfunctions to runtime/base/bit_utils.{h,cc} (together with\nthe new bit iterators) and all time-related functions to\nruntime/base/time_utils.{h,cc}. Improve test coverage and\nfix some corner cases for the bit-fiddling functions.\n\nBug: 13925192\nChange-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7\n"
    },
    {
      "commit": "9d6bf69ad3012a9d843268fdd5325b6719b6d5f2",
      "tree": "a41fc22d2c89e41c86feb5ef07ebda89b1b83d90",
      "parents": [
        "b6829c2ee05124d64a19c7a52ada4a23f624fb91"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 10 12:12:33 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 29 16:59:58 2015 +0200"
      },
      "message": "JDWP: properly combine location events\n\nThis CL properly groups JDWP events at the same location: Breakpoint,\nSingle-step, Method Entry and Method Exit. This is necessary if the\ndebugger is not the only instrumentation listener. This matches the\nbehavior of Dalvik, especially for methods with a single return\ninstruction.\n\nThe interpreter was tuned so the instrumentation callbacks were\ncalled to satisfy the debugger with the idea the debugger was the\nonly instrumentation listener. This is not true when method tracing\nis enabled at the same time.\nWhen tracing is enabled, there is always a listener for MethodEntry\nand MethodExit events (art::Trace class). However, if the debugger\nis only listening to DexPcMoved event (to manage JDWP Breakpoint\nevent), it will not be notified of this event.\n\nWe now properly call all the instrumentation callbacks in the\ninterpreter and move the logic specific to debugging into the class\nDebugInstrumentationListener. This allows to properly group JDWP\nlocation events together depending on the sequence of instrumentation\ncallbacks.\n\nWe add Thread::tls_32bit_sized_values::debug_method_entry_ flag to\nremember we just entered a method. It replaces the local variable\nnotified_method_entry_event in the interpreter and simplifies the\ncode.\n\nBump oat version to force recompilation because the layout of the\nThread class is modified.\n\nBug: 19829329\nChange-Id: I204af9112e37d2eebc86661fb7c961a41c74e598\n"
    },
    {
      "commit": "848f70a3d73833fc1bf3032a9ff6812e429661d9",
      "tree": "b0349b3a40aab5a915af491b100659a5ca9fbbf6",
      "parents": [
        "d14438f0c5071962be7fab572b54687d32d9d087"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 15 13:49:50 2014 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 27 18:54:52 2015 -0700"
      },
      "message": "Replace String CharArray with internal uint16_t array.\n\nSummary of high level changes:\n  - Adds compiler inliner support to identify string init methods\n  - Adds compiler support (quick \u0026 optimizing) with new invoke code path\n    that calls method off the thread pointer\n  - Adds thread entrypoints for all string init methods\n  - Adds map to verifier to log when receiver of string init has been\n    copied to other registers. used by compiler and interpreter\n\nChange-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01\n"
    },
    {
      "commit": "a61894d88fabe45677f491c9f6bde30059a49026",
      "tree": "b9d8b09e5f90792867b6720a1fb4ab5c76cdfa5f",
      "parents": [
        "4ceed922d44b68c3fa7cbe670014c9e2e003b92b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 23 16:32:54 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 23 17:21:26 2015 -0700"
      },
      "message": "Fix reflection handling and test flakiness\n\nFixed reflection invoke to handle exceptions which occur from\nFindClass or NewObject by throwing these instead of\nthe expected InvocationTargetException.\n\nAdded test case to 080 for this reflection invoke.\n\nFixed println throwing OOM in 104-growth-limit.\n\nChange-Id: I65766e7c3478e299da06fdc3a521fe3f3e8fdba9\n"
    },
    {
      "commit": "2cebb24bfc3247d3e9be138a3350106737455918",
      "tree": "d04d27d21b3c7733d784e303f01f873bb99e7770",
      "parents": [
        "1f02f1a7b3073b8fef07770a67fbf94afad317f0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 16:50:40 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 12:44:27 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nAlso fixed some lines that were too long, and a few other minor\ndetails.\n\nChange-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb\n"
    },
    {
      "commit": "4dcfc4329d2d481b738e3be183dfa2a785738df2",
      "tree": "25629aea7c9e8b5b8caea9efe954f80fd1a0a16b",
      "parents": [
        "92b8269d77a75d1c056ba23abef8dd8f5d26eef6"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Apr 21 16:55:22 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 22 01:01:42 2015 -0700"
      },
      "message": "Fix tlsPtr_.long_jump_context \u003d\u003d nullptr check failure.\n\nThis is a bogus assertion. We need to handle the case\nthough to free the existing tlsPtr_.long_jump_context.\n\nBug: 20449310\nChange-Id: Ie1e49dd1fec9defab69f081d1f129aa8dc1dc6bf\n"
    },
    {
      "commit": "d0ad2eea51850ed5972c23d03380b2305cdf7cb7",
      "tree": "533baced17c6dc3860e0e2121ce06acde57b8f4d",
      "parents": [
        "917f0866f66d3465fa41ddcf9ab09eba2fa78dd3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 31 14:59:59 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 09 15:18:14 2015 -0700"
      },
      "message": "Add support for nested method verifiers\n\nCan occur in the following scenario:\nMethodVerifier::Verify -\u003e MethodVerifier::GetStaticField -\u003e\nResolveFieldJLS -\u003e  ThrowNoSuchFieldError -\u003e EnsureInitialized -\u003e\nVerifyClass\n\nAlso fixed another case where we can be requested to dump for ANR\nwhile we are suspended in one of the AllowSuspension points.\n\nBug: 20140397\n\nChange-Id: Ib17f6b98954caa5d1ea1c1dcde66091cc6d11c25\n"
    },
    {
      "commit": "bb87e0f1a52de656bc77cb01cb887e51a0e5198b",
      "tree": "113f014c6e20fab3e936a3ac05f9f738639541f6",
      "parents": [
        "e57fc0f0260fcb1d08cbb720ec95c04c0f394b91"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 03 11:21:55 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 06 10:44:37 2015 -0700"
      },
      "message": "Refactor and improve GC root handling\n\nChanged GcRoot to use compressed references. Changed root visiting to\nuse virtual functions instead of function pointers. Changed root visting\ninterface to be an array of roots instead of a single root at a time.\nAdded buffered root marking helper to avoid dispatch overhead.\n\nRoot marking seems a bit faster on EvaluateAndApplyChanges due to batch\nmarking. Pause times unaffected.\n\nMips64 is untested but might work, maybe.\n\nBefore:\nMarkConcurrentRoots: Sum: 67.678ms 99% C.I. 2us-664.999us Avg: 161.138us Max: 671us\n\nAfter:\nMarkConcurrentRoots: Sum: 54.806ms 99% C.I. 2us-499.986us Avg: 136.333us Max: 602us\n\nBug: 19264997\n\nChange-Id: I0a71ebb5928f205b9b3f7945b25db6489d5657ca\n"
    },
    {
      "commit": "e01a520fe0010f8abd344b5ed7120787d7ed1d71",
      "tree": "497937fea803b9d5e2e1fd5923b2ccfb76504ff3",
      "parents": [
        "f5988cf0c47ff935bb19c89ed0398be5fbe44bb6"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Mar 19 12:35:04 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Mar 20 11:49:31 2015 -0700"
      },
      "message": "Assembly TLAB allocation fast path for x86_64.\n\nTODO: resolved/initialized cases, other architectures.\n\nBug: 9986565\nChange-Id: If6df3449a3b2f5074d11babdda0fd2791fd54946\n"
    },
    {
      "commit": "12d625f87bcd6c4059a205bb39007a255f57f382",
      "tree": "b69f6f80f56977c176e0c441869d2f1de06ede70",
      "parents": [
        "b871a15f1f662c8efe10d41199180bd00b6decd1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 13 11:33:37 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 13 16:38:25 2015 -0700"
      },
      "message": "Change method verifiers to be thread local roots\n\nBug: 10921004\n\nChange-Id: I3a1425d76cd380587ba67ef6d5ec1227564e55bf\n"
    },
    {
      "commit": "0aa50ce2fb75bfc2e815a0c33adf9b049561923b",
      "tree": "9a3f9603ab30d5cbc7fc21aee0ceb48bbb0dd25a",
      "parents": [
        "e8e42f3548fd894f860912bb1b71ce6fa2d7daf3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 11:03:29 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 14:51:11 2015 +0000"
      },
      "message": "Remove ThrowLocation.\n\nNote that this is a cleanup change, and has no functionality change.\nThe ThrowLocation had no use anymore.\n\nChange-Id: I3d2126af1dc673cec3a0453ff3d56a172663a5f6\n"
    },
    {
      "commit": "1558b577907b613864e98f05862543557263e864",
      "tree": "5498d8d15f198341fe46a8badc7e7591611a09b5",
      "parents": [
        "2cfdabd2bb4833d7092819d27ef08a9e1cdffead"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Feb 25 15:05:59 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Mar 09 15:19:49 2015 +0100"
      },
      "message": "JDWP: allocate DebugInvokeReq only when requested\n\nOnly allocates thread-local DebugInvokeReq when the debugger requests\na thread to invoke a method. The JDWP thread allocates that structure\nthen attaches it to the target thread. When the thread is resumed, it\nexecutes the method. Once the invocation completes, the thread\ndetaches the DebugInvokeReq, signals the JDWP thread then suspends.\nFinally, the JDWP thread wakes up, prepares the reply with the invoke\nresult (or exception) and deallocates the DebugInvokeReq.\n\nAlso ensures GC safety for object returned by the invoke. We add the\nobject to the JDWP object registry right after the invoke. We now\nreference that object with a JDWP ObjectID instead of an Object* in\nthe DebugInvokeReq struct. This prevent from accessing a stale\nreference if the GC runs and moves the Object*.\n\nThis CL includes the following changes:\n- Move former DebugInvokeReq::ready flag to\n  Thread::tls_32bit_sized_values::ready_for_debug_invoke. It\u0027s needed\n  to know whether a thread has been suspended by an event, thus ready\n  to invoke a method from the debugger.\n- Remove DebugInvokeReq::invoke_needed: we now test if we attached a\n  DebugInvokeReq* to the thread.\n- Rename misleading FinishMethod function to RequestMethod.\n\nBug: 19142632\nBug: 18166750\nChange-Id: I351fb4eb94bfe69fcafb544d21d55ff35a033000\n"
    },
    {
      "commit": "14691c5e786e8c2c5734f687e4c96217340771be",
      "tree": "7c2156671b323c70ffdd1d48d5e2f1d1de79c5fc",
      "parents": [
        "3d7d2af4c6502b771b032ee9bf3ab30e78f9c60d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 05 10:40:17 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 09 10:09:33 2015 +0000"
      },
      "message": "Compute the right catch location for the debugger.\n\nAlso remove tls ThrowLocation, it is not needed anymore.\n\nChange-Id: I78fddf09ce968ca475e39c17fa76d699c589c8d9\n"
    },
    {
      "commit": "7642cfc90fc9c3ebfd8e3b5041915705c93b5cf0",
      "tree": "807b3c797483310ac23954c5eddb7441b91749c5",
      "parents": [
        "dc47e986941b1a3754447fabea272485f3f0f382"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 26 10:56:09 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 03 17:50:49 2015 +0000"
      },
      "message": "Change how we report exceptions to the debugger.\n\nThis is only a refactoring/cleanup. Bug fixes with respect\nto catch location, and more cleanups will follow.\n\nChange-Id: I30d3c6260b0c8f8115a811621397225b88f2063a\n"
    },
    {
      "commit": "794ad76e8d5b5b9132819d5b08a0570e27615644",
      "tree": "74b420e4337ecf9e5df689cc376fa965d765a908",
      "parents": [
        "d98ff78976696fdde1e7868d4687719a0439544b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 23 08:12:24 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 23 10:23:06 2015 -0800"
      },
      "message": "ART: Introduce NO_RETURN, Mark DoLongJump noreturn\n\nAdd NO_RETURN macro that adds C++11 noreturn attribute. Mark\nDoLongJump methods as noreturn.\n\nChange-Id: Ifde4318e370493237050d4c1349285a0382df23f\n"
    },
    {
      "commit": "aa854aff139d01cb70ab977131334d0c6bfb0be0",
      "tree": "6335d8dfd30dd819001cf0f9e29534dca5cd7ffa",
      "parents": [
        "94fc0e7be35ab1dd42c6336071ea53dfc565faee",
        "597c4f0aeafed2b6fa69e53ece4be4f53115d707"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jan 27 07:32:23 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 27 07:32:24 2015 +0000"
      },
      "message": "Merge \"JDWP: allocate single step control only when active\""
    },
    {
      "commit": "597c4f0aeafed2b6fa69e53ece4be4f53115d707",
      "tree": "71e374bcc1600810fcf0b25b3194bb65ef2dbf2a",
      "parents": [
        "081d27817608c2ea035f2473c4ea1062a79bccef"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jan 26 17:37:14 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jan 26 20:15:02 2015 +0100"
      },
      "message": "JDWP: allocate single step control only when active\n\nOnly allocates SingleStepControl when a single step is requested in\na thread.\n\nBug: 19142632\nChange-Id: I830b7eaea86b516d3fac80ce14d41c66b4bd5415\n"
    },
    {
      "commit": "cb535da36915f9d10bec3880b46f1de1f7a69f22",
      "tree": "5fc15c1fab170f0f27022ad19880c5ffb15baa01",
      "parents": [
        "61e620d4771e09143471e38fe7531678a36ce3f8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 23 13:50:03 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 25 13:18:11 2015 -0800"
      },
      "message": "Change AtomicStack to use StackReference\n\nPreviously used Object*, using StackReference saves memory on 64 bit\ndevices.\n\nBug: 12935052\nBug: 17643507\nChange-Id: I035878690054eeeb24d655a900b8f26c837703ff\n"
    },
    {
      "commit": "2cd334ae2d4287216523882f0d298cf3901b7ab1",
      "tree": "b72d3d07e5a04151caca96cae345075b6e4452b0",
      "parents": [
        "604e2828896fbb8663897d1e75112da7305ead4c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 09 14:03:35 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 23 14:07:32 2015 -0800"
      },
      "message": "More of the concurrent copying collector.\n\nBug: 12687968\nChange-Id: I62f70274d47df6d6cab714df95c518b750ce3105\n"
    },
    {
      "commit": "956af0f0cb05422e38c1d22cbef309d16b8a1a12",
      "tree": "b558c804d206dad8da648b815750f1b3c97610ae",
      "parents": [
        "407d77f344cfbdbbfb50531c5f0766bc0892e2fe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 11 14:34:28 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 12 09:33:34 2014 -0800"
      },
      "message": "Remove portable.\n\nChange-Id: I3bf3250fa866fd2265f1b115d52fa5dedc48a7fc\n"
    },
    {
      "commit": "f2247513a54300cfa6a2f23fdbbafead115c99b2",
      "tree": "16d40b270b8a248ae9464d9aca9cd432c284b135",
      "parents": [
        "384f729a465d0ab3a76faa7ec8fa05ced82b4a85"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 16:17:08 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 16:27:15 2014 -0800"
      },
      "message": "Remove MethodHelper::HasSameNameAndSignature.\n\nMove sole use to a static method with art_method.cc.\n\nChange-Id: I2e7994cc1c31b5ca74df5d7be5538003d4ed0150\n"
    },
    {
      "commit": "d582fa4ea62083a7598dded5b82dc2198b3daac7",
      "tree": "c76704c266ef4687eab425612ddf3fd24f93fe8d",
      "parents": [
        "f20076ff813b8012096ff31af236d59db3c0f4e1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 05 23:46:43 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 13 16:17:46 2014 -0800"
      },
      "message": "Instruction set features for ARM64, MIPS and X86.\n\nAlso, refactor how feature strings are handled so they are additive or\nsubtractive.\nMake MIPS have features for FPU 32-bit and MIPS v2. Use in the quick compiler\nrather than #ifdefs that wouldn\u0027t have worked in cross-compilation.\nAdd SIMD features for x86/x86-64 proposed in:\n  https://android-review.googlesource.com/#/c/112370/\n\nBug: 18056890\n\nChange-Id: Ic88ff84a714926bd277beb74a430c5c7d5ed7666\n"
    },
    {
      "commit": "f4d4da18aa1914d10264082bd0433f59bff45453",
      "tree": "16edc1787c285135a0012cfc8737a8b89987f24b",
      "parents": [
        "4c9c251c2a32cd8d1be21bc47a9188358cb9f17f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 11 16:10:33 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 11 16:10:33 2014 -0800"
      },
      "message": "Allow JNI AttachCurrentThread to fail if not enough stack.\n\nAdd unit tests and move JavaVM JNI tests into there own set of gtests.\nBug: 18330119\n\nChange-Id: I0e93dff783b1f5d787b3084d24122883e14951a1\n"
    },
    {
      "commit": "277ccbd200ea43590dfc06a93ae184a765327ad0",
      "tree": "d89712e93da5fb2748989353c9ee071102cf3f33",
      "parents": [
        "ad17d41841ba1fb177fb0bf175ec0e9f5e1412b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 21:36:10 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 04 18:40:08 2014 -0800"
      },
      "message": "ART: More warnings\n\nEnable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,\nand -Wunused-but-set-parameter for GCC builds.\n\nChange-Id: I81bbdd762213444673c65d85edae594a523836e5\n"
    },
    {
      "commit": "575e78c41ece0dec969d31f46be563d4eb7ae43b",
      "tree": "16906df0ba0912a6cb01b3139ba7c60d5f9d09b7",
      "parents": [
        "2998e9cdc9f19c30c4944a4726ed9f147de79ebd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 23:41:03 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 23:41:03 2014 -0800"
      },
      "message": "ART: Replace COMPILE_ASSERT with static_assert (runtime)\n\nReplace all occurrences of COMPILE_ASSERT in the runtime tree.\n\nChange-Id: I01e420899c760094fb342cc6cb9e692dd670a0b2\n"
    },
    {
      "commit": "1d8cdbc5202378a5f1a4b3a1fba610675ed4dcd5",
      "tree": "6a1b0f49aee5a97b513bd0becc734d284aa7fb65",
      "parents": [
        "1c1786f193323d3bd706463894001117f3471595"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 22 22:51:09 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 20 16:01:28 2014 -0700"
      },
      "message": "Refactor quick entrypoints\n\nRemove FinishCalleeSaveFrameSetup.\nAssembly routines write down anchor into TLS as well as placing runtime\nmethod in callee save frame.\nSimplify artSet64InstanceFromCode by not computing the referrer from the\nstack in the C++ code.\nMove assembly offset tests next to constant declaration and tidy arch_test.\n\nChange-Id: Iededeebc05e54a1e2bb7bb3572b8ba012cffa1c8\n"
    },
    {
      "commit": "6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3",
      "tree": "f7a20779e4d665f948c5fbcd26dac0071dafb8d4",
      "parents": [
        "2df6840f68dd18d7dd8dbf53f8b6181bbfdc4fc4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 14 17:41:57 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 16 19:27:28 2014 -0700"
      },
      "message": "Make ART compile with GCC -O0 again.\n\nTidy up InstructionSetFeatures so that it has a type hierarchy dependent on\narchitecture.\nAdd to instruction_set_test to warn when InstructionSetFeatures don\u0027t agree\nwith ones from system properties, AT_HWCAP and /proc/cpuinfo.\nClean-up class linker entry point logic to not return entry points but to\ntest whether the passed code is the particular entrypoint. This works around\nimage trampolines that replicate entrypoints.\nBug: 17993736\n\nChange-Id: I5f4b49e88c3b02a79f9bee04f83395146ed7be23\n"
    },
    {
      "commit": "59c07060a6fbb93e455b44f00098cafb8e7e26cc",
      "tree": "e6db8fc4af24aa1704be0cd516d27340ae3ecae5",
      "parents": [
        "b2a7ec2ad3f24c4094185cbf87bd0a39f727ffe7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 10 13:03:39 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 10 15:01:21 2014 -0700"
      },
      "message": "Work around ICE bugs with MIPS GCC and O1.\n\nAlso, work around GCC warning bugs where array accesses with explicit\nbounds checks are flagged as being out-of-bounds. Significantly, clean-up\nthe HandleScope so the array accesses don\u0027t appear out-of-bounds at compile\ntime.\n\nChange-Id: I5d66567559cc1f97cd0aa02c0df8575ebadbfe3d\n"
    },
    {
      "commit": "13735955f39b3b304c37d2b2840663c131262c18",
      "tree": "0a731ac42b8230f9929172fa3e3d8051874e2b18",
      "parents": [
        "25b18bbdaa36ff936eb44f228f0518d4223e9d52"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 12:43:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 16:05:58 2014 -0700"
      },
      "message": "stdint types all the way!\n\nChange-Id: I4e4ef3a2002fc59ebd9097087f150eaf3f2a7e08\n"
    },
    {
      "commit": "c8ccf68b805c92674545f63e0341ba47e8d9701c",
      "tree": "fb360323538cb242ebf7c5c0aca27d3a0bce0abb",
      "parents": [
        "fcabfbe577c0fd40910b565beb681bd4b66f6c5d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 20:07:43 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 20:13:48 2014 -0700"
      },
      "message": "ART: Fix some -Wpedantic errors\n\nRemove extra semicolons.\n\nDollar signs in C++ identifiers are an extension.\n\nNamed variadic macros are an extension.\n\nBinary literals are a C++14 feature.\n\nEnum re-declarations are not allowed.\n\nOverflow.\n\nChange-Id: I7d16b2217b2ef2959ca69de84eaecc754517714a\n"
    },
    {
      "commit": "2d5f39ed5aeaeb7ca22b07b4c6e8c56348ef8893",
      "tree": "b0b9a8d4c386555f009b825bd5fbd8ab31909c3b",
      "parents": [
        "24f4b816dd50793e8456dc60fe1b50856004d708"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 19 17:52:37 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 19 18:57:47 2014 -0700"
      },
      "message": "Add ScopedAssertNoThreadSuspension\n\nAdded a new class, ScopedAssertNoThreadSuspension.\nDeleted some unnecessary ScopedAssertNoThreadSuspension since\nVisitObjects already has a ScopedAssertNoThreadSuspension.\n\nChange-Id: I29ec0006120c39a27184d30e2d1d0c179e203776\n"
    }
  ],
  "next": "7b078e8c04f3e1451dbdd18543c8b9692b5b067e"
}
