)]}'
{
  "log": [
    {
      "commit": "7ee607e39cfbfc59616dbf4c063cd1169dc4350f",
      "tree": "7529abbedcb31c8a8093a58c2c25fb0831691de1",
      "parents": [
        "dd20d0006ff51a3aaaee8e8cb33cbbbd859b41f6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 23 12:22:04 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 23 12:37:53 2019 -0700"
      },
      "message": "ART: Fix Runtime::GetStat\n\nReturn uint64_t, as data is actually stored as such. Remove ns\nto us conversion. Fix sensitive callers.\n\nTest: m test-art-host\nChange-Id: I506c90dbb179ffe010bb9cd6cc795edc280a9bc8\n"
    },
    {
      "commit": "b7c640d364d32b79cb52d04750b063667a9a0c86",
      "tree": "9caafc96879f83f8e5dd3cd45b9005be6e2b7deb",
      "parents": [
        "3ffb5b1576f8af0c361284ebd8d2d54c70ede3ff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 20 15:52:13 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 10 18:33:25 2019 +0000"
      },
      "message": "JVMTI Force early return\n\nAdd support for can_force_early_return jvmti capability. This allows\none to force java frames to exit early. Exited frames have all of\ntheir normal locks released.\n\nWe implement this by modifying the existing method exit events to\nallow one to modify the exit value during the callback. This is used\nto implement ForceEarlyReturn by adding internal-only events that will\nchange the return value of methods once they return (using\nkForcePopFrame) avoiding the need to modify the actual interpreter\nvery deeply. This also makes it simple to continue to use the standard\ndeoptimization functions to force the actual return.\n\nIn order to simplify book-keeping the internal event is refcounted,\nnot associated with any specific jvmtiEnv, and only settable on\nspecific threads. The internal event is added by the ForceEarlyReturn\nfunction and then removed by the MethodExit event when we update the\nreturn value.\n\nBug: 130028055\nTest: ./test.py --host\nChange-Id: Ifa44605b4e8032605f503a654ddf4bd2fc6b60bf\n"
    },
    {
      "commit": "7c5acbb122485b6215dc34defc1f19e07390bb95",
      "tree": "af0889bb17ef622b8c51d9f110991ca025caef16",
      "parents": [
        "51c655847f2f7d2a9127574d3aeda12755014608"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 13:54:52 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 25 20:41:37 2019 +0000"
      },
      "message": "ART: Fix some types\n\nUse better types and fix some typing issues exposed by clang-tidy\u0027s\nreadability-implicit-bool-conversion.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I787d291a4843a3192a84853d105d57377b774b23\n"
    },
    {
      "commit": "ecd21be250c434d854833aa368610c879fea9245",
      "tree": "68eecccf43a4ac9292cbc3e338bbc97419787dab",
      "parents": [
        "fc8e7598fe013bebff210b48347daf80316ac0a4"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Feb 26 17:11:24 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 09 21:04:49 2019 +0000"
      },
      "message": "Fix tracing shutdown\n\nMethod tracing was being disabled before the listener was removed.\nIn some cases, this would cause the stack restoration to trigger\ntrace entries - resulting in out-of-order method exits.\n\nBy removing the listeners before disabling tracing, no one is around\nto receive the erroneous stack restoration \"exits\".\n\nBug: 129716777\nTest: Builds, ran on x86 emulator:\n  adb shell am start -S -W --start-profiler  \\\n       /data/local/tmp/test.trace --sampling 1   \\\n       -a \\android.intent.action.MAIN            \\\n       -n com.android.calendar/com.android.calendar.AllInOneActivity \u0026\u0026 \\\n  sleep 5 \u0026\u0026 \\\n  adb shell am profile stop com.android.calendar \u0026\u0026 \\\n  adb pull /data/local/tmp/test.trace\nand inspected resulting tracefile; parsed fine in Android Studio 3.0.1\n\nChange-Id: I90f0751f4b4253c7c9711d05d53f31b3e545fc3b\n"
    },
    {
      "commit": "c524e9e7e767be0801cf110310039635698c1532",
      "tree": "cd11699dce8c175a0940a583f5ea02ce89f73a85",
      "parents": [
        "2e1ec835d08ca0ab81b1c24436f659f952ace260"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 10:54:50 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 17:06:55 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Class.\n\nAnd move function definitions that rely on obj_ptr-inl.h\nfrom class.h to class-inl.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5ccc765d0a02b1d37cb39ed68c17b8456faf92ea\n"
    },
    {
      "commit": "226805d9b81ba442251d0e2c4baedc36fcda6592",
      "tree": "3a256b1d36894d8d43ec9650f2a3f55c90c4730c",
      "parents": [
        "96453b7d6aa445c6609aa465df5d66ae0beb7956"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 14 10:59:02 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 19 09:22:01 2018 +0000"
      },
      "message": "Deoptimize zygote compiled methods in DeoptimizeBootImage.\n\nThose methods don\u0027t get compiled with the \"debuggable\" flag,\nso we need to deoptimize them.\n\nAlso fix a bug revealed by the new test where a concurrent\nJIT collection happens when trying to disable it.\n\nAlso make DeoptimizeBootImage truly mutator lock exclusive.\n\nTest: 689-zygote-jit-deopt\nChange-Id: I00607dbe100350c5328293c35c87946fa97924b8\n"
    },
    {
      "commit": "4eebb0edb078b4e474e6bb9527c4778571025516",
      "tree": "c0f395c607f46e17c8a5f21162cdce5668a17957",
      "parents": [
        "777cb01e3cdebbb5a578d67b631c34c9e4a517da"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 18 18:09:02 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 18 18:09:02 2018 +0000"
      },
      "message": "Remove Trace.Pause/Resume.\n\nResume was never wired up anywhere, and the zygote-tracing functionality is untested.\n\nTest: build\nChange-Id: I5ae0a8132ebffcbdcfde77caee5bcab415d6f063\n"
    },
    {
      "commit": "c7d878d4be3f0971d4b86266308c7540a26c2856",
      "tree": "041a6d897df81ae64f25c211f16e8640959a35f5",
      "parents": [
        "d295a75d952742604eaae0530daea19dd6fd782c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 18:42:06 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 17:09:07 2018 -0800"
      },
      "message": "Revert^4 \"ART: Add StackVisitor accepting a lambda\"\n\nThis reverts commit ec43a01e0ac948c59d5b1f9c3812f2901b48942a.\n\nReason for revert: Added missing code.\n\nBug: 115837065\nTest: m test-art-host\nChange-Id: Id30ccdf9aa9a6e56a914254793e399f2712c882d\n"
    },
    {
      "commit": "ec43a01e0ac948c59d5b1f9c3812f2901b48942a",
      "tree": "57e1a23dcc0beba8e98841b8cf063f6153b08c9b",
      "parents": [
        "3d477f3a3eea757a49ca621cc579f711f22fccdd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Nov 17 13:10:40 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Nov 17 13:10:40 2018 +0000"
      },
      "message": "Revert \"Revert^2 \"ART: Add StackVisitor accepting a lambda\"\"\n\nThis reverts commit 3d477f3a3eea757a49ca621cc579f711f22fccdd.\n\nBug: 115837065\n\nReason for revert: Breaks jdwp tests.\n\nChange-Id: I09249331798970751a20c6b41675c3efef72adfb\n"
    },
    {
      "commit": "3d477f3a3eea757a49ca621cc579f711f22fccdd",
      "tree": "b4b402d0181610c62062c8c597ef30ee2840b6b1",
      "parents": [
        "54c7da9c50ee85ade636605cd6ea18b4c2bc69fa"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 16:40:45 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 10:13:38 2018 -0800"
      },
      "message": "Revert^2 \"ART: Add StackVisitor accepting a lambda\"\n\nThis reverts commit 8248490f24e8582ce2ead8cd878d8a2c38310a48.\n\nReason for revert: Fixed instrumentation.cc\n\nBug: 115837065\nTest: m test-art-host\nChange-Id: I484833f4712c835fcaf3452dca4cae5b031d5a7d\n"
    },
    {
      "commit": "8248490f24e8582ce2ead8cd878d8a2c38310a48",
      "tree": "f542af6560561526fc413e361e3323a615b5429c",
      "parents": [
        "36f8d22c672498753b9edc66ba11acc9816b2a17"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 00:47:49 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 00:47:49 2018 +0000"
      },
      "message": "Revert \"ART: Add StackVisitor accepting a lambda\"\n\nThis reverts commit 36f8d22c672498753b9edc66ba11acc9816b2a17.\n\nReason for revert: Seems to be breaking test 687\n\nBug: 115837065\nChange-Id: I83bb1a9d76cc701c3d582778e5047ebd5dab5d29\nTest: TreeHugger\n"
    },
    {
      "commit": "36f8d22c672498753b9edc66ba11acc9816b2a17",
      "tree": "7a7195bf16db14d7f56f94a4d6421f6837b2f686",
      "parents": [
        "a53da8f8170ddaff3e4160641938ba1b7806202c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 08 08:13:42 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 02 16:01:30 2018 -0700"
      },
      "message": "ART: Add StackVisitor accepting a lambda\n\nTo simplify implementation of visitors. Rewrite some\nvisitors.\n\nBug: 115837065\nTest: mmma art\nTest: m test-art-host\nChange-Id: I04172d7626b702c1d69c63eba65526378935a25d\n"
    },
    {
      "commit": "98ea9d9d82ab078ca10fa7f8e02eddda94cf1d98",
      "tree": "a848b7e41ff227a2d3d4d6795ec11089f39cb6ca",
      "parents": [
        "02338775e33b553be51d44ff60bb1ef8e527bd94"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 14:06:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 15:19:55 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles runtime.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibc0d5086809d647f0ce4df5452eb84442d27ecf0\n"
    },
    {
      "commit": "99f97330a3c55e54ebba6fb0a668f445f34dc2d6",
      "tree": "e5f8a9f3baf7bfc9e517289c8463b8089022d27b",
      "parents": [
        "ededf08e2f4a5df3401a5d4badb98ff3c8cb8fb9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 03 15:44:24 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 04 11:13:49 2018 +0100"
      },
      "message": "Remove InvokeVirtualOrInterface event from instrumentation.\n\nIt is no longer used.\n\nTest: test-art-host-gtest\nChange-Id: I4d5f574d972ad2943a27adcca1d326d5d82a1923\n"
    },
    {
      "commit": "48ba197beaffe64646e21cc06923d8b019c7aa6d",
      "tree": "fe21827494e10a8d83aea93fb23fa7e67b11de9e",
      "parents": [
        "26f048f48cdb1e884aab2b6fddf26d58346d29ad"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Mon Sep 24 13:35:54 2018 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Mon Sep 24 16:31:41 2018 -0700"
      },
      "message": "Fix some performance-unnecessary-value-param tidy and performance-for-range warnings.\n\nart/profman/profile_assistant_test.cc:119:54: error: the const qualified parameter \u0027hot_methods\u0027 is copied for each invocation; consider making it a reference [performance-unnecessary-value-param,-warnings-as-errors]\n                         const std::vector\u003cuint32_t\u003e hot_methods,\n                                                     ^\n                                                    \u0026\nart/profman/profile_assistant_test.cc:120:54: error: the const qualified parameter \u0027startup_methods\u0027 is copied for each invocation; consider making it a reference [performance-unnecessary-value-param,-warnings-as-errors]\n                         const std::vector\u003cuint32_t\u003e startup_methods,\n                                                     ^\n                                                    \u0026\nart/profman/profile_assistant_test.cc:121:54: error: the const qualified parameter \u0027post_startup_methods\u0027 is copied for each invocation; consider making it a reference [performance-unnecessary-value-param,-warnings-as-errors]\n                         const std::vector\u003cuint32_t\u003e post_startup_methods,\n                                                     ^\n                                                    \u0026\nart/runtime/subtype_check_info_test.cc:134:56: error: the parameter \u0027sc\u0027 is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param,-warnings-as-errors]\n  static SubtypeCheckInfo CopyCleared(SubtypeCheckInfo sc) {\n                                      ~~~~~~~~~~~~~~~~ ^\n                                      const \u0026\nart/runtime/class_linker.cc:6451:62: error: the parameter \u0027to_process\u0027 is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param,-warnings-as-errors]\n                          std::vector\u003cObjPtr\u003cmirror::Class\u003e\u003e to_process)\n                          ~~~                                ^\n                          const                             \u0026\nart/runtime/trace.cc:1127:13: error: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy,-warnings-as-errors]\n  for (auto it : exited_threads_) {\n       ~~~~ ^\n       const \u0026\nart/runtime/oat_file_manager.cc:154:41: error: the parameter \u0027spaces\u0027 is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param,-warnings-as-errors]\n    std::vector\u003cgc::space::ImageSpace*\u003e spaces) {\n    ~~~                                 ^\n    const                              \u0026\nart/test/004-JniTest/jni_test.cc:707:72: error: the parameter \u0027methods\u0027 is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param,-warnings-as-errors]\n  void TestCalls(const char* declaring_class, std::vector\u003cconst char*\u003e methods) {\n                                              ~~~                      ^\n                                              const                   \u0026\nart/compiler/optimizing/optimizing_compiler.cc:1409:89: error: the parameter \u0027info\u0027 is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param,-warnings-as-errors]\nvoid OptimizingCompiler::GenerateJitDebugInfo(ArtMethod* method, debug::MethodDebugInfo info) {\n                                                                 ~~~~~                  ^\n                                                                 const                 \u0026\n\nBug: http://b/32619234\nBug: http://b/110779387\nTest: Build using WITH_TIDY\u003d1\nChange-Id: I911d838b8c26ddab3d6a64024f3220000f078cba\n"
    },
    {
      "commit": "fa6a1b0a1d9d186a0ad9bb413a4e49f1ffd187d8",
      "tree": "6d3bef945030868d7e78162dc3f4f35a07ce410a",
      "parents": [
        "a0878aa9f4f4102e56a6381b28a8d7c38dec80b9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 07 08:11:55 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 07 09:13:50 2018 -0700"
      },
      "message": "ART: Continue adding override annotations\n\nUse Clang-tidy\u0027s modernize-use-override to add more annotations. Ignore\ninferred annotations on destructors.\n\nBug: 32619234\nTest: mmma art\nChange-Id: Ic432c928e398d44df9171e42db04ee19946e6887\n"
    },
    {
      "commit": "025059b5bc5974717e94d95cf2d82ff1ad51e75d",
      "tree": "bbb46a417b33ab81b6a1cc0180cd7d670a20013c",
      "parents": [
        "651184bdcfb2cbff2010dbb7e4d5e0c0c9373ae4",
        "7f00f5a1fa25f9b6414905983e7ac2739f662615"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 31 23:34:50 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 31 23:34:50 2018 +0000"
      },
      "message": "Merge changes from topic \"fdsan_art_fdfile\"\n\n* changes:\n  Fix various benign double fdsan warnings in tests.\n  Use fdsan in FdFile.\n  Clean up FdFile constructors.\n  Remove FdFile::DisableAutoClose.\n  Add DupCloexec to atomically dup and set FD_CLOEXEC.\n"
    },
    {
      "commit": "afeec9fbaaed320536e924d5842d8058d0d75511",
      "tree": "533762df1c9cce2df1283f262a4c939f4459afe0",
      "parents": [
        "35696a098a7432414322773d9b94e6a112b1f3b6"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 30 14:05:56 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 30 18:25:30 2018 -0700"
      },
      "message": "Remove FdFile::DisableAutoClose.\n\nRemove a footgun that also makes it impossible to use fdsan, since we\ndon\u0027t know whether the FdFile actually owns the fd or not.\n\nBug: http://b/113558485\nTest: mma\nChange-Id: I6a7767c33925db631852579f75d2def9ff6a44d5\n"
    },
    {
      "commit": "f0b33e50ce99b46e746d5f5a0d569b9a6e583bfd",
      "tree": "a226cdf545bb013ab082b27dd226864adea44dcf",
      "parents": [
        "1c4f93341d59efdf9392274aaadee14ceed0f643"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Sat Aug 25 13:31:52 2018 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Sat Aug 25 13:31:52 2018 -0700"
      },
      "message": "Fix an incorrect \u0026\u0026 with kTraceCountAllocs flag.\n\nThe latest Clang warns on this particular use of a constant flag with\nlogical operators. It looks like this:\n\nerror: use of logical \u0027\u0026\u0026\u0027 with constant operand [-Werror,-Wconstant-logical-operand]\n\nTest: Build art\nChange-Id: If1635e8f02ac6ef438dbef201053973e5012b04c\n"
    },
    {
      "commit": "2a90bc93225f38624333d1d7fa8785f90c687fe5",
      "tree": "8183353ae38facf846e32d6dbdcc01bd9885fa80",
      "parents": [
        "839f53a179df5225dac6964732486fc8dc5c79b0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 21:57:42 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 16:08:22 2018 -0700"
      },
      "message": "Revert^2 \"Move Trace to use trampolines\"\n\nThis reverts commit 27d85eaf54d1cf5f9279ba4d333488b0fbbf441f.\n\nAn ancestor of the original CL got a typo put in it during a minor\nrefactor. This caused a check to be reversed and was not noticed since\nit was a rebase.\n\nReason for revert:  Fixed issue causing --trace failures on some tests\n\nChange-Id: I066519950294edae7b2c22a5850b4a9a96ba46c9\nTest: ./test.py --host --trace --ntrace\n"
    },
    {
      "commit": "27d85eaf54d1cf5f9279ba4d333488b0fbbf441f",
      "tree": "64f9c8896038ada2f7a17bd7cc62c488027dd548",
      "parents": [
        "19af3b9b7fda03417a724fb7e465a3457d528eab"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 21:55:37 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 21:55:37 2018 +0000"
      },
      "message": "Revert \"Move Trace to use trampolines\"\n\nThis reverts commit 19af3b9b7fda03417a724fb7e465a3457d528eab.\n\nCaused the following tests to fail.\n\ntest-art-host-run-test-debug-prebuild-interpreter-no-relocate-trace-cms-checkjni-picimage-pictest-ndebuggable-no-jvmti-cdex-fast-916-obsolete-jit32\ntest-art-host-run-test-debug-prebuild-interpreter-no-relocate-trace-cms-checkjni-picimage-pictest-ndebuggable-no-jvmti-cdex-fast-916-obsolete-jit64\n\nIt seems we did not setup the tracing fully correctly.\n\nReason for revert: Caused failure of 2 tests on buildbots\nTest: None\n\nChange-Id: Ied420b95c24ce530a19cdd39dc2403e5cc99fde5\n"
    },
    {
      "commit": "19af3b9b7fda03417a724fb7e465a3457d528eab",
      "tree": "efa7d558db285cca5143ba30b6bba7495b616269",
      "parents": [
        "3e36a9c24f591097b4403fe77b1d426c03aeb56a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 13 14:51:20 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 08:44:52 2018 -0700"
      },
      "message": "Move Trace to use trampolines\n\nChange method tracing to use instrumentation trampolines instead of\ninterpreter. This is generally faster but can slow down recursion as\nthe stack gets longer. Due to this we need to disable several tests\nwhich will no longer finish in a reasonable time.\n\nTest: ./test.py --host --trace --ntrace\n\nChange-Id: Id4fb7c997a854859f2998f72018980973d8493f8\n"
    },
    {
      "commit": "283ad2dfa5610e098db4791c9aded3a05fb62c40",
      "tree": "6ebd362ad8e21e8a7c552fc9dae197f6d6f6d9ba",
      "parents": [
        "b2be0823115cfdd7907207e3dac9fcb669941811"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 26 13:37:41 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 12 09:13:52 2018 +0100"
      },
      "message": "ART: Memory order updates to trace.{h,cc}\n\nAdds comments and DCHECKS to clarify memory semantics.\n\nRelaxes some atomic operations on Trace::cur_offset_ and makes its\ninitialization sequentially-consistent.\n\nAdds GUARDED_BY annotations to fields only accessed with the\nstreaming_lock_.\n\nBug: 31023171\nTest: art/test.py --host --stream -j32\nTest: art/test.py --host --trace -j32\nTest: art/test.py --target --stream -j4\nTest: art/test.py --target --trace -j4\nChange-Id: I31ad9a3861c7f258ed225207b3c2b39669ad8d36\n"
    },
    {
      "commit": "88591fe82f499de10591f5b77efac71f8954eae2",
      "tree": "bfa126ad55ee091e3b615bd3bb60d5f8cfb6e37a",
      "parents": [
        "e8a4e378c5a928d5de07bee6db99150a57dabcd8"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 06 13:35:43 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 23 15:01:15 2018 +0000"
      },
      "message": "ART: Simplify atomic.h\n\nPrefer std::atomic operations over wrappers in atomic.h. Exceptions\nare cases that relate to the Java data memory operations and CAS\noperations.\n\nBug: 71621075\nTest: art/test.py --host -j32\nTest: art/test.py --target --64 -j4\nChange-Id: I9a157e9dede852c1b2aa67d22e3e604a68a9ef1c\n"
    },
    {
      "commit": "6ff3b371e53ffdb6d0aa9f85ae9468696f5fa2b0",
      "tree": "e4ceaf9ac71100bcc68942ec3fd0e718e8dc89f0",
      "parents": [
        "182cbe4dcba21f797f3a9195338baf3cba775f60"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 15 08:53:16 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 15 20:58:40 2018 -0700"
      },
      "message": "ART: Clean up Trace\n\nRemove unneeded field. Refactor Start to have a cleaner interface.\nAdd exception for invalid file descriptor.\n\nTest: mmma art\nTest: art/test/testrunner/testrunner.py -b --host --trace\nChange-Id: I7d0cd9629796c690a993dbbba5ae96d940c44dba\n"
    },
    {
      "commit": "c431b9dc4b23cc950eb313695258df5d89f53b22",
      "tree": "422273559c3ae52caff0c6b1cf1a62a8312f0e26",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 02 12:01:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 05 13:58:20 2018 -0800"
      },
      "message": "Move most of runtime/base to libartbase/base\n\nEnforce the layering that code in runtime/base should not depend on\nruntime by separating it into libartbase.  Some of the code in\nruntime/base depends on the Runtime class, so it cannot be moved yet.\nAlso, some of the tests depend on CommonRuntimeTest, which itself needs\nto be factored (in a subsequent CL).\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host\n\nChange-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2\n"
    },
    {
      "commit": "e45b3b18c97ba00ec2c0b79c9cda9f05799189f3",
      "tree": "5804de06630ecf7d5fe33f41fd17333410b98010",
      "parents": [
        "0bdc1fc702b5c9e45df93f92a052f0c0b1c26733"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Feb 27 17:18:55 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Feb 27 17:23:42 2018 +0000"
      },
      "message": "Fix a dead lock between garbage colletion and sample-based tracing.\n\nWe have been observing some rare deadlock in run-test 099-vmdebug\nbetween\n- a thread doing garbage collection, which had disabled weak\n  references access and was trying to (re-)acquire the mutator\n  lock;\n- a sampling profiling thread used in sample-based tracing, which\n  had acquired the mutator lock exclusively and was blocking on a\n  condition variable regarding weak references access.\n\nThis change prevents garbage collection from occurring when\nsampling the thread stacks in order to avoid this deadlock.\n\nTest: for i in $(seq 1 10); do art/test/testrunner/testrunner.py --ndebuggable --debuggable --host --64 --verbose --debug --ndebug --gcstress -t 099-vmdebug; done\nBug: 73624630\nChange-Id: I73272c2b1d7aa2554a88bb128d3646193bd1db04\n"
    },
    {
      "commit": "b2ec9f5c128673c43f776cbe12c8eeb0a6884ebb",
      "tree": "724022162a4f3de021cebab32ee5ac67ec860f32",
      "parents": [
        "f13343eb8b2738e2812fd7bd9d5592f529e93c21"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 21 13:20:31 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 21 13:51:15 2018 -0800"
      },
      "message": "Remove duplication, split tests\n\nThe code move to libdexfile/dex/descriptors_names.cc apparently did not\nremove the original code from runtime/utils.cc.  Fix that duplication\nand all the header mentions needed.  Also, split the test files to go\nalong with the new locations for the code to be tested.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n      flash \u0026 boot marlin\n\nChange-Id: Ie734672c4bca2c647d8016291f910b5608674545\n"
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "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": "772099a8976cb8341475c42bfc595373778217dd",
      "tree": "1c7131a4525da61ae89aca20f0d7c7ce7ebe0000",
      "parents": [
        "cb90e3a29041ea55c4b5eb3d1477aa360381a1f1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 21 14:05:04 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 21 17:06:11 2017 -0800"
      },
      "message": "Add remaining DDMS messages into DdmPublishChunk\n\nThis ensures that one can get notified of every DDMS chunk that would\nbe published.\n\nAdd a test to ensure that appropriate ddms events are sent.\n\nWe also refactor the underlying code so that the only way these events\nare sent is through the DdmPublishChunk callback.\n\nTest: ./test.py --host -j50\nBug: 62821960\nChange-Id: I0c4a60b75615c206a27aff17df853b53cf5e8c96\n"
    },
    {
      "commit": "373a9b5c718a45ac484afcf4fe6ce84f4bb562b3",
      "tree": "52a3e78fa8bc94a76674caaae837c728332d05dc",
      "parents": [
        "d0332e01ac26c2fd0a900de000a55ed5768ff936"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 18 09:01:57 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 25 10:13:59 2017 -0700"
      },
      "message": "ART: Depend on libnativehelper headers only\n\nDepend on header-only versions where possible. Move projects\nexcluding libart to libnativehelper_header_only.\n\nBug: 65522645\nTest: mmma art\nChange-Id: I53dd3b2a97e94ee685f72de007ed3858f7f5c6b6\n"
    },
    {
      "commit": "05f47743e604e9b3b1de9ec930c6af6d9780c440",
      "tree": "9c4342297a37c3cfe22c69ef9f7d82f722006431",
      "parents": [
        "b2c8fc62f4e7889300da2d26294537194e37b926"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 14 00:34:44 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 14 00:34:44 2017 +0000"
      },
      "message": "Revert \"Revert \"Make WatchedFramePop instrumentation event pure-virtual\"\"\n\nForgot to revert this.\n\nThis reverts commit b2c8fc62f4e7889300da2d26294537194e37b926.\n\nReason for revert: Fixed issue with tests\n\nChange-Id: I1fd5a2759c67a906d55137e2b6548726af2c8e4f\nTest: treehugger\n"
    },
    {
      "commit": "b2c8fc62f4e7889300da2d26294537194e37b926",
      "tree": "828a9a896619a8575bcf20a078f193df54354899",
      "parents": [
        "a0e0f103956fab23d1bfb08a69dadb0bc81d1a35"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 04 08:44:51 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 04 08:44:51 2017 +0000"
      },
      "message": "Revert \"Make WatchedFramePop instrumentation event pure-virtual\"\n\nBuilds on top of a change that breaks tests.\n\nThis reverts commit a0e0f103956fab23d1bfb08a69dadb0bc81d1a35.\n\nChange-Id: I6a35fc2f4a099e807b5ed81b93a3f9a8d8beeea2\n"
    },
    {
      "commit": "a0e0f103956fab23d1bfb08a69dadb0bc81d1a35",
      "tree": "9c4342297a37c3cfe22c69ef9f7d82f722006431",
      "parents": [
        "798eab03120f6189e8f6aa804d67af1b1d9f00b0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 01 10:33:41 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 01 10:33:41 2017 -0700"
      },
      "message": "Make WatchedFramePop instrumentation event pure-virtual\n\nAll the other events are pure virtual but this one had an (empty)\ndefault implementation. Change the event to make it consistent with\nall the others.\n\nTest: Builds\nTest: Treehugger\nChange-Id: I3d81914d067b305f09d4072c443e5ac9027af443\n"
    },
    {
      "commit": "798eab03120f6189e8f6aa804d67af1b1d9f00b0",
      "tree": "828a9a896619a8575bcf20a078f193df54354899",
      "parents": [
        "9c4feaa082d8e8c00611a0657c3f80b1c1179a6f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 23 12:54:53 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 01 10:10:14 2017 -0700"
      },
      "message": "JVMTI Exception and ExceptionCatch events\n\nAdd support for the JVMTI can_generate_exception_events capability.\nThis includes the Exception and ExceptionCatch events and all their\nassociated behaviors.\n\nTest: ./test.py --host -j50\nBug: 62821960\nBug: 65049545\n\nChange-Id: I21cc8522c01033cdeb47bf34fa433bf04bf7ca5c\n"
    },
    {
      "commit": "6e1607e247d979a1671a1fd5a98de3f1031fe719",
      "tree": "1174cdcce601419dcd5d1563777f721477d5cb6a",
      "parents": [
        "2ee17e69110a9ef98ea8c94219c7da23b918ef3f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 23 10:06:18 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 23 13:15:17 2017 -0700"
      },
      "message": "Rename instrumentation ExceptionCaught to ExceptionThrown\n\nThe instrumentation ExceptionCaught event was badly named since it is\nactually sent at the time the exception is thrown and is sent even if\nthe exception is never actually caught. Rename it and associated\nmethods/fields to ExceptionThrown to more accurately reflect the\nevent\u0027s semantics.\n\nTest: ./test.py --host -j50\nChange-Id: I1e9c401ab619259b25928dbf19f62d3fa9573d47\n"
    },
    {
      "commit": "e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7",
      "tree": "b8733533e2478069aabbdc3a34d0f40aff33e1b1",
      "parents": [
        "b98d384eb424ad7e1dc9816392ded33dce0e0372"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 16:53:49 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 18:25:55 2017 -0700"
      },
      "message": "art: use proper nativehelper headers\n\nlibnativeheader exports headers under nativeheader. These were\navailable before incorrectly as global headers in order to give\naccess to jni.h.\n\nTest: modules using art find headers\nBug: 63762847\nChange-Id: I5c820d677e94e07b2859e78610bc997fe51b41dc\n"
    },
    {
      "commit": "d76615851af31791c7b1549e8c4609152237b9ce",
      "tree": "e438a8cb0892e02768c55c2bc99f8be1d00abacb",
      "parents": [
        "6ecff4d2127e70738aa2493d6deceb946c204eff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 01 13:48:16 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 07 11:10:50 2017 -0700"
      },
      "message": "Handler-ize InstrumentationListener and related code\n\nWe are going to be making instrumentation listeners that can cause\nsuspensions during their running. We explicitly handler-ize all the\ninstrumentation listener functions in order to ensure this is safe.\n\nBug: 34414073\nTest: ./test.py --host --ntrace --trace -j40\nChange-Id: Ic719080d0991b104d41b7757df8d1f332c72cd04\n"
    },
    {
      "commit": "513061a792b22c417c938d31c19581390709561c",
      "tree": "80b4fdce03711170626aa5640d07b07de4a326a1",
      "parents": [
        "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 09:17:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 12:59:13 2017 -0700"
      },
      "message": "ART: Clean up thread.h and thread_list.h\n\nRemove dependency on stack.h and gc_root.h. Remove unused object\ncallbacks include. Factor out ManagedStack into its own set of files.\nFix up users of transitive includes.\n\nTest: m test-art-host\nChange-Id: I01286c43d8c7710948c161b1348faabb05922e59\n"
    },
    {
      "commit": "4ba388a39333b13f0f3bcde826444c77fd7166ed",
      "tree": "bbb2b337ee5798f50c5720d2e8467c53477d7826",
      "parents": [
        "8f28bd479af445293474867191a0bf1cf0f08a4f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 27 10:26:49 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 30 12:13:30 2017 -0800"
      },
      "message": "Remove Deoptimization code from class transformation.\n\nSince we removed the current_method from the compiled code we don\u0027t\nneed to deoptimize all frames anymore.\n\nThis is a partial revert of commit dba614810.\n\nBug: 32369913\nBug: 33630159\n\nTest: ART_TEST_TRACE\u003dtrue \\\n      ART_TEST_JIT\u003dtrue   \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\n\nChange-Id: I44a6dd89e1d96bd8c82c2c24a2f42fef023a80be\n"
    },
    {
      "commit": "8a5ab9102fe705b63eda6e6bcfe98ee1c03e5a6c",
      "tree": "5c1065aa6949b12b11fd659755ea97b654474e54",
      "parents": [
        "64e50021845b1ad9d8851596e8aaddf18be217c2"
      ],
      "author": {
        "name": "Shukang Zhou",
        "email": "shukang@google.com",
        "time": "Fri Jan 20 11:40:16 2017 -0800"
      },
      "committer": {
        "name": "Shukang Zhou",
        "email": "shukang@google.com",
        "time": "Fri Jan 20 17:38:55 2017 -0800"
      },
      "message": "[ART] Prepare streaming output of method tracing for developer use.\n\nChanges include:\n\n* Flush the buffer to file when tracing ends, so every record is\n  preserved.\n\n* At the end of the streaming output, add what\u0027s the header when the\n  output mode is not strreaming (called \u0027trace summary\u0027 in code).\n  * A new special token (kOpTraceSummary) is added for this purpose.\n  * The summary used to be written to a .sec file, which has\n    permission issues with non-rooted devices.\n\n* Update the streaming output converter (stream-trace-converter.py)\n  to handle the updated format. When the trace summary is present,\n  it is used to populate the output header, which provides more\n  complete info than existing implementation where some info is\n  inferred from the records.\n\nThe changes to trace.h/cc impact streaming output mode only.\n\nThe updated stream-trace-converter.py works with or without the\ntrace summary at the file end, so pulling the file in the middle\nis still supported.\n\nBug: b/33300765\n\nTest: m -j48 ART_TEST_TRACE\u003dtrue ART_TEST_TRACE_STREAM\u003dtrue test-art-host\nI also tested manually: flashed a Nexus 6P, collected traces, and\nparsed them in Studio.\n\nChange-Id: I697d2ec09bed56033cfce9a8f27dc4710d8b0798\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": "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": "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": "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": "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": "0f7e8f59698265d416d40844233bb09d02e7fc33",
      "tree": "b701bdd854fe1e0a518c789be32e9c3f01bc9279",
      "parents": [
        "de4cf16f467b531373560ca6eb785f0f36606aae"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 19 11:21:32 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jul 25 10:53:50 2016 -0700"
      },
      "message": "Fix stream-tracing with default methods\n\nTest: Ran mma ART_TEST_TRACE\u003dtrue ART_TEST_TRACE_STREAM\u003dtrue -j40 test-art-host\n\nBug: 30102284\nBug: 30286605\n\nChange-Id: I12f2534bc2d42a7504e6c1972c4cfdda2f77286f\n"
    },
    {
      "commit": "a344f6a153d84d9adc4f4d3c608538d7741168a9",
      "tree": "2912360371e81de3b03015fe409f10ea07974024",
      "parents": [
        "360b4b0137ce5f0bb771e2ddbfd4735cae932565"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 20 10:43:39 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 20 14:05:22 2016 -0700"
      },
      "message": "Make stream tracing have a higher thread count on host\n\nTest: mma ART_TEST_TRACE_STREAM\u003dtrue -j40 test-art-host-run-test-debug-prebuild-optimizing-relocate-stream-cms-checkjni-image-npictest-ndebuggable-001-HelloWorld32\nBug: 30229615\nChange-Id: Id396f569b9e21ff764562005624aabc964d4e95a\n"
    },
    {
      "commit": "df8789252252c77660daf5d602d425b60b344b08",
      "tree": "b393eb58d4a7749d819672d0199f35931a8e945b",
      "parents": [
        "f79c0e6f74dfaf7ca5ba3fbe1c903abd65086a1a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 13 16:44:54 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 13 19:48:30 2016 -0700"
      },
      "message": "ART: Add FdFile constructors\n\nMake Open protected, and expose constructors instead. Add a move\nconstructor and move assignment operator.\n\nAdd OS functions that return the FdFile non-pointer version.\n\nAdd tests.\n\nBug: 21192156\nTest: m test-art-host\nTest: m test-art-target (shamu)\nChange-Id: I83e390edde7cd37c900e9d5c3e4d21da22981b3f\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": "9ea02c4f01b079bf6a5f49c62cb59fa5791cbc60",
      "tree": "cdeedcf24f54d36ceb8edc44b58aef86c82efc24",
      "parents": [
        "4a01be2b1a7de5ce68cb5a453eb7cb4fc6c6658b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Mar 03 15:09:27 2016 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Mar 03 16:00:22 2016 -0800"
      },
      "message": "Add ScopedGCCriticalSection to Trace::StopTracing.\n\nThis attempts to fix a deadlock in 545-tracing-and-jit with the read\nbarrier config. I think the cause is the same as what CL 174096\ndescribes and it missed this one in Trace::StopTracing.\n\nBug: 26429931\nBug: 12687968\nChange-Id: I02ca45e2667c9f6afc27d73919d6c31d204cc621\n"
    },
    {
      "commit": "81f0f953c4bb159997046c962d44cb1898b1778d",
      "tree": "dffd9e7cdd53da2771770a59832e76769b696c0b",
      "parents": [
        "a27d59b2b98a02b2e9e5dbe40623e7a97aa1e8d8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 20 16:25:19 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 21 14:19:55 2016 +0000"
      },
      "message": "Move backward branch instrumentation to all branch.\n\nThis is in preparation for osr, and later dead branch profiling.\n\nChange-Id: I4597c0784c894c310f295dd534967d67dcefa419\n"
    },
    {
      "commit": "f83e733618066e3c672c9a7ee872a3bba8202e7f",
      "tree": "24d8185498b808a0bc21eba235e6bbac7a69362b",
      "parents": [
        "5c7c8248e48857f3a7c98a02d93c6971834d7241"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Nov 04 16:16:47 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Nov 11 18:14:04 2015 +0000"
      },
      "message": "Move the trace file out of the profiles folder.\n\n/dalvik-cache/profiles/ is going away. Create the trace file under\n/data/misc/trace.\n\nThis enable tracing without forcing SElinux into permissive mode.\n\nBug: 24698874\nBug: 25612377\nChange-Id: I78d09ef629bebe635c3baabaf88f01996d3333e5\n"
    },
    {
      "commit": "4b8f1ecd3aa5a29ec1463ff88fee9db365f257dc",
      "tree": "d113f8a5c6b61c078256cf15c7cbb9f7c8de0390",
      "parents": [
        "114873103db3d4d6e0da42ca02bad1ea8826443b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 26 18:34:03 2015 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 15 12:22:39 2015 -0700"
      },
      "message": "Use ATTRIBUTE_UNUSED more.\n\nUse it in lieu of UNUSED(), which had some incorrect uses.\n\nChange-Id: If247dce58b72056f6eea84968e7196f0b5bef4da\n"
    },
    {
      "commit": "7778b880b9cf46fe7a303b11477bd92b5cf65316",
      "tree": "0b7aaae7a090139f8060c7a5799ce02b019ebf3a",
      "parents": [
        "6639985f39a1983494fc7de2e4639fdc88e81228"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 05 16:41:10 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 05 18:05:31 2015 -0700"
      },
      "message": "Disable class unloading when tracing is active\n\nTracing keeps a lot of pointers to ArtMethods that could belong to\nclasses that we are going to unload. A quick fix for this is to\ndisable class unloading when tracing is active.\n\nBug: 24414774\nBug: 22720414\nChange-Id: Ia5619cbd7c9fd558eaa2a5000871d287213c4a76\n"
    },
    {
      "commit": "aa5168291c46f9b418d989bccf2d8e09338a83e6",
      "tree": "bad4c44f503962fc5d74c3079f14f9af1ce7864d",
      "parents": [
        "1aba494df441c31836e5b7d4d8e408420a93cb8d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 02 15:53:37 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 05 11:50:18 2015 -0700"
      },
      "message": "Add exclusion between instrumentation and GC\n\nInstrumentation calls VisitClasses while exclusive holding the\nmutator lock. This can cause deadlocks since VisitClasses needs to\ndecode JNI weak globals. If the system weak slow path flag is set,\nthen we wait holding locks while exclusive holding the mutator lock.\nThis causes a deadlock since the GC cannot acquire the mutator lock\nto sweep system weaks.\n\nThis fixes a deadlock seen in one of the tracing tests.\n\nChange-Id: I580152118e068a70f309dcc19df4144afec835dd\n"
    },
    {
      "commit": "26f728661a08062a373a3203b72dc2555c2aed2d",
      "tree": "4f6e8168ac7ca422c7de3c7cdda6db21958358fd",
      "parents": [
        "b6f7dd330f115fc977d1d5a10122c41c9dd7c210"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 15 09:52:07 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 15 11:15:12 2015 +0200"
      },
      "message": "Cleanup thread access in StackVisitor\n\nAdds method StackVisitor::GetThread to give access to the visited\nThread* so we no longer need to copy that pointer in subclasses.\n\nAlso adds a few missing const and DISALLOW_COPY_AND_ASSIGN.\n\nChange-Id: I57649ee7742ef4ef1e01447ac2fbb66f977b22eb\n"
    },
    {
      "commit": "4f55e22630d99ca0edd9e951e5ee96b57bb9b980",
      "tree": "84b7d55a6a7c31c09ed2865cc1bc2f4393476533",
      "parents": [
        "2d06e08d25bbf8eff1de945736a60810009e59ad"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 04 13:26:21 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 11 13:14:20 2015 -0700"
      },
      "message": "Add and use ScopedSuspendAll\n\nUsage replaces most SuspendAll and ResumeAll calls.\n\nChange-Id: I355683a5365876242cea85a656dcb58455f7a294\n"
    },
    {
      "commit": "5550ca8bcc742b109d77e62f3a0877c667d894d3",
      "tree": "522c873c59b56fff0244e754dd869f18ccf485f4",
      "parents": [
        "dbd357086fdb7fce619d745fda4efd52377becdd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 21 18:38:30 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 11 15:08:37 2015 +0100"
      },
      "message": "Record profiling information before Jitting.\n\n- Add a new instrumentation kind to record dynamic invokes.\n- Use the JNI entry point field to store the profiling data.\n- Record seen receivers for every dynamic invoke.\n\nChange-Id: I2c1738ab2a72052d45964d055dc16b44b906e54c\n"
    },
    {
      "commit": "673ed3d8aedc5462a47ded827c99f35d46525457",
      "tree": "83de4690228c9f7772c48c770c5e2e5ba2dac6fe",
      "parents": [
        "ce209462cc1a7ce235e5ac0d0e6db6b402f73441"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 28 14:56:43 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 31 10:58:31 2015 -0700"
      },
      "message": "Revert \"Revert \"Change dex caches to be weak roots\"\"\n\nThis reverts commit 81a9087f0df0518c39405b7d18ba5858a6d8b77b.\n\nBoot.oat creation time goes from 4.7s to 4.9s on host due to extra\nlocking. Will try to improve this in another CL.\n\nBug: 23602225\nBug: 22720414\n\nChange-Id: I7e25b75cfb63faa196c7b0f60e46cce50bf12021\n"
    },
    {
      "commit": "81a9087f0df0518c39405b7d18ba5858a6d8b77b",
      "tree": "f4936654805b4d84540bd909095e8bbf69795bfd",
      "parents": [
        "f86a0859684c0f8964da4cbe75d49df8f832e85b"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 28 09:07:14 2015 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 28 09:07:14 2015 -0700"
      },
      "message": "Revert \"Change dex caches to be weak roots\"\n\nThis reverts commit 3ae6b1d42523bb2a0ddb5edff1aaf05b592f28f4.\n"
    },
    {
      "commit": "3ae6b1d42523bb2a0ddb5edff1aaf05b592f28f4",
      "tree": "9ae990956db3d2d5970fb15bf264aeeb73e2bfe0",
      "parents": [
        "dcff51a0079c5e3abaf0335f7cb9a3dd44044456"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 14 14:03:10 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 25 18:00:47 2015 -0700"
      },
      "message": "Change dex caches to be weak roots\n\nChanged dex caches to be weak roots. This is necessary for class\nunloading since the resolved types arrays would keep classes live\nwhen they should be unloaded. Currently the dex caches still don\u0027t\nget freed due to the class loader roots.\n\nAlso deleted some unused functionality in image writer.\n\nBug: 22720414\nChange-Id: If22cb3cad7e3baabc8158a77d7f20799faf4c341\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": "7526d783ab68ed1dd53c763c75895cb432532b0f",
      "tree": "823d90f5eb72010c4ff68d67cc905ac3f44f629a",
      "parents": [
        "83f0a080b68e9cff9333af030f20f242a7ac9168"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 22 22:53:45 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 26 14:22:46 2015 -0700"
      },
      "message": "ART: Fix streaming tracing issues\n\nFix a lock ordering issue in streaming-mode tracing.\n\nFix a moving-GC issue in streaming-mode tracing. DexCache\nobjects are not good keys for a map.\n\nExpose streaming mode for testing in run-tests.\n\nBug: 21760614\n\n(cherry picked from commit b91205e40fe692061edde19ecb87d51414a7fcee)\n\nChange-Id: Idcd0575684ee3cc0cec3f81b4fdd0d5988c11e8c\n"
    },
    {
      "commit": "4d64cd45acc6a26742e8237eb65136998612820d",
      "tree": "7cc3be09a443f0510fe73c4267eefbb93d1b82f4",
      "parents": [
        "4757a3335c8e0b12060fe619ee7b8fda08ec580d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 02 16:38:29 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 02 17:18:03 2015 -0700"
      },
      "message": "Fix tracing\n\nMove back to 32 bit method IDs, add a bijective map for method IDs.\n\nAlso some cleanup.\n\n(cherry picked from commit d40bcc4fab1589e3aac0f4b59217c6ab4e72102a)\n\nBug: 19264997\nChange-Id: Icdd36591df53ff975d30b9000cfe67d3ae8c51d5\n"
    },
    {
      "commit": "e3b034a6f6f0d80d519ab08bdd18be4de2a4a2db",
      "tree": "660cc713e0ad2d71ccd1e0af1399c92665b626c7",
      "parents": [
        "119a8025bbc1c6f4a2d537e9a6d22f33ef31e552"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 31 14:29:23 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 31 17:36:10 2015 -0700"
      },
      "message": "Fix some ArtMethod related bugs\n\nAdded root visiting for runtime methods, not currently required\nsince the GcRoots in these methods are null.\n\nAdded missing GetInterfaceMethodIfProxy in GetMethodLine, fixes\n--trace run-tests 005, 044.\n\nFixed optimizing compiler bug where we used a normal stack location\ninstead of double on ARM64, this fixes the debuggable tests.\n\nTODO: Fix JDWP tests.\n\nBug: 19264997\n\nChange-Id: I7c55f69c61d1b45351fd0dc7185ffe5efad82bd3\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": "8e5bd18fc665d7ec5461ea068e98740a65da754c",
      "tree": "83441cdfdab06709b573aad2ab731cc65c10b9f1",
      "parents": [
        "cdeb0b5fede4c06488f43a212591e661d946bc78"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 06 11:34:34 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 11 15:23:25 2015 +0100"
      },
      "message": "Add a flag to StackVisitor for inlining.\n\nThe flag tells whether the stack walk needs to include inlined\nJava frames.\n\nThis does not do anything just yet, as we\u0027re not inlining anyways.\n\nChange-Id: I716e25094fe56fa335ca1f9a398c1bcdba478e73\n"
    },
    {
      "commit": "0462c4c87c39db6cfcd338f323844738109ac3c9",
      "tree": "30776cd2fadab4100851640976c2b572d228d688",
      "parents": [
        "a6591ef95afa6bc9d89c0c6044635ec7a13d4c55"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 01 16:34:17 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 07 18:03:58 2015 +0200"
      },
      "message": "Support multiple instrumentation clients\n\nChanges Instrumentation::ConfigureStubs to support multiple clients\nthat need different levels of instrumenation. A client is identified\nby a string key used to save the desired instrumentation level.\n\nAlso adds regression gtest instrumentation_test and some cleanup.\n\nBug: 19829329\nChange-Id: I1fc24a86fcb7cb46d4be806895376c25cc0a0b3c\n"
    },
    {
      "commit": "e34a42cd37b2b3b6b21280df14fa6f40917b5d6e",
      "tree": "b9a9362bdd3db787caffbe9ab72b3b3ad810bff9",
      "parents": [
        "3f4fa70a251443b7e35ee0464120e53daf4ae9c1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Apr 25 14:44:29 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Apr 25 17:07:07 2015 -0700"
      },
      "message": "ART: Fix Trace types, check minimum buf size\n\nAlso make streaming mode adhere to the given buffer (and fix the\ncase where the buffer is too small for a packet). This is important\nto not lose too much tracing information when the runtime is destroyed\nwith an unflushed buffer.\n\nChange-Id: I6525fe4326ac5c3d7c9cda41c54a2a911ca889b7\n"
    },
    {
      "commit": "40da286d3207d88ed8ff3f5caac4873874603428",
      "tree": "3f9720425b2a024a5a54a0a71447dcea107229a8",
      "parents": [
        "6508158f8388847f4cc3693e2cc1dbee6c2c7d18"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 27 12:49:04 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 15 20:45:35 2015 -0700"
      },
      "message": "ART: Streaming trace mode\n\nAdd a streaming mode for tracing. Streaming uses a buffer of 16KB\nand writes to the output when that buffer gets full. Streaming mode\ncan be enabled with -Xmethod-trace-stream and is currently not\nexposed otherwise.\n\nAdd a python script that can parse the streaming format, which\nsimply contains strings for newly encountered threads and methods\ninline, and create output that can be used with traceview.\n\nAdd Trace::Pause and Trace::Abort, which can pause and abort tracing.\nAbort is different from Stop in that it does not write the data.\n\nAdd code to the zygote hooks JNI implementation that pauses tracing\nbefore the fork, making sure that a child cannot clobber the parent\u0027s\ndata.\n\nAdd code to the zygote hooks JNI implementation that aborts old\ntracing and starts new tracing in the child after the fork. Currently\nbase the output on the pid. This will not work on an unmodified\ndevice, as the profiles directory is not generally writable, but\nwe do not have enough information at that point. Consider a scheme\nthat restarts tracing later.\n\nChange-Id: I93c7bf87e35af582bdfdd3ecc7c52454514220dd\n"
    },
    {
      "commit": "c785344b87221f5e4e6473e5b762e4e61fe65dcf",
      "tree": "cd32ad2c2604596a18926f04d4c313dab255ecfd",
      "parents": [
        "a29d93b380c9aeb8270e281aefbdd0c77a430d43"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 27 14:35:38 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 10 12:57:27 2015 -0700"
      },
      "message": "Move ArtField to native\n\nAdd linear alloc. Moved ArtField to be native object. Changed image\nwriter to put ArtFields after the mirror section.\n\nSavings:\n2MB on low ram devices\n4MB on normal devices\n\nTotal PSS measurements before (normal N5, 95s after shell start):\nImage size: 7729152 bytes\n23112 kB: .NonMoving\n23212 kB: .NonMoving\n22868 kB: .NonMoving\n23072 kB: .NonMoving\n22836 kB: .NonMoving\n19618 kB: .Zygote\n19850 kB: .Zygote\n19623 kB: .Zygote\n19924 kB: .Zygote\n19612 kB: .Zygote\nAvg: 42745.4 kB\n\nAfter:\nImage size: 7462912 bytes\n17440 kB: .NonMoving\n16776 kB: .NonMoving\n16804 kB: .NonMoving\n17812 kB: .NonMoving\n16820 kB: .NonMoving\n18788 kB: .Zygote\n18856 kB: .Zygote\n19064 kB: .Zygote\n18841 kB: .Zygote\n18629 kB: .Zygote\n3499 kB: .LinearAlloc\n3408 kB: .LinearAlloc\n3424 kB: .LinearAlloc\n3600 kB: .LinearAlloc\n3436 kB: .LinearAlloc\nAvg: 39439.4 kB\n\nNo reflection performance changes.\n\nBug: 19264997\nBug: 17643507\n\nChange-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c\n"
    },
    {
      "commit": "ca71458862be8505330b7fd5649a062f31d143dc",
      "tree": "7bc749056ab65906a147cc8e1d92e8be3ffea2cc",
      "parents": [
        "9d231cc422b7b32d00bd43ca6993b2dd7e9989ea"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 03 19:41:34 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 03 20:14:40 2015 -0700"
      },
      "message": "ART: Add Clang\u0027s -Wused-but-marked-unused\n\nAdd detection of wrong unused annotations. Fix our codebase.\n\nChange-Id: I85cc20f2eac71c1ec6c5c7cd6efb08454a629634\n"
    },
    {
      "commit": "7e7e0f47628fb358da70c5e2766545c4f0596235",
      "tree": "5f1473cb0aa149fee476966ffb23ec8f8941b208",
      "parents": [
        "68e22f3b982ff9ccbdfb3b65b7cfc16fcae907ba"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Mar 29 15:26:23 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Mar 29 15:26:23 2015 -0700"
      },
      "message": "ART: Use enums in Trace\n\nMove away from booleans. Will make introduction of streaming mode\na bit easier / obvious.\n\nChange-Id: Id7ae92f6b97f627e848510d473931537d7db0db8\n"
    },
    {
      "commit": "0624a27b9a2951bfcf23321a714543e137836904",
      "tree": "c97c0627b7d564881e18d4d66ccd66221fc72a30",
      "parents": [
        "03910065cd025ecb07781b85c2240be69c202d75"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Mar 26 15:47:54 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 27 07:06:59 2015 -0700"
      },
      "message": "Include pid in trace metadata\n\nChange-Id: I5d23fc7da94c1a344850833dfbbaa330fdbe28a7\n"
    },
    {
      "commit": "bf9fc581e8870faddbd320a935f9a627da724c48",
      "tree": "0a4a6c21fbd4c771b06fac186d32efa6722605b2",
      "parents": [
        "3d96846b6adedf57be64eb3873de0ca58ec4b827"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 13 17:21:25 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 13 17:32:48 2015 -0700"
      },
      "message": "Add more info to who called SuspendAll\n\nHelps diagnose related jank.\n\nChange-Id: I38191cdda723c6f0355d0197c494a3dff2b6653c\n"
    },
    {
      "commit": "02e5f160d9cc02da20d9e47af30f948c462f7043",
      "tree": "3a9ab3cc6e1e9226ef1c5818f16db873e28c3ec6",
      "parents": [
        "4fe8c2a9110916386e5fe8428410cd5795f57036"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 11 09:54:22 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 11 10:38:26 2015 -0700"
      },
      "message": "Fix sampling profiler race condition\n\nThread 1 is running RunSamplingThread and has just read trace into\nthe_trace.\n\nThread 2 is calling Trace::Stop and has just suspended all the\nthreads. At this point thread 1 is blocked on the SuspendAll.\nThread 2 goes and deletes the trace which Thread 1 still has a\npointer to, calls ResumeAll(). At this point thread 1 suspends the\nthreads and adds samples to the just deleted trace.\n\nThe fix is to join the thread before we delete the trace.\n\nBug: 18950006\nChange-Id: I3090c4dac392a4e5d880c4dc8d9385aef53c7425\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": "e5f13e57ff8fa36342beb33830b3ec5942a61cca",
      "tree": "02e370ecc4e0d955f28bfc71a41015f94fbb19b7",
      "parents": [
        "354d58ba776866ea7b1c71f0d0848d5aaa013ae3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 24 09:37:21 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 24 10:47:02 2015 -0800"
      },
      "message": "Revert \"Revert \"Add JIT\"\"\n\nAdded missing EntryPointToCodePointer.\n\nThis reverts commit a5ca888d715cd0c6c421313211caa1928be3e399.\n\nChange-Id: Ia74df0ef3a7babbdcb0466fd24da28e304e3f5af\n"
    },
    {
      "commit": "a5ca888d715cd0c6c421313211caa1928be3e399",
      "tree": "bdb08a2cbcf277ab7f02626a23b52a3fdf272ffe",
      "parents": [
        "2535abe7d1fcdd0e6aca782b1f1932a703ed50a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 08:10:57 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 08:10:57 2015 +0000"
      },
      "message": "Revert \"Add JIT\"\n\nSorry, run-test crashes on target:\n0-05 12:15:51.633 I/DEBUG   (27995): Abort message: \u0027art/runtime/mirror/art_method.cc:349] Check failed: PcIsWithinQuickCode(reinterpret_cast\u003cuintptr_t\u003e(code), pc) java.lang.Throwable java.lang.Throwable.fillInStackTrace() pc\u003d71e3366b code\u003d0x71e3362d size\u003dad000000\u0027\n10-05 12:15:51.633 I/DEBUG   (27995):     r0 00000000  r1 0000542b  r2 00000006  r3 00000000\n10-05 12:15:51.633 I/DEBUG   (27995):     r4 00000006  r5 b6f9addc  r6 00000002  r7 0000010c\n10-05 12:15:51.633 I/DEBUG   (27995):     r8 b63fe1e8  r9 be8e1418  sl b6427400  fp b63fcce0\n10-05 12:15:51.633 I/DEBUG   (27995):     ip 0000542b  sp be8e1358  lr b6e9a27b  pc b6e9c280  cpsr 40070010\n10-05 12:15:51.633 I/DEBUG   (27995): \n\nBug: 17950037\nThis reverts commit 2535abe7d1fcdd0e6aca782b1f1932a703ed50a4.\n\nChange-Id: I6f88849bc6f2befed0c0aaa0b7b2a08c967a83c3\n"
    },
    {
      "commit": "2535abe7d1fcdd0e6aca782b1f1932a703ed50a4",
      "tree": "140026ff9638ff34050680b6c706b82fa1740b56",
      "parents": [
        "38fee8ef4bc0f4dbe2c6d1f5585895f0c4d16984"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 17 10:38:49 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 23 16:45:49 2015 -0800"
      },
      "message": "Add JIT\n\nCurrently disabled by default unless -Xjit is passed in.\n\nThe proposed JIT is a method JIT which works by utilizing interpreter\ninstrumentation to request compilation of hot methods async during\nruntime.\n\nJIT options:\n-Xjit / -Xnojit\n-Xjitcodecachesize:N\n-Xjitthreshold:integervalue\n\nThe JIT has a shared copy of a compiler driver which is accessed\nby worker threads to compile individual methods.\n\nAdded JIT code cache and data cache, currently sized at 2 MB\ncapacity by default. Most apps will only fill a small fraction of\nthis cache however.\n\nAdded support to the compiler for compiling interpreter quickened\nbyte codes.\n\nAdded test target ART_TEST_JIT\u003dTRUE and --jit for run-test.\n\nTODO:\nClean up code cache.\nDelete compiled methods after they are added to code cache.\nAdd more optimizations related to runtime checks e.g. direct pointers\nfor invokes.\nAdd method recompilation.\nMove instrumentation to DexFile to improve performance and reduce\nmemory usage.\n\nBug: 17950037\n\nChange-Id: Ifa5b2684a2d5059ec5a5210733900aafa3c51bca\n"
    },
    {
      "commit": "aaebaa0121be3b9d9f13630585304482cbcaeb4b",
      "tree": "0f47257e497fdf920c8d703d2d00adab53934a76",
      "parents": [
        "babecc483276b46d84cb83d4f01e577228827305"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jan 26 10:55:53 2015 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 04 13:29:19 2015 -0800"
      },
      "message": "art: Refactor RuntimeOptions/ParsedOptions\n\nRefactor the RuntimeOptions to be a\ntype-safe map (VariantMap, see runtime_options.h) and the ParsedOptions\nto delegate the parsing to CmdlineParser (see cmdline/cmdline_parser.h).\n\nThis is the start of a command line parsing refactor, and may include\nmore in the future (dex2oat, patchoat, etc).\n\nFor more details of the command line parsing generator usage see cmdline/README.md\n\nChange-Id: Ic67c6bca5e1f33bf2ec60e2e3ff8c366bab91563\n"
    },
    {
      "commit": "0a18df82f4dea95b7398f8c934341fccbf04eeee",
      "tree": "125c8285763ffc6d9c00b27eaed6a7aad5b317ee",
      "parents": [
        "553727e466942a10e11ee39dcb67e3f9562b471e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 09 15:16:16 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 09 15:16:16 2015 -0800"
      },
      "message": "Clean up some #ifdefs.\n\nOnly the Mac doesn\u0027t have POSIX clocks. (And it still doesn\u0027t, a decade\nlater.)\n\nglibc gained pthread_setname_np in 2.12.\n\nOnly the Mac doesn\u0027t have prctl.\n\nChange-Id: I218e409f7e133736e15fb68e8a254cdc5799d667\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": "a1785c5cd88f6256a838a95c93ac0a1bee6c5145",
      "tree": "f5336a279300ea62bbdec08f0f44401c4374f5b0",
      "parents": [
        "220526b05d4365a1820a694c98527eda2d3dc980"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 25 20:40:08 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 26 01:57:00 2014 -0800"
      },
      "message": "ART: Use Overwrite instead of Put\n\nAllow threads exiting twice when tracing.\n\nBug: 18469797\n\nChange-Id: I88ce5ea8237e53a76ad68fd4b28a367f58e6d635\n"
    },
    {
      "commit": "4303ba97313458491e038d78efa041d41cf7bb43",
      "tree": "5a5873651db918416c9ff63f4bb06b6eb7f4c71a",
      "parents": [
        "a971100be7870544360fa8a46311ef7f5adb6902"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 06 01:00:46 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 18 17:26:06 2014 -0800"
      },
      "message": "ART: Track Flush \u0026 Close in FdFile\n\nImplement a check that aborts when a file hasn\u0027t been explicitly\nflushed and closed when it is destructed.\n\nAdd WARN_UNUSED to FdFile methods.\n\nUpdate dex2oat, patchoat, scoped_flock and some gtests to pass with\nthis.\n\n(cherry picked from commit 9433ec60b325b708b9fa87e699ab4a6565741494)\n\nChange-Id: I9ab03b1653e69f44cc98946dc89d764c3e045dd4\n"
    },
    {
      "commit": "6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f",
      "tree": "9df58b57af13240a93a6da4eefcf03f70cce9ad9",
      "parents": [
        "c6e0955737e15f7c0c3575d4e13789b3411f4993"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 31 00:33:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 03 20:01:04 2014 -0800"
      },
      "message": "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n\nFix associated errors about unused paramenters and implict sign conversions.\nFor sign conversion this was largely in the area of enums, so add ostream\noperators for the effected enums and fix tools/generate-operator-out.py.\nTidy arena allocation code and arena allocated data types, rather than fixing\nnew and delete operators.\nRemove dead code.\n\nChange-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b\n"
    },
    {
      "commit": "cf7f19135f0e273f7b0136315633c2abfc715343",
      "tree": "ffa4d9efd9c45f4b6789acc1f534bb9327052b7e",
      "parents": [
        "aea6888b056be21adf762e066c7f33b8939b8a06"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 22 22:06:39 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 22 22:21:57 2014 -0700"
      },
      "message": "C++11 related clean-up of DISALLOW_..\n\nMove DISALLOW_COPY_AND_ASSIGN to delete functions. By no having declarations\nwith no definitions this prompts better warning messages so deal with these\nby correcting the code.\nAdd a DISALLOW_ALLOCATION and use for ValueObject and mirror::Object.\nMake X86 assembly operand types ValueObjects to fix compilation errors.\nTidy the use of iostream and ostream.\nAvoid making cutils a dependency via mutex-inl.h for tests that link against\nlibart. Push tracing dependencies into appropriate files and mutex.cc.\nx86 32-bit host symbols size is increased for libarttest, avoid copying this\nin run-test 115 by using symlinks and remove this test\u0027s higher than normal\nulimit.\nFix the RunningOnValgrind test in RosAllocSpace to not use GetHeap as it\nreturns NULL when the heap is under construction by Runtime.\n\nChange-Id: Ia246f7ac0c11f73072b30d70566a196e9b78472b\n"
    },
    {
      "commit": "e094b87c6f6ea9ebf83aa56a3114ac59556aaf9f",
      "tree": "d6db16b54affbe5304a8155bee3536b982acafd7",
      "parents": [
        "cfd8adec84701752a56ddccf556b8c40142a9e0f"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Oct 14 13:12:01 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Oct 14 18:12:09 2014 -0700"
      },
      "message": "Store exiting thread ids and names while tracing to output later.\n\nBug: 17909204\n\n(cherry picked from commit fdcbc5c4c7c67bba06e038ac96a2e8bc49b91f84)\n\nChange-Id: Iea087560ba8b983412a6dde2ec166c9e7214f3a1\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": "9ef78b59da51080882e47505896b420977fd79ae",
      "tree": "6c568756e4e16e68d5d3346261009350969d5b77",
      "parents": [
        "95f03e6a4737f90685fab86e98709f1c4393d5ef"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 25 17:03:12 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 26 16:04:56 2014 -0700"
      },
      "message": "Fix broken runtime SetStatsEnabled logic\n\nPreviously, Runtime::SetStatsEnabled wouldn\u0027t take stats_enabled_\ninto account when deciding whether or not to increment / decrement\nteh stats enabled counter. This resulted in counter underflows and\nother errors which caused some CTS tests to fail.\n\nAlso added some locking to prevent race conditions.\n\nBug: 17360878\n\n(cherry picked from commit a98ffd745bbecb2e84a492194950c0b94966546b)\n\nChange-Id: I21d241a58d35bd6a607aa2305c6da81720bd0886\n"
    },
    {
      "commit": "69dbec6d9d55eeb2867949c2791d01dc9aa916c8",
      "tree": "be4eca8161eafb4a8466f5adf28a2c8f27cd37d1",
      "parents": [
        "926d8e99aa69151a271180299df68963688010d8"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Sep 15 18:03:41 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 17 14:31:55 2014 -0700"
      },
      "message": "Avoid suspending for alloc trace enabling when already suspended.\n\nBug: 17499772\n\n(cherry picked from commit 1d6ee090fddd4bfd35c304d6ceb929d5c529dfcc)\n\nChange-Id: Id09809c476c685f0a197ee75bb08638931364efd\n"
    },
    {
      "commit": "d063d912e5580222b1822b152de315420cef49ee",
      "tree": "98399fb92eaeefab47daf6ce9b77f03ffb8841d8",
      "parents": [
        "5bc47ebe278af65e8e2a2d6b603ac94a020285f7"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Sep 08 09:38:18 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Sep 09 11:39:38 2014 -0700"
      },
      "message": "Change when sampling thread is reset during shutdown to prevent races.\n\nAlso adds some extra argument checking and testing for tracing.\n\nBug: 17412385\n\n(cherry picked from commit f8bdd4e783842577e49f418a0b5962ba49dfdd93)\n\nChange-Id: Ifc4f1a296155d73255b29d264b5475024e6419da\n"
    },
    {
      "commit": "c5d824a20c225763761a6dff43294b229ff35469",
      "tree": "d3fcf29c2e7359bdb135931c0f4558644e1ca9fb",
      "parents": [
        "8df73882c60451e7f789bf9b1f3db2d7dc228640"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jul 28 18:35:38 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Jul 29 13:34:57 2014 -0700"
      },
      "message": "Stop thread from reattaching during runtime shutdown while tracing.\n\nBug: 16024763\nChange-Id: Iad5ba180241ff74b15baf5c3a15ed2d2ed60fcf0\n"
    },
    {
      "commit": "22d5e735f403c57525fe868304c7123f0ce66399",
      "tree": "2458684efa56f0b800dd75a9dedd0449f76f581f",
      "parents": [
        "fbde4dd1cb6db729e3f3ee5bdae0cdd824d73054"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 22:23:51 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 06:13:46 2014 -0700"
      },
      "message": "Remove object_utils.h.\n\nBreak into object_lock, field_helper and method_helper.\nClean up header files following this.\nAlso tidy some of the Handle code in response to compiler errors when resolving\nthe changes in this CL.\n\nChange-Id: I73e63015a0f02a754d0866bfaf58208aebcaa295\n"
    },
    {
      "commit": "e63db27db913f1a88e2095a1ee8239b2bb9124e8",
      "tree": "893dee6783bca6717259321a6e4ba029c9c123e2",
      "parents": [
        "07b8441303ea82fca3cb85d71ecf8752d73cedd7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 15:36:11 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 17:07:49 2014 -0700"
      },
      "message": "Break apart header files.\n\nCreate libart-gtest for common runtime and compiler gtest routines.\nRename CompilerCallbacksImpl that is quick compiler specific.\nRename trace clock source constants to not use the overloaded profiler term.\n\nChange-Id: I4aac4bdc7e7850c68335f81e59a390133b54e933\n"
    },
    {
      "commit": "54fb8fd8f3b1552c3ec0b694070646675efa348e",
      "tree": "d18ac3ed061a660e1b366599253490113e4ff85d",
      "parents": [
        "62526c377fe5242a723f154a373eccf5b9db416d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 09 23:16:06 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 09 23:16:06 2014 -0700"
      },
      "message": "Fix tracing.\n\nChange-Id: If6837270baec694c00cc1884bae0f1842d49da75\n"
    },
    {
      "commit": "8ab25ef11aed383bf7d3aa96e95f777972d1b58f",
      "tree": "905b37556c225ab44e94f39292bbc558d7506376",
      "parents": [
        "bcb3b29095817ce8987d8310d4db87271f5114ad"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 09 18:00:50 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 09 18:00:50 2014 -0700"
      },
      "message": "Move another field away from android_atomic_cas.\n\nChange-Id: If63aa2811e06ec401a601286a3bacb62a0da96ad\n"
    }
  ],
  "next": "bfd9a4378eacaf2dc2bbe05ad48c5164fc93c9fe"
}
