)]}'
{
  "log": [
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "4557b3858a66aa20e42bce937e1f0620aad880a2",
      "tree": "8f34d8f014b11f17c6351bb955fcc74c940b8d16",
      "parents": [
        "90f20973356900e340998e8e2b34230e5c4c8fb0"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 03 11:47:54 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 03 12:45:40 2018 +0000"
      },
      "message": "ART: Rename Atomic::CompareExchange methods\n\nRenames Atomic::CompareExchange methods to Atomic::CompareAndSet\nequivalents. These methods return a boolean and do not get the witness\nvalue. This makes space for Atomic::CompareAndExchange methods in a\nlater commit that will return a boolean and get the witness value.\n\nThis is pre-work for VarHandle accessors which require both forms.\n\nBug: 65872996\nTest: art/test.py --host -j32\nChange-Id: I9c691250e5556cbfde7811381b06d2920247f1a1\n"
    },
    {
      "commit": "808c7a57bb913b13c22884f57cdacd59bf1fdb3f",
      "tree": "d7f0d7cabaac5a7646c25bae584a82a9aa279cc0",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 15 11:19:33 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 22 09:41:17 2017 -0800"
      },
      "message": "Make CodeItem fields private\n\nMake code item fields private and use accessors. Added a hand full of\nfriend classes to reduce the size of the change.\n\nChanged default to be nullable and removed CreateNullable.\nCreateNullable was a bad API since it defaulted to the unsafe, may\nadd a CreateNonNullable if it\u0027s important for performance.\n\nMotivation:\nHave a different layout for code items in cdex.\n\nBug: 63756964\nTest: test-art-host-gtest\nTest: test/testrunner/testrunner.py --host\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nChange-Id: I42bc7435e20358682075cb6de52713b595f95bf9\n"
    },
    {
      "commit": "9310495f3bb601058a3b6dedc298ad9f5275510e",
      "tree": "14472899a051a890a429c687836e15407f76cb74",
      "parents": [
        "ed416f76ae679d92f0bc648581de2684ff93e29a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 13 17:13:15 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 14 17:11:22 2017 -0800"
      },
      "message": "ART: Factor out stack dumping with monitor objects\n\nFactor out generic stack walking with monitor object visitation into\nMonitorObjectsStackVisitor. Rewrite StackDumpVisitor in terms of this,\nremoving Monitor::DescribeWait on the way.\n\nBug: 70538431\nTest: m test-art-host\nTest: manual (SIGQUIT dumping)\nChange-Id: I6f359f9a5f665f308328ad466bc7a437f52aea24\n"
    },
    {
      "commit": "f3ebccef2fd375e8b06fc0f93ba8395a577a37bf",
      "tree": "7d160f13491f6a34074a459e9873433247d4990f",
      "parents": [
        "ba3a790338725a37ecd4cb314c4a6147e29aef38"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 11 20:40:23 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 14 11:14:45 2017 -0800"
      },
      "message": "ART: Add Monitor::FetchState\n\nAdd a function returning descriptive state for a monitor. The\nfunction will return the thread state, and possible the object\nthe thread is blocked/waiting/sleeping on, as well as the lock\nowner\u0027s tid.\n\nRewrite DescribeWait to use this.\n\nIn preparation for new uses.\n\nBug: 70538431\nTest: m\nChange-Id: I79d0104ad04dec633522d4127542184a0cbdf95c\n"
    },
    {
      "commit": "170331f0e44a0e07fcfe0b5932517e0500f5cd1f",
      "tree": "4bb837aa3b6e19c898df23894beb61957885e985",
      "parents": [
        "39b378ca3b4b6dc6da1651b84ee4289cd9bff0f8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 18:41:03 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 18:41:03 2017 -0800"
      },
      "message": "ART: Remove base/logging from heap-inl.h\n\nHide the single uncommon VLOG and remove the include. Fix up\ntransitive includes.\n\nTest: m\nChange-Id: I917df597cb62c57040c1fb0e0079df4d95e5a658\n"
    },
    {
      "commit": "aaf0d38d9e3bd35aaf5ea2be6409bf2f3575f0ad",
      "tree": "a1eb3414c972f866b606dd1d11b3203640f30880",
      "parents": [
        "23f8f50ace964ed597261f19e87ac050f415957e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 27 14:10:21 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 28 12:01:32 2017 -0800"
      },
      "message": "ART: Change lock dumping\n\nReturn dex registers as well as dex PCs from FindLocksAtDexPc.\n\nIt is necessary to return the registers as the register used for\na monitor-enter operation may be aliased and overwritten by the\ntime the requested dex PC is reached.\n\nIt is at this point necessary to return a set of registers as\noptimizations may have eliminated dead registers, and the verifier\nhas no notion of liveness.\n\nA client of FindLocksAtDexPc should not assume that all registers\ncan be successfully retrieved from a stack frame, with the possibility\nof none. Only a properly verified method (i.e., lock verification succeeded)\nimplies that at least one register should work for all locks held at\nany point in the program.\n\nBug: 68703210\nTest: art/test/testrunner/testrunner.py -b --host -t 167\nChange-Id: I9027787e395cf8df0e7699a606665edb2ecb5136\n"
    },
    {
      "commit": "5a387277465181ee76751fc07b36f7f4e4a2b35b",
      "tree": "230af932a63e8d33be7c71372f8a94b0b43f8c7c",
      "parents": [
        "39cfa34828620220e3bdba181b36712fdbcd2639"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 06 19:47:16 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 06 20:19:00 2017 -0800"
      },
      "message": "ART: Do not use proxy method as owner of lock\n\nDuring lock inflation, it is possible to see a proxy method on\ntop of the stack, e.g., when it is allocating its args array.\nHowever, proxy methods are not helpful for lock profiling, as\nthey do not contain specific caller data we could use.\n\nInstead, try to walk the stack for the proxy\u0027s caller method,\nand use that as the owner. This is acceptable as proxies can\nnever be synchronized methods (as interfaces methods aren\u0027t),\nand the caller frame cannot be a proxy method itself.\n\nAdd a test. But the repro rate is really low.\n\nBug: 68871592\nTest: m test-art-host\nChange-Id: I02cf38c7d05e2c963a5dc489c57b6dd8009dccd4\n"
    },
    {
      "commit": "71ae03b7a56ddb9c45e3a7edd690fe919af9f17a",
      "tree": "62e9ff8cf22629abc0b89ab6ec4db22b7477f6fa",
      "parents": [
        "f0536a524bfa750c91d458bf777e517287b50186",
        "5d6891446445497332986782f9490e949ecd55c9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 20 15:34:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 20 15:34:32 2017 +0000"
      },
      "message": "Merge \"ART: Increase lock contention thresholds in debug builds\""
    },
    {
      "commit": "5d6891446445497332986782f9490e949ecd55c9",
      "tree": "aff2c7ea53a0763b9a37272ff2c945264cb1b528",
      "parents": [
        "1b8376c8127c973377e7881afb1ae41a8cf812c1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 19 13:03:29 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 19 13:22:50 2017 -0700"
      },
      "message": "ART: Increase lock contention thresholds in debug builds\n\nDebug builds are known-slower. To avoid the overhead of stack\ninspection, formatting and printing, increase the thresholds\ntenfold.\n\nBug: 35644369\nTest: m test-art-host\nChange-Id: Ica43a7c5123223c7c2d94a606d745f7aadad0259\n"
    },
    {
      "commit": "b1e31a8337b9cce2f3160a972123886b355dce27",
      "tree": "30413acc04bd03c385b3b6023e332ecc535ff4ee",
      "parents": [
        "8cdfac752808784d29185710095ad104922cd861"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Oct 04 16:57:36 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Oct 18 17:01:37 2017 -0700"
      },
      "message": "Change RequestSynchronousCheckpoint to release thread_list_lock_\n\nThe RequestSynchronousCheckpoint function in some cases needs to\nrelease the thread_list_lock_ as it waits for a checkpoint to be\nexecuted. This means that the thread being checkpointed might be\ndeleted. Previously it was not obvious this was the case since the\nthread_list_lock_ seemed to be held throughout the execution of the\nmethod.\n\nIn order to prevent bugs we make RequestSynchronousCheckpoint\nexplicitly release the thread_list_lock_ when executed, meaning code\nwill be aware that threads might die during its execution.\n\nBug: 67362832\nTest: ./test.py --host -j50\nChange-Id: I1cbdf7660096dc1908b0eeabc1062447307bc888\n"
    },
    {
      "commit": "848574ca50bb7e2d109608359d1086b3ca6bb4b3",
      "tree": "6a3d55ae8b66279c1e417c7c5116394613037ae8",
      "parents": [
        "9c0a6ce0a41eaf78f3fc3224fc34195601b6e0b3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Sep 25 16:59:39 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 28 12:56:13 2017 -0700"
      },
      "message": "Implement asynchronous exception support\n\nThis CL implements async exception support in the switch interpreter.\nIt also adds support for the MTerp to detect and switch back to the\nswitch interpreter in cases where an async exception is detected.\n\nTests follow in next CL.\n\nTest: ./test.py --host -j50\n\nBug: 62821960\nBug: 34415266\n\nChange-Id: Idb53711a40c20f962de8aa6b74662676b8bd25c6\n"
    },
    {
      "commit": "e2abbc604ce003c776c00ecf1293796bb4c4ac5a",
      "tree": "f7d124d1861cad2162c30dfe932bb4e1beaf41ef",
      "parents": [
        "7090dfe84f78b1928fcbdfd664d0dd9ea52633ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 15 11:59:26 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 11:36:24 2017 -0700"
      },
      "message": "ART: Move kDexNoIndex to dex_file_types.h\n\nDefine the constant with the types to allow lowering the dependency\non DexFile.\n\nTest: m\nChange-Id: I3c61421db45be96d2057e01b1a7825883d8bd178\n"
    },
    {
      "commit": "77fee87b262e969b29a9ac121a8bcbf87b68d9ce",
      "tree": "3280ba8d887045217bfbcb81eb624f571eeee7d0",
      "parents": [
        "ec995142998f6c7371734e6df95b5e2c80b18d27"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 05 14:51:49 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 14 09:57:03 2017 -0700"
      },
      "message": "Add support for JVMTI monitor events.\n\nAdds support for the JVMTI can_generate_monitor_events capability and\nall associated events. This adds support for the\nJVMTI_EVENT_MONITOR_WAIT, JVMTI_EVENT_MONITOR_WAITED,\nJVMTI_EVENT_MONITOR_CONTENDED_ENTER, and\nJVMTI_EVENT_MONITOR_CONTENDED_ENTERED events.\n\nBug: 65558434\nBug: 62821960\nBug: 34415266\n\nTest: ./test.py --host -j50\n\nChange-Id: I0fe8038e6c4249e77d37a67e5056b5d2a94b6f48\n"
    },
    {
      "commit": "ce56864b347983155a6b810c19eaa8297d77be96",
      "tree": "c572198fee2fe2cc4b2291b7af124c5429e63f7e",
      "parents": [
        "82629c9182dffb823f05dec30f7ac72cf8fb3ba5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 05 16:54:25 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Sep 06 17:50:27 2017 -0700"
      },
      "message": "Add support for JVMTI GetObjectMonitorUsage function.\n\nAdds support for the can_get_monitor_info capability and all\nassociated functionality. Also fixes a minor bug where monitor info\nincorrectly said that an unlocked monitor had 1 entry in some cases.\n\nTest: ./test.py --host -j50\nTest: art/tools/run-jdwp-tests --mode\u003dhost\n\nBug: 62821960\nBug: 34409230\n\nChange-Id: I9a4817ea309aaf94c56e9c0a694b88c93e7b629c\n"
    },
    {
      "commit": "88fd720b6799184c8ad61e766a6d37af33ed30ef",
      "tree": "80e49456eafd44b0ad8790be456ae06949fcc506",
      "parents": [
        "1cba8d219331e4d6994359e8f9104e5db2c8f8a9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 30 08:31:59 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 13 09:11:03 2017 -0700"
      },
      "message": "Add Jvmti Suspend/ResumeThread functions\n\nEnable the can_suspend jvmti capability and implement all required\nfunctionality associated with it.\n\nTest: ./test.py --host -j40\nBug: 34415266\nBug: 62821960\nBug: 63579748\n\nChange-Id: I83b92de7f81622e1658114b034918e8295805b6e\n"
    },
    {
      "commit": "46f9340f2a055a8fdfebbfbb739c697c20d83e7c",
      "tree": "acb172f74723e4ea9ac7ded73b94c661217ec90d",
      "parents": [
        "fe9a4f061841a3c597aac6817a47c799c54fcad7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 29 11:59:50 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 30 14:24:56 2017 +0000"
      },
      "message": "Add SuspendReason enum and change Suspension functions.\n\nMore self-documenting and more type safe.\n\nBug: 62821960\nTest: ./test.py\nChange-Id: Ic7a1ae6a25e687d65f5aa10c1aad54a7b80dd086\n"
    },
    {
      "commit": "d0210e58100e029e865e783beb7906090781f602",
      "tree": "ace7eea3b27e97e3e01060ea1d0a6ef277a8f89f",
      "parents": [
        "a0e63dfbfe2f2513a709e94b8a1ac17418396fdf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 23 13:38:09 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 23 15:51:11 2017 -0700"
      },
      "message": "ART: Add stack-dump mode for contention logging\n\nAdd a second threshold to contention logging. If this threshold\nis reached, log the owner and the contender thread to the logcat.\n\nRequires a bit of refactor in the contention logging code to hold\nthe locks correctly (different requirements for owner and contender).\nAdd -Xstackdumplockprofthreshold:ms to control the threshold value.\nAs with general contention logging, default to 0 \u003d off. Use ThreadStress\nwith --locks-only to get test coverage.\n\nBug: 62353392\nTest: m test-art-host\nChange-Id: I1b5a5130c4f908497ac06464130844f5ca42a5fb\n"
    },
    {
      "commit": "111b10957aee2c0f79310fcec4cff32eb90bf1c2",
      "tree": "043ef481eef7b7b9d4284860b58a66ef54b5ede6",
      "parents": [
        "19921b70fef519c644d56a6aeb7f82491ba1850c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 22 20:28:23 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 22 20:28:23 2017 -0700"
      },
      "message": "ART: Change contention logging lock strategy\n\nCompute possible contention (wrt/ sampling) first. Then keep the whole\nlogging section under the mutator lock *and* the thread-list lock so\nas to avoid any thread races.\n\nThis change is in preparation for heavier logging under heavy lock\ncontention.\n\nEnable contention logging in 004-ThreadStress.\n\nBug: 62353392\nTest: m test-art-host\nChange-Id: I7b9126bae273f0cddb681f5f013ce6d814c7b8c0\n"
    },
    {
      "commit": "5d08fcc21a14190c4dba3028a3e35d281afdd016",
      "tree": "c42de65ced190778342d9b022e400f4a7f9d346b",
      "parents": [
        "57cf00bde719ddc84a6015b107b90a20169e3099"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 17:56:46 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 20:28:16 2017 -0700"
      },
      "message": "ART: More header cleanups\n\nPull out more dependencies through forward declarations.\n\nTest: m test-art-host\nChange-Id: I7d86726928937f788b956ec9eac91532d66d57ae\n"
    },
    {
      "commit": "a4c90b90f8a819c5b883a8e0d4ea7d5ad835f58a",
      "tree": "3659423a48f78f20b1a6752e48e162ba5cacadef",
      "parents": [
        "6559ba1cfb9d24fdca4b1b1ec9e0b8dc31679982",
        "39b98113c0e6765a68fb1bc3cd8fd98c858ce637"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 02 18:25:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 02 18:25:24 2017 +0000"
      },
      "message": "Merge \"ART: Move source owner data to LogContentionEvent\""
    },
    {
      "commit": "39b98113c0e6765a68fb1bc3cd8fd98c858ce637",
      "tree": "370dbf1f071fd79399081a4f51ec1cfd2caf9157",
      "parents": [
        "596c58b3dc73a4017d49af6c5037bbd7109fd31e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 16:28:27 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 16:34:07 2017 -0700"
      },
      "message": "ART: Move source owner data to LogContentionEvent\n\nChange the signature of Monitor::LogContentionEvent to take the\nowner\u0027s ArtMethod and dex pc instead of the derived data. Move the\ndecoding from monitor.cc to monitor_android.cc.\n\nThis change does not change functionality. It is only in preparation\nfor a later, actual change of what is being logged.\n\nBug: 62241642\nTest: m test-art-host\nChange-Id: I30f02eeecbc556f8eb7b637301ed8ac9b1e40a93\n"
    },
    {
      "commit": "513061a792b22c417c938d31c19581390709561c",
      "tree": "80b4fdce03711170626aa5640d07b07de4a326a1",
      "parents": [
        "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 09:17:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 12:59:13 2017 -0700"
      },
      "message": "ART: Clean up thread.h and thread_list.h\n\nRemove dependency on stack.h and gc_root.h. Remove unused object\ncallbacks include. Factor out ManagedStack into its own set of files.\nFix up users of transitive includes.\n\nTest: m test-art-host\nChange-Id: I01286c43d8c7710948c161b1348faabb05922e59\n"
    },
    {
      "commit": "365719c23d809e595cf320bfba40e76bb4e87940",
      "tree": "0939f0d8dc47723978a665fa11dd637f6976d521",
      "parents": [
        "d6705a0586377f1b0d7d14d3abe2b270bb0adb18"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 08 13:11:50 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 16 01:58:03 2017 +0100"
      },
      "message": "No need to lock when calling Thread.interrupted.\n\nAlso intrinsify the Thread.interrupted call.\n\nThe rationale behind this optimization is that the flag can only\nhave two values, and only self can set it to false.\n\nTest: libcore, jdwp, run-tests, 050-sync-test\nChange-Id: I5c2b43bf872ba0bfafcb54b2cfcd19181864bc4c\n"
    },
    {
      "commit": "c6ea7d00ad069a2736f603daa3d8eaa9a1f8ea11",
      "tree": "a6d3332a8592fb806841314d55b206b573d37d86",
      "parents": [
        "d68677c5fde1ace16ea58d65733776c954e7acb4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 01 16:46:28 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 08:40:33 2017 -0700"
      },
      "message": "ART: Clean up art_method.h\n\nClean up the header. Fix up other headers including the -inl file,\nin an effort to prune the include graph. Fix broken transitive\nincludes by making includes explicit. Introduce new -inl files\nfor method handles and reference visiting.\n\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_angler-userdebug \u0026\u0026 mmma art\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_mips64-userdebug \u0026\u0026 mmma art\nChange-Id: I8f60f1160c2a702fdf3598149dae38f6fa6bc851\n"
    },
    {
      "commit": "a222404a5832ab16786931576d52825d08eed3ca",
      "tree": "7350e5efbb6ef72c33e82753d79f7f4bed92d9d4",
      "parents": [
        "1561de49b382627ddd277b8ad7e5e8f4cec32f0b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Feb 08 16:35:45 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Feb 10 16:15:01 2017 -0800"
      },
      "message": "Fix the empty checkpoint timeout.\n\nThe problem happens when a thread is indirectly blocked on a mutex\nthat another thread holds and is blocked on a weak ref access.\n\nAdd a way to do a dummy wakeup on a thread that\u0027s blocked on a mutex\nso that the thread will respond to the empty checkpoint request. Do\nthis for the mutexes that are expected to be held when a weak ref is\naccessed. Add a check that detects an unexpected case.\n\nBug: 33006388\nBug: 12687968\nTest: test-art-host.\nChange-Id: Iefec69b9a21aa25a928cb31fcf4fb872f867a8c2\n"
    },
    {
      "commit": "2702d56dc837256af90715200fd79b3cfde906ca",
      "tree": "98cd60eb7a072faa3c0cfd8a9cf212e521a79508",
      "parents": [
        "df04fda5638aa1fb9956808f1cd497b49f62088e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 06 09:48:00 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 06 12:40:03 2017 -0800"
      },
      "message": "ART: Fix systrace monitor logging deadlock\n\nMove the method logging earlier to avoid a deadlock due to re-acquiring\nthe mutator lock.\n\nBug: 34990215\nTest: m\nTest: Test on device\nChange-Id: Id8069b133d1408a659afadd7e265d5027ac55a39\n"
    },
    {
      "commit": "71cd68d36f024d6c8ccfc8bc9d196a8f86e6cf7d",
      "tree": "d59739ac2520f6d400c81631d8198c071723b7fa",
      "parents": [
        "7510dcb0435e6c3f1da1d329bde3cf0274bc7da8"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Jan 25 18:28:12 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Jan 25 18:53:51 2017 -0800"
      },
      "message": "Avoid accessing the heap without mutator lock in Monitor::Lock.\n\nScopedThreadStateTransition doesn\u0027t do annotations and we are\naccidentally accessing the heap without holding the mutator lock in\nMonitor::PrettyContentionInfo. Use ScopedThreadSuspension instead.\n\nBug: 34674595\nTest: test-art-host\n\nChange-Id: If3ec86429ff99405ab14b3588f192ab1c0472cc8\n"
    },
    {
      "commit": "6fe97e0bcc82ae9b9a0ada5cac7eaebf74d130c3",
      "tree": "17ea0b64cf7e3f95252af1e95e4788d339f2c4e2",
      "parents": [
        "152b9567d0c2382464c844c91c2108608a1bc06f"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed May 04 18:35:57 2016 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Jan 23 12:40:03 2017 -0800"
      },
      "message": "Add explicit monitor inflation run test.\n\nThis tests some of the same code as the monitor_pool_test\ngtest. But it tests a larger pool size with the code needed to\ninvoke it from the Java level.  Larger pool sizes have gotten\nmore interesting with the new monitor pool layout.\n\nAdd a function to return the size of the current MonitorList.\nCurrently this is only used by this test, but it is likely to\nhave debugging or performance analysis uses as well.\n\nTest: Passed on host and on angler.\n\nChange-Id: I4f3f150044a0d8c800eb60635e074119598cfdd1\n"
    },
    {
      "commit": "f1c6f8742e2ac980c7259f4dc70b4326ecc245e1",
      "tree": "27bdef2da9d0c37003c0859cc3e5a58ff26092e2",
      "parents": [
        "48ff5b9aecd9c9d3eb00242aee52a0a8193421df"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 06 12:23:47 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 06 12:48:15 2017 -0800"
      },
      "message": "Don\u0027t need to block in AddWeakGlobalRef and MonitorList::Add under CC.\n\nCMS needs this to block because an object allocated during the GC\nwon\u0027t be marked and concurrent reference processing would incorrectly\nclear the JNI weak ref or the monitor list weak.\n\nBut CC doesn\u0027t because of the to-space invariant, that is, when a\nmutator tries to create a JNI weak ref or a monitor for an object, it\nmust be already marked and the concurrent reference processing\nwouldn\u0027t incorrectly clear it.\n\nBug: 34128900\nBug: 12687968\nTest: test-art-host with CC.\nChange-Id: Ia87bf8ed9e604900df5ecb450c89b0ac222bef32\n"
    },
    {
      "commit": "b3da36c182329f228b8c78d306a57fa11a6004ea",
      "tree": "707233fdaf345eb0b8068cfde5a1bff4e16aab53",
      "parents": [
        "1e33d05866bd5f146e2341712a1c06037e9d07a2"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Dec 15 13:12:59 2016 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Jan 04 15:18:22 2017 -0800"
      },
      "message": "Reduce the number of fences needed for monitors\n\nAdd the necessary CasWeakAcquire primitives for LockWords.\n\nHave MonitorEnter initially read the lockword using a\nmemory_order_relaxed operation. In the unlikely case we need more,\ncompensate with an explicit fence.\n\nIn the uncontended case, install the thin lock with Acquire,\nrather than SequentiallyConsistent semantics.\n\nHave MonitorExit use a Release instead of SequentiallyConsistent\nCAS in the ReadBarrier case. Add TODO for the other case.\n\nTogether, these should usually eliminate 3 fences (or acq/rel)\nper critical section.\n\nHave Install() only use Release ordering.\n\nAdd TODO for inflation spinning, which looks to me like it could be\nimproved appreciably.\n\nDrive-by fix:\n\nGetMaxSpinsBeforeThinLockInflation spelling\n\nTest: Build for several targets, boot, m art-test-host art-test-target\n\nChange-Id: I2cab09723252065f6365e4234ee3249c69ece888\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "39ce7d2907edb978f1ab6cd75884be48ab11cd77",
      "tree": "7d2f0c56bd8a7dd483b5c1ede7047b623d0e35d7",
      "parents": [
        "5302bd999afee6db5b0cfd63e6a49b0fcbf92dd4",
        "3049324f4ef71b5d7a3de49bd77c75f07dbf8f3a"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Nov 11 18:44:44 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 11 18:44:44 2016 +0000"
      },
      "message": "Merge \"Make empty checkpoint work while weak ref access is disabled.\""
    },
    {
      "commit": "3049324f4ef71b5d7a3de49bd77c75f07dbf8f3a",
      "tree": "19e2d9d5e8476bf526dd5924ef05b1d727b75f8b",
      "parents": [
        "e7b46e22c7f4f6f503501b3b2ad99113289d142b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Nov 03 13:06:52 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Nov 09 18:14:08 2016 -0800"
      },
      "message": "Make empty checkpoint work while weak ref access is disabled.\n\nFix a potential race on PushOntoMarkStack for CC by running an empty\ncheckpoint (while weak ref access is disabled).\n\nBug: 32508093\nBug: 12687968\nTest: test-art-host with CC/CMS, libartd boot with N9, Ritz EAAC.\nChange-Id: I3749bb525e7734804307ee16262355f3fc730312\n"
    },
    {
      "commit": "1cf194f055b7152fde817787fcdadeea1fb1067c",
      "tree": "b47da959af7a1f0138d92fe9989ae299462fed96",
      "parents": [
        "77a0e4541a29c26dba21ed8c1ed1c29ef8d0ce4c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 01 20:13:24 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 02 14:27:06 2016 -0700"
      },
      "message": "Check for forwarding address in READ_BARRIER_MARK_REG\n\nWhen the object is in the from-space, the mark bit is not set.\nIn this case, we can also check the lock word for being a forwarding\naddress. The forwarding address case happens around 25% of the time.\nThis CL adds the case for forwarding address lock words to\nREAD_BARRIER_MARK_REG.\n\nReduces total read barriers reaching runtime on ritzperf:\nSlow paths: 20758783 -\u003e 15457783\n\nDeleted the mark bit check in MarkFromReadBarrier since most of the\ncallers check the bit now.\n\nPerf:\nReadBarrier::Mark: 2.59% -\u003e 2.12%\nart_quick_read_barrier_mark_reg01: 0.79% -\u003e 0.78%\nart_quick_read_barrier_mark_reg00: 0.54% -\u003e 0.50%\nart_quick_read_barrier_mark_reg02: 0.31% -\u003e 0.25%\n\nOnly X86_64 for now, will do other archs after.\n\nBug: 30162165\n\nTest: test-art-host\n\nChange-Id: Ie7289d684d0e37a887943d77710092e380457860\n"
    },
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "7b08ae49a134458504367c3e9fa5fe080db3b89c",
      "tree": "f8431c8cb026a66784c1d61d92a8e2fb1af9daea",
      "parents": [
        "d74bd3a9a48d34d7321f7de7a6f8e1d3467be58a"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Oct 04 15:20:36 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Oct 04 15:21:58 2016 -0700"
      },
      "message": "Fix a CC crash with ThreadStress.\n\nAdd a read barrier on the locked object in Monitor::DescribeWait().\n\nBug: 31848261\nBug: 12687968\nTest: test-art-host with CC and N9 libartd boot.\nChange-Id: I569e1499c2aadf54d9074a8a790e5d512c2dad4f\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": "3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0",
      "tree": "f38d8d8aae51f53e7ee6b474f47597b784fc2316",
      "parents": [
        "0cfe19af3b7395658210ea6044a65c9811962a7a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 13 10:47:28 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 10:59:22 2016 -0700"
      },
      "message": "ART: Use libbase logging\n\nMove most of our logging infrastructure over to system/core/base.\nRetain VLOG.\n\nUsing unified Android infrastructure has two main advantages. First,\nit reduces the complexity/maintenance burden in ART. Second, it\nallows to detach logging for the cases where we do not want or need\na runtime, e.g., dexdump, the disassembler, etc. As a part of the\nlatter, libbase is also supported for all hosts (including Windows).\n\nFrom a developer viewpoint, there are minor behavior changes for the\nLOG statements (see above), but otherwise usage is the same. Explicit\nseverity enum items are in the android::base namespace now.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: I5abcb2f45f5b03d49951874c48544f72a283a91b\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": "36a270ae4f288e49493432b7128f899ad579849e",
      "tree": "99f134bbfe111b1c42b1b0c19d8b65175a3e6fc8",
      "parents": [
        "89bd8358c0a69e8cd6456d81d88ef366e261f732"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 28 18:08:51 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 03 15:46:18 2016 -0700"
      },
      "message": "Change one read barrier bit to mark bit\n\nOptimization to help slow path performance. When the GC marks an\nobject through the read barrier slow path. The GC sets the mark bit\nin the lock word of that reference. This bit is checked from the\nassembly entrypoint the common case is that it is set. If the bit is\nset, the read barrier knows the object is already marked and there is\nno work to do.\n\nTo prevent dirty pages in zygote and image, the bit is set by the\nimage writer and zygote space creation.\n\nEAAC score (lower is better):\nN9: 777 -\u003e 700 (average 31 of runs)\nN6P (960000 mhz): 1737.48 -\u003e 1442.31 (average of 25 runs)\n\nBug: 30162165\nBug: 12687968\n\nTest: N9, N6P booting, test-art-host, test-art-target all with CC\n\nChange-Id: Iae0cacfae221e33151d3c0ab65338d1c822ab63d\n"
    },
    {
      "commit": "4b0ef1c980a1f3b0201d77e33bdb2f7df12c9114",
      "tree": "4b8891beab013872144d69f97e918f9914aaf8c8",
      "parents": [
        "7707777f064e9e0aa53c40c189045ab2ea4301ee"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 29 16:26:01 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 29 17:54:09 2016 -0700"
      },
      "message": "Revert \"Revert \"Use try lock to fix class resolution race\"\"\n\nFix possible deadlock in EnsureResolved caused by interaction with\nGC. Since we were sleeping while holding the mutator lock, it could\nblock thread suspension. This would deadlock if the thread that\nhad locked h_class is already suspended since we would spin forever\nand not make progress.\n\nBug: 27417671\nBug: 30500547\n\nTest: test-art-host ART_TEST_GC_STRESS\u003dtrue\n\nThis reverts commit 69bf969c055c31a75d17ea92aeee756042678114.\n\nChange-Id: Id8750df065dc3b9ef7dc874f2eb2cc2c58e5d1eb\n"
    },
    {
      "commit": "69bf969c055c31a75d17ea92aeee756042678114",
      "tree": "3132e2e1e5b1f1af558652d9b39eeb6c994ec256",
      "parents": [
        "a704eda0078989a73cac111ed309aca50d2e289b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 29 20:06:45 2016 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 29 20:12:48 2016 +0000"
      },
      "message": "Revert \"Use try lock to fix class resolution race\"\n\nThis reverts commit a704eda0078989a73cac111ed309aca50d2e289b.\n\nBug: 27417671\nBug: 30500547\nChange-Id: Ieea05236b9e61c722660cd9497c9d55d13ccd010\n"
    },
    {
      "commit": "a704eda0078989a73cac111ed309aca50d2e289b",
      "tree": "07fd076b3ea6f86bfea71e4c6707fd301f108db5",
      "parents": [
        "9755c262df1be7f5d5b98d038c8fd3734e974f9d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 13 09:53:35 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 27 14:37:42 2016 -0700"
      },
      "message": "Use try lock to fix class resolution race\n\nThere was some possible deadlocks related to EnsureResolved caused by\nacquiring an object lock.\n\nScenario:\nThread 1 acquires lock on obj1\nThread 1 begins to resolve / initialize class1\nThread 1 blocks since it sees that class1 is already being resolved and\ngets preempted before it can acquire the object lock on class1\nThread 2 finishes resolving and initializing class1 and locks class1\nThread 2 blocks attempting to lock obj1\nThread 1 blocks attempting to lock class1\nDeadlock\n\nFixed the deadlock by changing EnsureResolved to use a try lock for the\nunresolved case.\n\nAdded a test.\n\nTest: Device boot, test-art-host, monitor_test\n\nBug: 27417671\nChange-Id: Ic6e1c3ca6f45490cf8a7bf8e137dee71ac83ff64\n"
    },
    {
      "commit": "c6df1e3cbfa7313007ee5fd4a5a6657a28627313",
      "tree": "13042081c7e5a784a90422c759e9b73e5cc9b013",
      "parents": [
        "19c10147cd5f3270c8604d06c4a0e05cbc49e2f1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 04 10:15:47 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 04 16:40:51 2016 +0100"
      },
      "message": "Never go to resolution while inspecting inlined frames.\n\nInstead, do a manual inspection and decoding of the invoke\nwith the dex cache.\n\nAlso update oatdump to dump types in the dex cache.\n\nbug:27858645\nChange-Id: I7c0b612ee96e6865fa438c3a1d253686231337bd\ntest:run-test\n"
    },
    {
      "commit": "6e759ad477a30e09cce8ca59ed30180aceb8aff6",
      "tree": "5df26346612113c1a53d5b991d81a263fb7f2f3b",
      "parents": [
        "7463820747549be5d2babf93bb16ac739c053ce9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 17 10:13:10 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 17 21:23:04 2016 -0700"
      },
      "message": "ART: Fix systrace monitor logging\n\nThinlock unlocking was incorrectly unconditionally ending a block.\n\nBug: 28423466\n\n(cherry picked from commit 825ab1c3f44fd84e5967f023c2dd8d36c6906f08)\n\nChange-Id: Ifaebd9e959041e157e292d4cba05675a37e9c700\n"
    },
    {
      "commit": "9d05b59a8595cf7eeece1795eb65b6b8706aad45",
      "tree": "508e0f3db0d605f312ac6d1d6cb4b24498cff46e",
      "parents": [
        "bf80a0678e9c0cfda87deffac5012cb69956e6dc",
        "764946701593bcf79560ab5aace501f915e12bae"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 30 00:08:08 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 30 00:08:08 2016 +0000"
      },
      "message": "Merge changes I6942bc86,Ie67e4aa9\n\n* changes:\n  ART: Fix Mac build\n  ART: Log all monitor operations to systrace\n"
    },
    {
      "commit": "c7ed09bd5d6f2c7af3bcba1c39b3f9185af68796",
      "tree": "bfad0c9f5236cc4d158bc0c64d5ef645ce09d283",
      "parents": [
        "0f35e0b26d8c7738ca7b284357afa9dafb659d47"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 25 20:08:55 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 29 16:06:14 2016 -0700"
      },
      "message": "ART: Log all monitor operations to systrace\n\nAdd a VLOG option (\"-verbose:systrace-locks\") to log all monitor\noperations to systrace. This requires non-fastpath thread\nentrypoints, and ATRACE tags for locking and unlocking.\n\nDo a bit of cleanup to the entrypoint initialization to share\ncommon setup.\n\nBug: 28423466\n\n(cherry picked from commit fc6898769ae1ef91ec3e41c0a273401213cb82cd)\n\nChange-Id: Ie67e4aa946ec15f8fcf8cb7134c5d3cff0119ab3\n"
    },
    {
      "commit": "36891febf59f156c89ca86859bd8339947dc8baf",
      "tree": "2b2581890fc689794168df628e3e864eb1349818",
      "parents": [
        "64d91c609d039cef1c3c0a5c1561d44c362e7682"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 28 17:21:08 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 29 10:56:22 2016 -0700"
      },
      "message": "Add contender method for lock contention\n\nNow prints the method that is attempting to acquire the lock.\n\nBug: 28223501\n\n(cherry picked from commit 8f26411287cddd983df6f1d00dbc3841767c123d)\n\nChange-Id: Ia130a525c8415defec36b2e23f358d18aac079ad\n"
    },
    {
      "commit": "0ffdc9ce0e6b47c56671d5f5c0b16a4d65648703",
      "tree": "40df60e6c5fb58754c8e2ce57b7fddc07b696aa7",
      "parents": [
        "a584db5460a31198bf621cdacf5bc304a984efa4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 19 13:46:03 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 20 09:24:51 2016 -0700"
      },
      "message": "Do less work holding thread list lock\n\nAvoid doing stuff that requires access java heap like PrettyMethod.\nFixes lock violation.\n\nBug: 28268478\n\n(cherry picked from commit dee19e3caaeb5666055842d656dc0516b901f30c)\n\nChange-Id: Ie090879690df7a6db15a9c8b7e82f3809450d653\n"
    },
    {
      "commit": "49c882b2579d641abb4d373fd833d364429ef6e0",
      "tree": "4287d0d3bf5f2a6abd7cae8c1ee6cbc1159ec0ed",
      "parents": [
        "ec2ca59f111ffd957f152e1c9040236203b9859e"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Tue Apr 19 10:27:21 2016 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Tue Apr 19 11:36:49 2016 +0200"
      },
      "message": "Initialize a variable to suppress compiler error\n\nGCC (mips32 Buildbot) is complaining about the possibility of\nuninitialized usage.\n\nChange-Id: I217aa371189e06bed498288bf40e85406806c5ff\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": "74b3c8f3850c2e4a7b17e9821ad78b59e6f8e047",
      "tree": "8bed7825cb0cc97e5926f7020b0d7f4f1266a377",
      "parents": [
        "c4d445a40bf00ab497b5e4d43a6b43eaafb5fa50"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 15 19:11:45 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 18 15:29:41 2016 -0700"
      },
      "message": "Add more info to monitor contention logging\n\nPrint owner thread name and tid. Print blocking file name and line\nnumber.\n\nBug: 28223501\n\n(cherry picked from commit dc3c630ffdb3487bc46d878bf89c886f8ee69ef3)\n\nChange-Id: I8777837df1433462878f29842f0aede330dd46c0\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": "daed5d81e2fdb9d1e03ee6c34567347b92dcfb22",
      "tree": "f27fb31f3ad5d6dc0a45f025fedf98c1a011c069",
      "parents": [
        "8e213515077e11acdd664ec4a770a73e2f804863"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 10 10:49:35 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 10 11:42:11 2016 -0800"
      },
      "message": "Allocate interrupted exception before re-acquiring lock\n\nAllocating the monitor exception after acquiring the lock can cause\na deadlock in the following scenario:\n\nReference queue daemon interrupted from wait() on\nReferenceQueue.class. Tries to allocate exception and starts a GC\nthat blocks on WaitForGcToComplete.\n\nSome other thread is already doing a GC, and tries to enqueue the\ncleared refereneces. This deadlocks trying to lock Reference.class\nin ReferenceQueue.add.\n\nBug: 27508829\nChange-Id: Icbc18b6b8d1e906c3f7413810d6cefdda06eb921\n"
    },
    {
      "commit": "32ce2adefb8a3d0eda59a29f5e87c1eb43eef796",
      "tree": "50aaa40b31ede355359765259edc7989485cc7d5",
      "parents": [
        "c71dc3852edfa8e0cd2083d12845ff8607e189ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 14:58:03 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 18:37:19 2016 -0800"
      },
      "message": "Add more systracing everywhere\n\nAdded to:\nJIT\nDexFile functions\nOat file manager\n\nAdded helper ScopedTrace to prevent errors and reduce excess code.\n\nBug: 27502458\n\n(cherry picked from commit dabdc0fe183d4684f3cf4d70cb09d318cff81b42)\n\nChange-Id: Ifaeff8913d79eefc797380987d13cc00456266f8\n"
    },
    {
      "commit": "328c5dc0d178632125f5a05002051a6adc04766a",
      "tree": "843e9b7a71ff0875bf477cc052d921141a6828ef",
      "parents": [
        "5165b6ba1fda85d769c5092a65f07bcfffb0b3e7"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Nov 11 16:13:57 2015 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Nov 11 18:05:30 2015 -0800"
      },
      "message": "Get class loader to remember interrupts\n\nBug: 25606036\n\nMonitor::Wait should not reset the interrupt flag unless it actually\nthrows the exception.\n\nChange-Id: Id6a35c888160043831f30055f9bd39e7f0440439\n"
    },
    {
      "commit": "0f7c93322e50ff53eeba6b9ae13cf73eb0617587",
      "tree": "5a155089bb26311f690a3440825767bb125a0fc9",
      "parents": [
        "55a77ef5f99c2b056eb5f2820c1ff3b29c0ec270"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Nov 05 15:57:30 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Nov 05 18:27:17 2015 +0100"
      },
      "message": "Minor cleanup of Monitor::VisitLocks\n\nUses the Instruction class to not bother with the decoding logic.\n\nChange-Id: Id1501b57129084014f05e41513319639a630361d\n"
    },
    {
      "commit": "b8b3702f6818443cd5535419d97ad106b8623c89",
      "tree": "e1e2a4adafa08359e8d2c15fe2a83e45c1f030b4",
      "parents": [
        "7dae1918d25ea2ad6b5ba166f44472d82c53fa5e",
        "eaa4609574267771f2080cbaa3dbe26da709b6f6"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 15 15:55:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 15 15:55:56 2015 +0000"
      },
      "message": "Merge \"Fix monitor contention logging to support negative line numbers\""
    },
    {
      "commit": "2d096c94fbd3fd2470b8ac1a0da6f577b3f69f42",
      "tree": "b3b9fd96064c57a6e883ce2cb4996a08aab336ec",
      "parents": [
        "b2d2d6ae8ad3dcec77bbaf99589cd98a4797f4f3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 12 16:18:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 13 08:14:46 2015 -0700"
      },
      "message": "Fix moving GC bugs in MonitorEnter and MonitorExit\n\nFixes test 088 with gcstress mode.\n\nChange-Id: Iaeb91f62f22233e403e97e954bfdc8dc367e63c8\n"
    },
    {
      "commit": "eaa4609574267771f2080cbaa3dbe26da709b6f6",
      "tree": "f1d44562808c89b615929e130adf2b1a0b9cad1b",
      "parents": [
        "7f9558eea5ffae184556ac13b93edf48371b41f8"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 07 21:29:28 2015 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 07 22:04:43 2015 -0700"
      },
      "message": "Fix monitor contention logging to support negative line numbers\n\nBug: 24743369\nChange-Id: I8dd4f59e0bd27aa4daa1d79a412fc7821c070c67\n"
    },
    {
      "commit": "f1d666e1b48f8070ef1177fce156c08827f08eb8",
      "tree": "772cbbe6652b32ea2be31532156295db27579390",
      "parents": [
        "897ce64153e4758663e464fb5fb339f9a7b496c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 16:13:34 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 17:33:19 2015 -0700"
      },
      "message": "Add ScopedThreadSuspension\n\nFixes the TransitionFromRunnableToSuspended and\nTransitionFromSuspendedToRunnable pattern that was prone to errors.\n\nChange-Id: Ie6ae9c0357c83b4fc4899d05dfa0975553170267\n"
    },
    {
      "commit": "fdbd13c7af91a042eda753e436eeebf0e1937250",
      "tree": "c1fb370c9a4a30b9e589802c9c75dcc4919fc6e9",
      "parents": [
        "fe3879e6011f629d0dd6b04fab00b9496bd4ea08"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Sep 02 16:16:58 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 03 10:45:21 2015 -0700"
      },
      "message": "Some fixes for the CC collector.\n\n- Remove a DCHECK in DisableMarkingCheckpoint, which caused\n  occasional (false) failures.\n- Check the thread-local GetWeakRefAccessEnabled in boxed lambdas weak\n  access.\n- Add missing BroadcastForNewAllocationRecords and\n  BroadcastForNewWeakBoxedLambdas. The lack of the former caused\n  occasional deadlocks in the ddmc test.\n- Remove the \u0027ensure system weaks disallowed\u0027 calls, which weren\u0027t\n  useful and dead.\n\nBug: 12687968\nChange-Id: I33850c8d12e6e1a3aed1c2bb18eba263cbab76e8\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": "97509954404d031594b2ecbda607314d169d512e",
      "tree": "bb5371ba90d52e2f561b1dc6959584857cb84683",
      "parents": [
        "c6f3439b67962584cfb764133e192c3317f0e1fc"
      ],
      "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": "Tue Jul 14 16:45:27 2015 -0700"
      },
      "message": "Clean up GC callbacks to be virtual methods\n\nChange-Id: Ia08034a4e5931c4fcb329c3bd3c4b1f301135735\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": "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": "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": "15b9d5274399736ac09705f0507df24fac4f00c1",
      "tree": "04564a9265f5dccefdd32ea7bdd25adc0267f80b",
      "parents": [
        "8bc616d09f93523f4bc982cc60c377b00161522a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 15:05:13 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 10:26:47 2015 +0000"
      },
      "message": "API change in StackVisitor::GetVReg*.\n\n- Remove GetVReg() and SetVReg() that were expecting to always succeed.\n- Change Quick-only methods to take a FromQuickCode suffix.\n- Change deopt to use dead values when GetVReg does not succeed:\n  the optimizing compiler will not have a location for uninitialized\n  Dex registers and potentially dead registers.\n\nChange-Id: Ida05773a97aff8aa69e0caf42ea961f80f854b77\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": "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": "e15ea086439b41a805d164d2beb07b4ba96aaa97",
      "tree": "465ee3780acd8b7cb35c8a7f42a1f3c5df3d26ec",
      "parents": [
        "0b25c71ac93fb10c484dbacb9e23db505a8e2353"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Feb 09 17:11:42 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Mar 03 17:33:18 2015 -0800"
      },
      "message": "Reserve bits in the lock word for read barriers.\n\nThis prepares for the CC collector to use the standard object header\nmodel by storing the read barrier state in the lock word.\n\nBug: 19355854\nBug: 12687968\nChange-Id: Ia7585662dd2cebf0479a3e74f734afe5059fb70f\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": "4936159997132d7706d9700c646f35ef0283df4b",
      "tree": "5c46890e666b8d74baed83a6de6429e495c9e2a0",
      "parents": [
        "40d9c6a2339a1610764c0266061e3a6040e64726"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 22 16:36:10 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 22 16:38:03 2015 -0800"
      },
      "message": "Fix compaction unsafe DescribeWait\n\nFixes a crash that was seen once in automated tests, PrettyTypeOf\nwas accessing a stale object which had moved during IdentityHashCode\ndue to thin lock inflation causing suspension.\n\nChange-Id: I105aa9a09d4e8c9091b9a60e508ef71e613f1eed\n"
    },
    {
      "commit": "e6a8eec3a5db28de7d5db6d78e38033b80740e49",
      "tree": "a87d70ae8935be1a9ad90a718d977a9169936fbd",
      "parents": [
        "af56baf94d0573df89b97f441df7ff4dea42786e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 06 14:17:57 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 06 14:25:27 2015 -0800"
      },
      "message": "Fix frequent gcstress ThreadStress crash\n\nCalling IdentityHashCode before PrettyTypeOf was causing occasional\nstale root errors since IdentityHashCode can cause thread suspension.\n\nCleaned up VisitLocks.\n\nBug: 18766916\nChange-Id: I7679539877e48a8c9aadb8a34718404ebce98d25\n"
    },
    {
      "commit": "f0dc8b5519102b3d3e738aed846975ae4239421e",
      "tree": "cf6c6b20c12e79595fc680f5da6de5575a6ea80f",
      "parents": [
        "3e2f0fc584463e9da1142a5011ac3f7bcf083e0f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 17 10:13:30 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 17 11:08:15 2014 -0800"
      },
      "message": "Add systrace events to monitors and thread suspension\n\nAdded systrace events to SuspendThreadByPeer, SuspendThreadByThreadId\nand monitor contention.\n\nBug: 18379850\nBug: 17470248\nChange-Id: I29eaf97c67361a6c6b437940b8729600d78696df\n"
    },
    {
      "commit": "4ad5cd3e7d519484559ef778d96fb3f0be8919fa",
      "tree": "9870938a0552b4fe472d9994a55a3bf761fc69d5",
      "parents": [
        "741e287b60136db49ecf8da72f2b5ca48b0a39bd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 11 23:08:07 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 12 15:29:12 2014 -0800"
      },
      "message": "Modify the behavior of thread suspend shootouts.\n\nThe thread doing the suspension doesn\u0027t attempt to suspend the other thread\nunless it knows another thread isn\u0027t trying to suspend it. Use the suspend\ncount, and its lock, for this purpose.\nRe-enable ThreadStress test.\nBug: 15446488\n\nChange-Id: Idd34410c7b89d8abd6973e5699a15ca699472c78\n"
    },
    {
      "commit": "ae1a434fa1740791ba479da668e8372ca3dcb2a6",
      "tree": "812f2e41acaa81590418b70c142a644e1a3f87eb",
      "parents": [
        "b396ff047c3480c99b03a3e4342556fed4a24e2f",
        "78a3233313260665fe82ba56257855e043bca3d4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 05 02:55:39 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 05 02:55:39 2014 +0000"
      },
      "message": "am 78a32333: Merge \"ART: More warnings\"\n\n* commit \u002778a3233313260665fe82ba56257855e043bca3d4\u0027:\n  ART: More warnings\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": "0e7217d74914d4feba6bd1c197c883177ea6867c",
      "tree": "65173ae29336ef879ce0e35b1b0a8a3473bb630b",
      "parents": [
        "a660fc15d682912c9dc054f4b7cf53b8d90f337b",
        "3e3364e267117462894e0c3b7d9b413b25d28057"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 28 04:51:55 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 28 04:51:55 2014 +0000"
      },
      "message": "am 3e3364e2: Merge \"Tidy logging code not using UNIMPLEMENTED.\"\n\n* commit \u00273e3364e267117462894e0c3b7d9b413b25d28057\u0027:\n  Tidy logging code not using UNIMPLEMENTED.\n"
    },
    {
      "commit": "2c4257be8191c5eefde744e8965fcefc80a0a97d",
      "tree": "9db3e1f1c60f2df29638ba3ce9d5d5bb8b26ca2c",
      "parents": [
        "98c271d517bc4d25fc6879b4b8e35ea93885d9e2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:20:06 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:23:42 2014 -0700"
      },
      "message": "Tidy logging code not using UNIMPLEMENTED.\n\nChange-Id: I7a79c1671a6ff8b2040887133b3e0925ef9a3cfe\n"
    },
    {
      "commit": "fdb97de88d92cad7698e1eda3062d0cee3d2d18b",
      "tree": "c80e2ed682efe2273e1d8ec39d4a34fdb8358f1e",
      "parents": [
        "c9ed6e64f910a3fb3afa34df36c9f8f56691164c",
        "b9001abff3a45f1ae90536da7dd1ec28a6ae0174"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 03 21:17:36 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 03 21:17:36 2014 +0000"
      },
      "message": "am b9001abf: Add extra logging for lock contention\n\n* commit \u0027b9001abff3a45f1ae90536da7dd1ec28a6ae0174\u0027:\n  Add extra logging for lock contention\n"
    },
    {
      "commit": "b9001abff3a45f1ae90536da7dd1ec28a6ae0174",
      "tree": "9f9c63eb2de3fce4c54583454f37d04f22668f5e",
      "parents": [
        "5be30072c5a750617dc3f9380776d074f26d9f32"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 03 13:28:46 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 03 13:47:39 2014 -0700"
      },
      "message": "Add extra logging for lock contention\n\nWhen we get contention which is longer than kLongWaitMs (\u003d 100ms) we\nlog to logcat.\n\nExample output:\nW/art     ( 9960): Long monitor contention event with owner method\u003dvoid com.android.server.am.BroadcastQueue.processNextBroadcast(boolean) from BroadcastQueue.java:542 waiters\u003d1 for 243ms\n\nBug: 17787391\nChange-Id: Id1f92d9c41ec909d221871ecc2ff6181dcec2ed4\n"
    },
    {
      "commit": "c7376cabb889eb49cbd2dd9a77d10ee63a53d5b5",
      "tree": "09fef7a9ceb03b21ffa0bbe59485d6b1c9dfdc4d",
      "parents": [
        "38510082135a7fb438afb515fa3174596e644e9b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 08 10:15:19 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 09 09:48:17 2014 +0200"
      },
      "message": "Fix monitor visit for class initializer\n\nWe do not hold class object\u0027s lock when invoking class initializer. Therefore\nit is wrong to visit it when looking for monitors owned by a thread.\n\nBug: 17377924\n\n(cherry picked from commit 6d06f1b34322d91226c9dcd61e53c2b6731f8bb6)\n\nChange-Id: I9a18c421297608dc3109624111f9fea021a16d24\n"
    },
    {
      "commit": "5c9376a0fc6c0b25971d0b92e1de6de4f09ec90c",
      "tree": "c64699ea44ca4a61c828d8a77b743dfd33422f6b",
      "parents": [
        "37394eda2161b6e5b0aa361ad82732fbc664946d",
        "652984e4b32d06344fae8cad52524d4de7ac5c79"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 09 06:16:41 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 09 06:16:41 2014 +0000"
      },
      "message": "am 652984e4: am 77c318d5: Merge \"Fix monitor visit for class initializer\" into lmp-dev\n\n* commit \u0027652984e4b32d06344fae8cad52524d4de7ac5c79\u0027:\n  Fix monitor visit for class initializer\n"
    },
    {
      "commit": "6d06f1b34322d91226c9dcd61e53c2b6731f8bb6",
      "tree": "42e741ac4fe837938a8a20a1bd383aa92b6228b6",
      "parents": [
        "20632daac36995947d2d1943f89f07ac277e61f0"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 08 10:15:19 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 08 10:18:18 2014 +0200"
      },
      "message": "Fix monitor visit for class initializer\n\nWe do not hold class object\u0027s lock when invoking class initializer. Therefore\nit is wrong to visit it when looking for monitors owned by a thread.\n\nBug: 17377924\n\nChange-Id: I7fddcdb9a554301e040c571971eec9be6cba5eda\n"
    },
    {
      "commit": "88ffa4933bab329e8225537be4f7a2333209e0b5",
      "tree": "a831fbb6d95b6d3532314a28661acf9038e405f5",
      "parents": [
        "5b984216c879db9cfebfe8a6b4a44efa3d7090e7",
        "1d4b6eff25aa29cbbf4d216d65349e1ad38f962e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 22 22:06:47 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 22 22:06:47 2014 +0000"
      },
      "message": "am 1d4b6eff: am 1e4fbd8b: Merge \"Using the correct time for wait_start_ms when lock contention logging is enabled\" into lmp-dev\n\n* commit \u00271d4b6eff25aa29cbbf4d216d65349e1ad38f962e\u0027:\n  Using the correct time for wait_start_ms when lock contention logging is enabled\n"
    },
    {
      "commit": "65282b253b55bbdb7f0e246d8c78ea34f84d0ff5",
      "tree": "713b938600814a62620abe5e2521f9dc267fabad",
      "parents": [
        "1dbc3a918612e9ce01f8b05b5ef5f4cbb34e74d0"
      ],
      "author": {
        "name": "Xin Guan",
        "email": "a18772@motorola.com",
        "time": "Fri Aug 22 11:55:37 2014 -0500"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 22 14:58:41 2014 -0700"
      },
      "message": "Using the correct time for wait_start_ms when lock contention logging is enabled\n\nBug: 17208457\nChange-Id: I35555e0acf3b37bb3776a62c64d59ae93403b237\n(cherry picked from commit b894a19dfd668b6779de939cf5265b7e409d8809)\n"
    },
    {
      "commit": "b894a19dfd668b6779de939cf5265b7e409d8809",
      "tree": "dcb74361c213660a7bfb82a754e967833a474d79",
      "parents": [
        "574758ef03b0930ebd1cb8d9afe741cb374419a1"
      ],
      "author": {
        "name": "Xin Guan",
        "email": "a18772@motorola.com",
        "time": "Fri Aug 22 11:55:37 2014 -0500"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 22 13:46:11 2014 -0700"
      },
      "message": "Using the correct time for wait_start_ms when lock contention logging is enabled\n\nBug: 17208457\nChange-Id: I35555e0acf3b37bb3776a62c64d59ae93403b237\n"
    },
    {
      "commit": "3b18f257344f911d7223bd36b90d1a4ad5331933",
      "tree": "93970f631b75ce62208625bfa06b1d60e9f59884",
      "parents": [
        "517e1e72e50bc30f438ef3826a37213e4ee65dbd",
        "d75383af2f0843ecd2f493fd64b4eb38630c6071"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 18 05:19:46 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 18 05:19:46 2014 +0000"
      },
      "message": "am d75383af: am 5e8a63ae: Merge \"ART: Do not recursively abort when visiting locks in a bad state\" into lmp-dev\n\n* commit \u0027d75383af2f0843ecd2f493fd64b4eb38630c6071\u0027:\n  ART: Do not recursively abort when visiting locks in a bad state\n"
    },
    {
      "commit": "90b180ee1edd17b8dca34ea9e58624818d2ee15a",
      "tree": "22a859bd5f2fe8b08d7a7bc2d5309d8228d59b55",
      "parents": [
        "9d352c06d8b6e9ea6343cc4f361a3309c2ce7ebe",
        "956a5228276693a7317ae6b41bfe7a7f0f3cbe6b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 18 16:41:58 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Aug 16 04:08:14 2014 +0000"
      },
      "message": "Merge \"ART: Do not recursively abort when visiting locks in a bad state\""
    },
    {
      "commit": "956a5228276693a7317ae6b41bfe7a7f0f3cbe6b",
      "tree": "4fb359d422d2d7af04f1b9dc9b8b5d6f268b138b",
      "parents": [
        "078f4ea927b3259d698ca3dd542a096943e2cccd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Aug 16 13:41:10 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 18 09:40:40 2014 -0700"
      },
      "message": "ART: Do not recursively abort when visiting locks in a bad state\n\nThis avoids a nested abort in VisitLocks.\n\nBug: 17080621, 16382675\n\n(cherry picked from commit 760172c3ccd6e75f6f1a89d8006934e8ffb1303e)\n\nChange-Id: Id604976ac9dcac0e319fb25cab4d2cbc98d7ee24\n"
    },
    {
      "commit": "760172c3ccd6e75f6f1a89d8006934e8ffb1303e",
      "tree": "aa7b9c6c1690d09a36adb1dc7822fde80d057dd0",
      "parents": [
        "ebee8de725d5fa83483642786b19ea453d865762"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Aug 16 13:41:10 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Aug 17 00:53:21 2014 -0700"
      },
      "message": "ART: Do not recursively abort when visiting locks in a bad state\n\nThis avoids a nested abort in VisitLocks.\n\nBug: 17080621, 16382675\nChange-Id: Id604976ac9dcac0e319fb25cab4d2cbc98d7ee24\n"
    },
    {
      "commit": "0ef3bd2a2334c0825130501bbabf6cbc8e870582",
      "tree": "f287b2083ab3ef63541def6f7de42e0ea4740c92",
      "parents": [
        "ee736b29675455ab0be615581145aa239ce7a6b3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 15 13:39:34 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 15 13:39:34 2014 -0700"
      },
      "message": "Tidy up monitor comments.\n\nChange-Id: Ib9d993f964ba6e2bec1979b486c26d3920a4a40c\n"
    },
    {
      "commit": "6f22fc166ed6c11cad229bff442c064e704de101",
      "tree": "750d9048864a264f35ca7929d8ee1c1c878fa0a2",
      "parents": [
        "63c051a540e6dfc806f656b88ac3a63e99395429"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 15 11:09:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 15 11:28:25 2014 -0700"
      },
      "message": "Make Monitor::Wait more robust to spurious Inflate failures.\n\nBug: 17062710\nChange-Id: Ife5f6b335caacc70cab543cd568676d277d3beb6\n"
    },
    {
      "commit": "43c69cc4cea794cd4d89d9d0680b1e25c6d02acc",
      "tree": "fdfabd74408bc13e4b73674e881ab0ebbfb39d0f",
      "parents": [
        "37f048b19da5ac245a6b2a8473b326d2167cc692"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 15 11:09:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 15 11:35:38 2014 -0700"
      },
      "message": "Make Monitor::Wait more robust to spurious Inflate failures.\n\nBug: 17062710\nChange-Id: Ife5f6b335caacc70cab543cd568676d277d3beb6\n(cherry picked from commit 6f22fc166ed6c11cad229bff442c064e704de101)\n"
    },
    {
      "commit": "94f7b49578b6aaa80de8ffed230648d601393905",
      "tree": "cfc69e453faefee38178ceb85378e1f0f1e17812",
      "parents": [
        "8df73882c60451e7f789bf9b1f3db2d7dc228640"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jul 22 18:08:23 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jul 29 13:30:46 2014 -0700"
      },
      "message": "Add GcRoot to clean up and enforce read barriers.\n\nIntroduce a value-type wrapper around Object* for GC roots so that 1)\nwe won\u0027t have to directly add the read barrier code in many places and\n2) we can avoid accidentally bypassing/missing read barriers on GC\nroots (the GcRoot interface ensures that the read barrier is executed\non a read).\n\nThe jdwp test passed.\n\nBug: 12687968\nChange-Id: Ib167c7c325b3c7e3900133578815f04d219972a1\n"
    },
    {
      "commit": "6ec8ebd178ed39aa09e4c7fad194900114c4121a",
      "tree": "d618cd60098c59e6955ee19cb877b41aa7247753",
      "parents": [
        "9c81c0cb0dc8c8d8ae5dca3d2d82b0eec7af589f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 25 13:36:56 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 25 13:36:56 2014 -0700"
      },
      "message": "ART: Clean up API after change 102631\n\nThis adds an abort_on_error parameter to GetCurrentMethod, which is\nby default true. This restores all previous behavior, except for\nmonitor installation, where it follows 101639.\n\nBug: 16556938\nChange-Id: I9a12b9a21ccb9f558c86236bb58d15ff2fafaec0\n"
    },
    {
      "commit": "b363f666883860d40823d5528df3c98c897f74f4",
      "tree": "d4b629045d7e1d3e9236a0d8625b4ccbd0dbfc0f",
      "parents": [
        "ddc211980aa2f6149905d8d26f67201ac8e400b3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 16 13:28:58 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 22 17:25:32 2014 -0700"
      },
      "message": "Recycle mem-maps for collector transitions.\n\nWe now create spaces when we need them for collector transitions or\nhomogeneous compaction by recycling mem maps. Change the bump\npointer space size to be as large as the heap capacity instead of\n1/2 heap capacity like it used to be. For GSS, bump pointer spaces\nare set to 32MB currently.\n\nChanged GSS to have main space \u003d\u003d non moving space since we don\u0027t\nneed to copy from the main space.\n\nFixes GC stress tests 074, 096.\nFixed test 080 oom throw with -Xmx2m for GC stress test, this was\nbroken since it was allocating a 4 MB array before starting the\nOOM process.\n\nBug: 14059466\nBug: 16406852\nChange-Id: I62877cfa24ec944a6f34ffac30334f454a8002fd\n"
    }
  ],
  "next": "f3d874c60ee3ada19ce26a5c4e532312b6f3a9e9"
}
