)]}'
{
  "log": [
    {
      "commit": "f82e39f1d9cb1739cfe7fe80b611611dbe45a19d",
      "tree": "394508ff323bb8e06bf354ddb3788649c11f021b",
      "parents": [
        "ac951d785e9a57f53c3e0a58dd3d66a245f3821c"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 15 19:58:27 2020 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 15 19:59:04 2020 -0800"
      },
      "message": "Add a liblog dependency\n\nModules with a libbase dependency also need a liblog dependency now.\n\nFixes the linker-reloc-bench build target.\n\nBug: b/147779981\nTest: manual\nChange-Id: I41dd35717b665524a26a92a0c268e42c93a383b7\n"
    },
    {
      "commit": "41f19708c83c4739bf31d7f7ac3bc708a6169492",
      "tree": "6dbedcb2d206b86f15f410b09d15b3c0f346e15c",
      "parents": [
        "a04764bd286cf86f28d65487e1b6d6d36c9671e8"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Dec 23 13:21:42 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jan 14 13:12:56 2020 -0800"
      },
      "message": "Add a linker relocation benchmark\n\nThe benchmark creates a set of DSOs that mimic the work involved in\nloading the current version of libandroid_servers.so. The synthetic\nbenchmark has roughly the same number of libraries with roughly the same\nrelocations.\n\nCurrently, on a local aosp_walleye build that includes recent performance\nimprovements (including the Neon-based CL\nI3983bca1dddc9241bb70290ad3651d895f046660), using the \"performance\"\ngovernor, the benchmark reports these scores:\n\n$ adb shell taskset 10 \\\n  /data/benchmarktest64/linker-reloc-bench/linker-reloc-bench \\\n  --benchmark_repetitions\u003d20 --benchmark_display_aggregates_only\u003dtrue\n...\n--------------------------------------------------------------------------------\nBenchmark                                      Time             CPU   Iterations\n--------------------------------------------------------------------------------\nBM_linker_relocation/real_time_mean        70048 us          465 us           20\nBM_linker_relocation/real_time_median      70091 us          466 us           20\nBM_linker_relocation/real_time_stddev        329 us         8.29 us           20\n\n$ adb shell taskset 10 \\\n  /data/benchmarktest/linker-reloc-bench/linker-reloc-bench \\\n  --benchmark_repetitions\u003d20 --benchmark_display_aggregates_only\u003dtrue\n...\n--------------------------------------------------------------------------------\nBenchmark                                      Time             CPU   Iterations\n--------------------------------------------------------------------------------\nBM_linker_relocation/real_time_mean        83051 us          462 us           20\nBM_linker_relocation/real_time_median      83069 us          464 us           20\nBM_linker_relocation/real_time_stddev        184 us         8.91 us           20\n\nTest: manual\nBug: none\nChange-Id: I6dac66978f8666f95c76387093bda6be0151bfce\n"
    },
    {
      "commit": "2f95d19a694c7fec19930ab74a4f1f99b661b99f",
      "tree": "0b9bc9a2f68072893779989565f04abb7981ddcc",
      "parents": [
        "3779d6da40fc90b989b343c1b0d5b22611226b43"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Jan 09 10:06:12 2020 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Jan 09 10:07:12 2020 -0800"
      },
      "message": "Add liblog as a dependency where libbase is used.\n\n(Also fix issues found from bpfmt)\n\nBug: 119867234\nTest: build\nChange-Id: I16e93ad7c26dadfb625acbe514abe0c0084f84b6\n"
    },
    {
      "commit": "5a3c920051d8139a4c81f8804d3a7be94d150e85",
      "tree": "ddc7e20ab5777563640dc3b9b83939a6c871a27f",
      "parents": [
        "1752b5b9c0f2ae3845278e72d7ac9f83e33f0e32"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Dec 04 15:57:07 2019 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Dec 05 15:46:22 2019 -0800"
      },
      "message": "Add mallopt M_PURGE benchmark.\n\nUpdate the native allocator documentation to include running of this\nbenchmark.\n\nMove the malloc_benchmark.cpp to malloc_sql_benchmark.cpp and use\nmalloc_benchmark.cpp for benchmarking functions from malloc.h.\n\nBug: 137795072\n\nTest: Ran new benchmark.\nChange-Id: I76856de833032da324ad0bc0b6bd85a4ea8c253d\n"
    },
    {
      "commit": "ae57a6b64195dc218dd060504e56250c874a251d",
      "tree": "f308bd33dd6ddd0e5189d6484847fd79c4ecc575",
      "parents": [
        "5e85d1b290877201174fdb2f09226b5bd34b80a9"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Nov 13 12:48:52 2019 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Nov 13 12:50:50 2019 -0800"
      },
      "message": "Remove unused code.\n\nTest: Compiles.\nChange-Id: I92095bd0ee59a3b98ee8deba1c3efc4685389a1b\n"
    },
    {
      "commit": "b481a2e743102efc6b18cc586aa979a70e575d64",
      "tree": "25b69c933cd0ca4d776d7845ad22a8692157a0cd",
      "parents": [
        "de39d9242ae38733c33173957386db0b8060e52a"
      ],
      "author": {
        "name": "Raman Tenneti",
        "email": "rtenneti@google.com",
        "time": "Tue Nov 12 20:41:55 2019 +0000"
      },
      "committer": {
        "name": "Raman Tenneti",
        "email": "rtenneti@google.com",
        "time": "Tue Nov 12 20:41:55 2019 +0000"
      },
      "message": "Revert \"Revert \"Make system property reads wait-free\"\"\n\nThis reverts commit de39d9242ae38733c33173957386db0b8060e52a.\n\nReason for revert: This revert is not needed\n\nChange-Id: I34af8e5d75c724f6c4066fafbfc6bc7d58377601\n"
    },
    {
      "commit": "de39d9242ae38733c33173957386db0b8060e52a",
      "tree": "2a7e44d156dac92caacf04f9c6c9c3540638a03f",
      "parents": [
        "0cf90556de2bde53a1957c5946036b2fe2e4e429"
      ],
      "author": {
        "name": "Raman Tenneti",
        "email": "rtenneti@google.com",
        "time": "Tue Nov 12 18:24:06 2019 +0000"
      },
      "committer": {
        "name": "Raman Tenneti",
        "email": "rtenneti@google.com",
        "time": "Tue Nov 12 18:24:06 2019 +0000"
      },
      "message": "Revert \"Make system property reads wait-free\"\n\nThis reverts commit 0cf90556de2bde53a1957c5946036b2fe2e4e429.\n\nReason for revert: Device boot failures - 144355953\n\nChange-Id: Icd4fc8c7a1d06d688a6d37e6f1c1aa45563f711b\n"
    },
    {
      "commit": "0cf90556de2bde53a1957c5946036b2fe2e4e429",
      "tree": "25b69c933cd0ca4d776d7845ad22a8692157a0cd",
      "parents": [
        "5d9ba9ea702a4d20b99639996b8bd27f121d5bd7"
      ],
      "author": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Tue Oct 29 15:40:16 2019 -0700"
      },
      "committer": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Mon Nov 11 11:17:00 2019 -0800"
      },
      "message": "Make system property reads wait-free\n\nRight now, when we read a system property, we first (assuming we\u0027ve\nalready looked up the property\u0027s prop_info) read the property\u0027s serial\nnumber; if we find that the low bit (the dirty bit) in the serial\nnumber is set, we futex-wait for that serial number to become\nnon-dirty. By doing so, we spare readers from seeing partially-updated\nproperty values if they race with the property service\u0027s non-atomic\nmemcpy to the property value slot. (The futex-wait here isn\u0027t\nessential to the algorithm: spinning while dirty would suffice,\nalthough it\u0027d be somewhat less efficient.)\n\nThe problem with this approach is that readers can wait on the\nproperty service process, potentially causing delays due to scheduling\nvariance. Property reads are not guaranteed to complete in finite time\nright now.\n\nThis change makes property reads wait-free and ensures that they\ncomplete in finite time in all cases. In the new approach, we prevent\nvalue tearing by backing up each property we\u0027re about to modify and\ndirecting readers to the backup copy if they try to read a property\nwith the dirty bit set.\n\n(The wait freedom is limited to the case of readers racing against\n*one* property update. A writer can still delay readers by rapidly\nupdating a property --- but after this change, readers can\u0027t hang due\nto PID 1 scheduling delays.)\n\nI considered adding explicit atomic access to short property values,\nbut between binary compatibility with the existing property database\nand the need to carefully handle transitions of property values\nbetween \"short\" (compatible with atomics) and \"long\" (incompatible\nwith atomics) length domains, I figured the complexity wasn\u0027t worth it\nand that making property reads wait-free would be adequate.\n\nTest: boots\nBug: 143561649\nChange-Id: Ifd3108aedba5a4b157b66af6ca0a4ed084bd5982\n"
    },
    {
      "commit": "c4e727bff3eddbb624d7038fac88637d8afebd2b",
      "tree": "2cf8989bb8f37fef1e0e7a9f49e98d1fea35c9f8",
      "parents": [
        "64b6a0b87e402e02138bce95bfa90dbe89647c3b"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Oct 15 10:26:44 2019 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Oct 16 08:59:06 2019 -0700"
      },
      "message": "Add dladdr benchmark.\n\nBug: 142684469\nTest: adb shell /data/benchmarktest64/bionic-benchmarks/bionic-benchmarks --benchmark_filter\u003d\"BM_dladdr.*\"\n-------------------------------------------------------------------\nBenchmark                         Time             CPU   Iterations\n-------------------------------------------------------------------\nBM_dladdr_libbase_split        92.6 ns         92.4 ns      6673841\nBM_dladdr_libc_printf          8690 ns         8667 ns        80916\nBM_dladdr_libdl_dladdr          133 ns          132 ns      5342791\nBM_dladdr_local_function       93.0 ns         92.7 ns      7625562\n\nChange-Id: I259dd8f64ccc288835576a2eb08b8b8132777a4b\n"
    },
    {
      "commit": "a4959aa6f819df0efdab6995e5de530655734389",
      "tree": "7f2ceae2b6c167bbfd20d1e9bbc9c1d52ff6fa7e",
      "parents": [
        "29ec2881a0a87ccda75c77fd967934d863d53cc1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 12:04:09 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 12:04:09 2019 -0700"
      },
      "message": "Reimplement the \u003cctype.h\u003e is* functions.\n\nFollowing on from the towlower()/towupper() changes, add benchmarks for\nmost of \u003cctype.h\u003e, rewrite the tests to cover the entire defined range\nfor all of these functions, and then reimplement most of the functions.\n\nThe old table-based implementation is mostly a bad idea on modern\nhardware, with only ispunct() showing a significant benefit compared to\nany other way I could think of writing it, and isalnum() a marginal but\nstill convincingly genuine benefit.\n\nMy new benchmarks make an effort to test an example from each relevant\nrange of characters to avoid, say, accidentally optimizing the behavior\nof `isalnum(\u00270\u0027)` at the expense of `isalnum(\u0027z\u0027)`.\n\nInterestingly, clang is able to generate what I believe to be the\noptimal implementations from the most readable code, which is\nimpressive. It certainly matched or beat all my attempts to be clever!\n\nThe BSD table-based implementations made a special case of EOF despite\nhaving a `_ctype_` table that\u0027s offset by 1 to include EOF at index 0.\nI\u0027m not sure why they didn\u0027t take advantage of that, but removing the\nexplicit check for EOF measurably improves the generated code on arm and\narm64, so even the two functions that still use the table benefit from\nthis rewrite.\n\nHere are the benchmark results:\n\narm64 before:\n  BM_ctype_isalnum_n                 3.73 ns         3.73 ns    183727137\n  BM_ctype_isalnum_y1                3.82 ns         3.81 ns    186383058\n  BM_ctype_isalnum_y2                3.73 ns         3.72 ns    187809830\n  BM_ctype_isalnum_y3                3.78 ns         3.77 ns    181383055\n  BM_ctype_isalpha_n                 3.75 ns         3.75 ns    189453927\n  BM_ctype_isalpha_y1                3.76 ns         3.75 ns    184854043\n  BM_ctype_isalpha_y2                4.32 ns         3.78 ns    186326931\n  BM_ctype_isascii_n                 2.49 ns         2.48 ns    275583822\n  BM_ctype_isascii_y                 2.51 ns         2.51 ns    282123915\n  BM_ctype_isblank_n                 3.11 ns         3.10 ns    220472044\n  BM_ctype_isblank_y1                3.20 ns         3.19 ns    226088868\n  BM_ctype_isblank_y2                3.11 ns         3.11 ns    220809122\n  BM_ctype_iscntrl_n                 3.79 ns         3.78 ns    188719938\n  BM_ctype_iscntrl_y1                3.72 ns         3.71 ns    186209237\n  BM_ctype_iscntrl_y2                3.80 ns         3.80 ns    184315749\n  BM_ctype_isdigit_n                 3.76 ns         3.74 ns    188334682\n  BM_ctype_isdigit_y                 3.78 ns         3.77 ns    186249335\n  BM_ctype_isgraph_n                 3.99 ns         3.98 ns    177814143\n  BM_ctype_isgraph_y1                3.98 ns         3.95 ns    175140090\n  BM_ctype_isgraph_y2                4.01 ns         4.00 ns    178320453\n  BM_ctype_isgraph_y3                3.96 ns         3.95 ns    175412814\n  BM_ctype_isgraph_y4                4.01 ns         4.00 ns    175711174\n  BM_ctype_islower_n                 3.75 ns         3.74 ns    188604818\n  BM_ctype_islower_y                 3.79 ns         3.78 ns    154738238\n  BM_ctype_isprint_n                 3.96 ns         3.95 ns    177607734\n  BM_ctype_isprint_y1                3.94 ns         3.93 ns    174877244\n  BM_ctype_isprint_y2                4.02 ns         4.01 ns    178206135\n  BM_ctype_isprint_y3                3.94 ns         3.93 ns    175959069\n  BM_ctype_isprint_y4                4.03 ns         4.02 ns    176158314\n  BM_ctype_isprint_y5                3.95 ns         3.94 ns    178745462\n  BM_ctype_ispunct_n                 3.78 ns         3.77 ns    184727184\n  BM_ctype_ispunct_y                 3.76 ns         3.75 ns    187947503\n  BM_ctype_isspace_n                 3.74 ns         3.74 ns    185300285\n  BM_ctype_isspace_y1                3.77 ns         3.76 ns    187202066\n  BM_ctype_isspace_y2                3.73 ns         3.73 ns    184105959\n  BM_ctype_isupper_n                 3.81 ns         3.80 ns    185038761\n  BM_ctype_isupper_y                 3.71 ns         3.71 ns    185885793\n  BM_ctype_isxdigit_n                3.79 ns         3.79 ns    184965673\n  BM_ctype_isxdigit_y1               3.76 ns         3.75 ns    188251672\n  BM_ctype_isxdigit_y2               3.79 ns         3.78 ns    184187481\n  BM_ctype_isxdigit_y3               3.77 ns         3.76 ns    187635540\n\narm64 after:\n  BM_ctype_isalnum_n                 3.37 ns         3.37 ns    205613810\n  BM_ctype_isalnum_y1                3.40 ns         3.39 ns    204806361\n  BM_ctype_isalnum_y2                3.43 ns         3.43 ns    205066077\n  BM_ctype_isalnum_y3                3.50 ns         3.50 ns    200057128\n  BM_ctype_isalpha_n                 2.97 ns         2.97 ns    236084076\n  BM_ctype_isalpha_y1                2.97 ns         2.97 ns    236083626\n  BM_ctype_isalpha_y2                2.97 ns         2.97 ns    236084246\n  BM_ctype_isascii_n                 2.55 ns         2.55 ns    272879994\n  BM_ctype_isascii_y                 2.46 ns         2.45 ns    286522323\n  BM_ctype_isblank_n                 3.18 ns         3.18 ns    220431175\n  BM_ctype_isblank_y1                3.18 ns         3.18 ns    220345602\n  BM_ctype_isblank_y2                3.18 ns         3.18 ns    220308509\n  BM_ctype_iscntrl_n                 3.10 ns         3.10 ns    220344270\n  BM_ctype_iscntrl_y1                3.10 ns         3.07 ns    228973615\n  BM_ctype_iscntrl_y2                3.07 ns         3.07 ns    229192626\n  BM_ctype_isdigit_n                 3.07 ns         3.07 ns    228925676\n  BM_ctype_isdigit_y                 3.07 ns         3.07 ns    229182934\n  BM_ctype_isgraph_n                 2.66 ns         2.66 ns    264268737\n  BM_ctype_isgraph_y1                2.66 ns         2.66 ns    264445277\n  BM_ctype_isgraph_y2                2.66 ns         2.66 ns    264327427\n  BM_ctype_isgraph_y3                2.66 ns         2.66 ns    264427480\n  BM_ctype_isgraph_y4                2.66 ns         2.66 ns    264155250\n  BM_ctype_islower_n                 2.66 ns         2.66 ns    264421600\n  BM_ctype_islower_y                 2.66 ns         2.66 ns    264341148\n  BM_ctype_isprint_n                 2.66 ns         2.66 ns    264415198\n  BM_ctype_isprint_y1                2.66 ns         2.66 ns    264268793\n  BM_ctype_isprint_y2                2.66 ns         2.66 ns    264419205\n  BM_ctype_isprint_y3                2.66 ns         2.66 ns    264205886\n  BM_ctype_isprint_y4                2.66 ns         2.66 ns    264440797\n  BM_ctype_isprint_y5                2.72 ns         2.72 ns    264333293\n  BM_ctype_ispunct_n                 3.52 ns         3.51 ns    198956572\n  BM_ctype_ispunct_y                 3.38 ns         3.38 ns    201661792\n  BM_ctype_isspace_n                 3.39 ns         3.39 ns    206896620\n  BM_ctype_isspace_y1                3.39 ns         3.39 ns    206569020\n  BM_ctype_isspace_y2                3.39 ns         3.39 ns    206564415\n  BM_ctype_isupper_n                 2.76 ns         2.75 ns    254227134\n  BM_ctype_isupper_y                 2.76 ns         2.75 ns    254235314\n  BM_ctype_isxdigit_n                3.60 ns         3.60 ns    194418653\n  BM_ctype_isxdigit_y1               2.97 ns         2.97 ns    236082424\n  BM_ctype_isxdigit_y2               3.48 ns         3.48 ns    200390011\n  BM_ctype_isxdigit_y3               3.48 ns         3.48 ns    202255815\n\narm32 before:\n  BM_ctype_isalnum_n                 4.77 ns         4.76 ns    129230464\n  BM_ctype_isalnum_y1                4.88 ns         4.87 ns    147939321\n  BM_ctype_isalnum_y2                4.74 ns         4.73 ns    145508054\n  BM_ctype_isalnum_y3                4.81 ns         4.80 ns    144968914\n  BM_ctype_isalpha_n                 4.80 ns         4.79 ns    148262579\n  BM_ctype_isalpha_y1                4.74 ns         4.73 ns    145061326\n  BM_ctype_isalpha_y2                4.83 ns         4.82 ns    147642546\n  BM_ctype_isascii_n                 3.74 ns         3.72 ns    186711139\n  BM_ctype_isascii_y                 3.79 ns         3.78 ns    183654780\n  BM_ctype_isblank_n                 4.20 ns         4.19 ns    169733252\n  BM_ctype_isblank_y1                4.19 ns         4.18 ns    165713363\n  BM_ctype_isblank_y2                4.22 ns         4.21 ns    168776265\n  BM_ctype_iscntrl_n                 4.75 ns         4.74 ns    145417484\n  BM_ctype_iscntrl_y1                4.82 ns         4.81 ns    146283250\n  BM_ctype_iscntrl_y2                4.79 ns         4.78 ns    148662453\n  BM_ctype_isdigit_n                 4.77 ns         4.76 ns    145789210\n  BM_ctype_isdigit_y                 4.84 ns         4.84 ns    146909458\n  BM_ctype_isgraph_n                 4.72 ns         4.71 ns    145874663\n  BM_ctype_isgraph_y1                4.86 ns         4.85 ns    142037606\n  BM_ctype_isgraph_y2                4.79 ns         4.78 ns    145109612\n  BM_ctype_isgraph_y3                4.75 ns         4.75 ns    144829039\n  BM_ctype_isgraph_y4                4.86 ns         4.85 ns    146769899\n  BM_ctype_islower_n                 4.76 ns         4.75 ns    147537637\n  BM_ctype_islower_y                 4.79 ns         4.78 ns    145648017\n  BM_ctype_isprint_n                 4.82 ns         4.81 ns    147154780\n  BM_ctype_isprint_y1                4.76 ns         4.76 ns    145117604\n  BM_ctype_isprint_y2                4.87 ns         4.86 ns    145801406\n  BM_ctype_isprint_y3                4.79 ns         4.78 ns    148043446\n  BM_ctype_isprint_y4                4.77 ns         4.76 ns    145157619\n  BM_ctype_isprint_y5                4.91 ns         4.90 ns    147810800\n  BM_ctype_ispunct_n                 4.74 ns         4.73 ns    145588611\n  BM_ctype_ispunct_y                 4.82 ns         4.81 ns    144065436\n  BM_ctype_isspace_n                 4.78 ns         4.77 ns    147153712\n  BM_ctype_isspace_y1                4.73 ns         4.72 ns    145252863\n  BM_ctype_isspace_y2                4.84 ns         4.83 ns    148615797\n  BM_ctype_isupper_n                 4.75 ns         4.74 ns    148276631\n  BM_ctype_isupper_y                 4.80 ns         4.79 ns    145529893\n  BM_ctype_isxdigit_n                4.78 ns         4.77 ns    147271646\n  BM_ctype_isxdigit_y1               4.74 ns         4.74 ns    145142209\n  BM_ctype_isxdigit_y2               4.83 ns         4.82 ns    146398497\n  BM_ctype_isxdigit_y3               4.78 ns         4.77 ns    147617686\n\narm32 after:\n  BM_ctype_isalnum_n                 4.35 ns         4.35 ns    161086146\n  BM_ctype_isalnum_y1                4.36 ns         4.35 ns    160961111\n  BM_ctype_isalnum_y2                4.36 ns         4.36 ns    160733210\n  BM_ctype_isalnum_y3                4.35 ns         4.35 ns    160897524\n  BM_ctype_isalpha_n                 3.67 ns         3.67 ns    189377208\n  BM_ctype_isalpha_y1                3.68 ns         3.67 ns    189438146\n  BM_ctype_isalpha_y2                3.75 ns         3.69 ns    190971186\n  BM_ctype_isascii_n                 3.69 ns         3.68 ns    191029191\n  BM_ctype_isascii_y                 3.68 ns         3.68 ns    191011817\n  BM_ctype_isblank_n                 4.09 ns         4.09 ns    171887541\n  BM_ctype_isblank_y1                4.09 ns         4.09 ns    171829345\n  BM_ctype_isblank_y2                4.08 ns         4.07 ns    170585590\n  BM_ctype_iscntrl_n                 4.08 ns         4.07 ns    170614383\n  BM_ctype_iscntrl_y1                4.13 ns         4.11 ns    171495899\n  BM_ctype_iscntrl_y2                4.19 ns         4.18 ns    165255578\n  BM_ctype_isdigit_n                 4.25 ns         4.24 ns    165237008\n  BM_ctype_isdigit_y                 4.24 ns         4.24 ns    165256149\n  BM_ctype_isgraph_n                 3.82 ns         3.81 ns    183610114\n  BM_ctype_isgraph_y1                3.82 ns         3.81 ns    183614131\n  BM_ctype_isgraph_y2                3.82 ns         3.81 ns    183616840\n  BM_ctype_isgraph_y3                3.79 ns         3.79 ns    183620182\n  BM_ctype_isgraph_y4                3.82 ns         3.81 ns    185740009\n  BM_ctype_islower_n                 3.75 ns         3.74 ns    183619502\n  BM_ctype_islower_y                 3.68 ns         3.68 ns    190999901\n  BM_ctype_isprint_n                 3.69 ns         3.68 ns    190899544\n  BM_ctype_isprint_y1                3.68 ns         3.67 ns    190192384\n  BM_ctype_isprint_y2                3.67 ns         3.67 ns    189351466\n  BM_ctype_isprint_y3                3.67 ns         3.67 ns    189430348\n  BM_ctype_isprint_y4                3.68 ns         3.68 ns    189430161\n  BM_ctype_isprint_y5                3.69 ns         3.68 ns    190962419\n  BM_ctype_ispunct_n                 4.14 ns         4.14 ns    171034861\n  BM_ctype_ispunct_y                 4.19 ns         4.19 ns    168308152\n  BM_ctype_isspace_n                 4.50 ns         4.50 ns    156250887\n  BM_ctype_isspace_y1                4.48 ns         4.48 ns    155124476\n  BM_ctype_isspace_y2                4.50 ns         4.50 ns    155077504\n  BM_ctype_isupper_n                 3.68 ns         3.68 ns    191020583\n  BM_ctype_isupper_y                 3.68 ns         3.68 ns    191015669\n  BM_ctype_isxdigit_n                4.50 ns         4.50 ns    156276745\n  BM_ctype_isxdigit_y1               3.28 ns         3.27 ns    214729725\n  BM_ctype_isxdigit_y2               4.48 ns         4.48 ns    155265129\n  BM_ctype_isxdigit_y3               4.48 ns         4.48 ns    155216846\n\nI\u0027ve also corrected a small mistake in the documentation for isxdigit().\n\nTest: tests and benchmarks\nChange-Id: I4a77859f826c3fc8f0e327e847886882f29ec4a3\n"
    },
    {
      "commit": "41488b79c440beb93202ac41fdd919d58feb3509",
      "tree": "b8015ac386d4ab8fa0d23c5534ba6e00d03140e3",
      "parents": [
        "4096cba7f85e9b7943f728e8e64323215abcd7f5",
        "2c236bc5068e759e12253ca71f62d08c9be70484"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Sep 27 19:59:50 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 27 19:59:50 2019 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Add benchmarks that run simple programs\"\"\""
    },
    {
      "commit": "9ff7d096437bc5d36a174e5b67141ae71b3dd97b",
      "tree": "7002d27838d2e540f1e4dcbc5502e04c5135919f",
      "parents": [
        "f5b44a5ea6875d593bccd1a30220ded177fb26ba"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 26 21:47:01 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 26 21:47:01 2019 -0700"
      },
      "message": "Add trivial \u003cctype.h\u003e benchmarks.\n\nJust to sanity check that toupper/tolower and towupper/towlower are in\nthe same ballpark for the ASCII range.\n\nTest: ran benchmarks\nChange-Id: I1ddc3f4f4478b4075107831f27bf4d4b4a3bc5e8\n"
    },
    {
      "commit": "2c236bc5068e759e12253ca71f62d08c9be70484",
      "tree": "5719d7f39ce9e6fb5a67df14f03b799bc439f82a",
      "parents": [
        "0878ac991af7b784b3d61f406b73d33703d56fed"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Sep 26 12:47:47 2019 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Sep 26 16:18:37 2019 -0700"
      },
      "message": "Revert \"Revert \"Add benchmarks that run simple programs\"\"\n\nThis reverts commit 3bf27c86d1327a5a66bf06af07027c4f1a37d358.\n\nDisable the 32-bit glibc target. We\u0027re not interested in benchmarking that\ntarget, and the bench_noop_nostl executable doesn\u0027t build when ASAN is\nturned on, because the libclang_rt.asan_cxx-i386.a lib contains\nubsan_type_hash_itanium.cc.o, which needs __dynamic_cast and various\nSTL typeinfo variables. The equivalent libclang_rt.asan_cxx-x86_64.a\nlib doesn\u0027t have ubsan_type_hash_itanium.cc.o in it.\n\nBug: http://b/141693636\nTest: m bench_noop_nostl bench_noop bench_noop_static ASAN_OPTIONS\u003ddetect_leaks\u003d0 SANITIZE_HOST\u003daddress\nChange-Id: Id6de17e622682f3a166367ad670cba5bfa6aee47\n"
    },
    {
      "commit": "f5b44a5ea6875d593bccd1a30220ded177fb26ba",
      "tree": "39ec26bced5060bf30f5da5f1f0318e22928cc4b",
      "parents": [
        "6595551e284ad8962d6c9c01556ff27907ab0067",
        "96705e3712007e2739b809e02a6583c39756fc86"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 26 21:38:52 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 26 21:38:52 2019 +0000"
      },
      "message": "Merge \"benchmarks: remove more boilerplate.\""
    },
    {
      "commit": "0878ac991af7b784b3d61f406b73d33703d56fed",
      "tree": "51aa6f0b1f6d115afdf86d22a57483c20d7e3867",
      "parents": [
        "6ebeaac69db83624e14f96f0345ceae350e87c0e",
        "3bf27c86d1327a5a66bf06af07027c4f1a37d358"
      ],
      "author": {
        "name": "Raman Tenneti",
        "email": "rtenneti@google.com",
        "time": "Thu Sep 26 17:54:33 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 26 17:54:33 2019 +0000"
      },
      "message": "Merge \"Revert \"Add benchmarks that run simple programs\"\""
    },
    {
      "commit": "3bf27c86d1327a5a66bf06af07027c4f1a37d358",
      "tree": "cce0515de4ea0ec9ac44f0977c26cb9fb734dfae",
      "parents": [
        "aa85ac2b08ed61fb5bc0867ea76529964dfa35ec"
      ],
      "author": {
        "name": "Raman Tenneti",
        "email": "rtenneti@google.com",
        "time": "Thu Sep 26 17:52:48 2019 +0000"
      },
      "committer": {
        "name": "Raman Tenneti",
        "email": "rtenneti@google.com",
        "time": "Thu Sep 26 17:52:48 2019 +0000"
      },
      "message": "Revert \"Add benchmarks that run simple programs\"\n\nThis reverts commit aa85ac2b08ed61fb5bc0867ea76529964dfa35ec.\n\nReason for revert: builds are broken - Bug: 141693636\n\nChange-Id: I7502813ae519719c578a05676a0adf9537019bd3\n"
    },
    {
      "commit": "96705e3712007e2739b809e02a6583c39756fc86",
      "tree": "9b0c06c53af6b526c47d33a14c8e0117ce204ba3",
      "parents": [
        "6ebeaac69db83624e14f96f0345ceae350e87c0e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 26 07:42:23 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 26 07:42:23 2019 -0700"
      },
      "message": "benchmarks: remove more boilerplate.\n\nMany of our benchmarks are basically just \"call one function with a\nfixed argument\". We don\u0027t need to keep repeating all the boilerplate for\nthat.\n\nThis also ensures we don\u0027t forget the benchmark::DoNotOptimize, which --\nin addition to being a good idea in general -- specifically solves the\nproblem with gettid benchmark and provides a more accurate result by\nremoving the indirection through a function pointer.\n\nTest: ran benchmarks\nChange-Id: Id67535243678cd0d48f51cf25141e2040da9af03\n"
    },
    {
      "commit": "bab9cfd99a2358b80229a61ac21e6d54f15d5a20",
      "tree": "a2c430bb22777838ee35e11106f5a7a391a33529",
      "parents": [
        "ef0adb1275e9af2a23d63fe9dcf048eb28c9ae78"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 25 18:17:17 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 25 22:13:32 2019 -0700"
      },
      "message": "Add trivial towlower/towupper benchmarks.\n\nCurrently 11ns for both ascii and unicode in 64-bit, 15ns for 32-bit.\n\nTest: ran benchmarks\nChange-Id: Ie810b324c855b52b66a96889a194bc5b5b55653f\n"
    },
    {
      "commit": "ef0adb1275e9af2a23d63fe9dcf048eb28c9ae78",
      "tree": "dd630bde8c509df434cbb08edb2ae67f438ace08",
      "parents": [
        "b10ac9e66156002ef1ca383ea71db99282305284",
        "3cfb89d451afe65f478274b6994725256b80bc76"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Sep 25 19:48:35 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 25 19:48:35 2019 +0000"
      },
      "message": "Merge \"run-on-host fixes\""
    },
    {
      "commit": "aa85ac2b08ed61fb5bc0867ea76529964dfa35ec",
      "tree": "be9bfb4d4fe3fd5f5d63aff32961fda09d31560d",
      "parents": [
        "f97dcc15e86dc557517a9b767bc1f6d22ad66594"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Sep 18 15:58:46 2019 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Sep 25 09:35:43 2019 +0000"
      },
      "message": "Add benchmarks that run simple programs\n\nSpecifically, test the wall-clock time for running:\n * a C program that does nothing (i.e. no STL)\n * a C++ program that does nothing\n * a statically-linked C++ program\n * toybox true (in /system/bin and /vendor/bin)\n * mksh -c true (in /system/bin and /vendor/bin)\n\nTest: bionic-spawn-benchmarks\nChange-Id: I961850ec90004cac83088feab5783f4f27768be1\n"
    },
    {
      "commit": "3cfb89d451afe65f478274b6994725256b80bc76",
      "tree": "22566d885def798f20a94acbb8393c808522937c",
      "parents": [
        "14d5c12ed6d4febc054c49d6b48e3e3a94d3530d"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Sep 20 15:42:48 2019 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Sep 24 15:36:31 2019 -0700"
      },
      "message": "run-on-host fixes\n\n * Fix the path to bionic-benchmarks-glibc\n\n * Add symlinks for the toybox symlink commands. Each symlink bypasses the\n   intermediate symlink in ${OUT}/system/bin and points to the final\n   toybox binary. Suppress a bunch of warnings by skipping symlinks for\n   non-existent files.\n\n   The new spawn benchmarks try to run /system/bin/true. (They also try to\n   run /vendor/bin/true and print an error.)\n\n * Quote \"$@\"\n\n * Use soong_ui.bash --dumpvars-mode to set a bunch of variables, rather\n   than get_build_var, which invokes Soong once per variable. This reduces\n   the \"build/run-on-host.sh\" runtime from 4s to 1.3s.\n\n * build/run-on-host.sh isn\u0027t executable and is only useful when it\u0027s\n   sourced into another shell, so remove its shebang to reduce confusion.\n\nBug: none\nTest: \\\n  . build/envsetup.sh\n  lunch aosp_x86_64-userdebug\n  . bionic/build/run-on-host.sh\n  prepare MODULES-IN-bionic MODULES-IN-external-toybox\n  /system/bin/true\n\nChange-Id: I59e9a6aca77d35b16bdf51759c5fc7e725bfc67c\n"
    },
    {
      "commit": "dfa3231faec81cef7eae40d165c5852395f57577",
      "tree": "8741001c273dff278399ed05fa680b67eea8cb60",
      "parents": [
        "34bf6107b6bbd44863e1e620f05014f6d7ee0aa3",
        "4da99ffe5e35918c46228ec4a494e54697a2d0cb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 27 16:15:21 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 27 16:15:21 2019 +0000"
      },
      "message": "Merge \"Fix running tests/benchmarks on the host.\""
    },
    {
      "commit": "4da99ffe5e35918c46228ec4a494e54697a2d0cb",
      "tree": "03e2434d8ea557ede31878d3b797ee22eaf7f91a",
      "parents": [
        "401e2efa39797c61e174b6e3f12e7b41d7511fc3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 26 15:12:57 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 26 17:45:17 2019 -0700"
      },
      "message": "Fix running tests/benchmarks on the host.\n\nThis was broken by all the mainline modules stuff. It\u0027s quite a bit\nhairier to set up now, given that we don\u0027t have an apexd on the host.\nAn alternative might be to actually set up a fake /apex that points to\nthe bootstrap directories?\n\nTest: ./benchmarks/run-on-host.sh 64\nTest: ./tests/run-on-host.sh 64\nChange-Id: If2c277ba492c7c443cdf51526ea42f56568e2ea6\n"
    },
    {
      "commit": "d655bc6dfadbb13e66baba3b988b4beb0aaa3f11",
      "tree": "93845955c0dd37ffddbb83d17059b6881767d660",
      "parents": [
        "401e2efa39797c61e174b6e3f12e7b41d7511fc3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 23 11:49:13 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 23 11:49:13 2019 -0700"
      },
      "message": "Update doc comment about running the benchmarks.\n\nTest: N/A\nChange-Id: Idf1f8c38aa90478b861358677e1d12b96809377d\n"
    },
    {
      "commit": "7ec2c8a9b6f9a050d2ac9e0c35f0a631573f3de6",
      "tree": "289ddc73370f240d2feabf59fa855d11e04df3ce",
      "parents": [
        "1701d887aca0374c000a018a974227064e77d769"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Apr 05 12:47:39 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Apr 05 14:45:15 2019 -0700"
      },
      "message": "Add malloc benchmarks.\n\nAdding some benchmarks that keep a certain number of allocation\naround. This benchmark should not be used as an absolute for determining\nwhat is a good/bad native allocator. However, it should be used to make\nsure that numbers are not completely changed between allocator versions.\n\nAlso update the malloc sql benchmark to match the same style as these\nnew benchmarks.\n\nBug: 129743239\n\nTest: Ran these benchmarks.\nChange-Id: I1995d98fd269b61d9c96efed6eff3ed278e24c97\n"
    },
    {
      "commit": "358603a40908415d5fe780f9321ba7d6b9941638",
      "tree": "4485083508172c6474755333b0edd99ad7c7da0f",
      "parents": [
        "3e742cb6133ad37ce28e8f0bffdf70f763ed45a3"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Mar 29 14:25:16 2019 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Mar 29 14:27:27 2019 -0700"
      },
      "message": "Modernise code to use override specifier\n\nGenerated by clang-tidy.\n\nTest: m checkbuild\nChange-Id: I8e23da6b8af31b291be2eefe9937ca222ea8a8c3\n"
    },
    {
      "commit": "770032ddfa31f6ed18e6ec85013b7939cd291eb0",
      "tree": "28dc26ae8a6b3623e79d1bb2b19fd5362477843c",
      "parents": [
        "7bd54ade8d12762ef6bdb0096f3838261f14eee5"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Jan 02 10:59:48 2019 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Jan 02 11:04:05 2019 -0800"
      },
      "message": "Fix/suppress bionic google-explicit-constructor warnings\n\n* Add explicit to conversion constructors/operators\n\nBug: 28341362\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,google-explicit-constructor\nChange-Id: Id1ad0327c1b8c6f094bcbb3ae599bc1f716b3f2f\n"
    },
    {
      "commit": "ba1a723ad111018a1de7992032dabef8c87b15d7",
      "tree": "8e83fddc57fb9431f66fbf966de612d3c83ffc58",
      "parents": [
        "f1e657cdff25541959e1a81e0894bc4245d8e9d1"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Nov 14 15:19:53 2018 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Nov 14 15:46:49 2018 -0800"
      },
      "message": "switch to using android-base/file.h instead of android-base/test_utils.h\n\nTest: compile\nBug: 119313545\nChange-Id: I664fb32522d01909c603d7b903475c4e9aea9223\n"
    },
    {
      "commit": "9ac0cd5f85f9b9607bafa16d6e78393d69c08c0c",
      "tree": "f7bf4a29a60edfbc7d5d6948578cf83178712ac9",
      "parents": [
        "77a5f95405bec7b5fa717c29464b4fc3b62d1db1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Nov 06 13:38:07 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Nov 07 14:30:55 2018 -0800"
      },
      "message": "Fix test failures.\n\n- Fix the help output for new benchmarks help output.\n- Fix incorrect regex for sanitizing output.\n\nTest: Ran unit tests and they pass.\nChange-Id: I227eef3ce8c4ce639321e5ab8a57d0877063ede1\n"
    },
    {
      "commit": "18cbed70080807b6ee8924a4e7d50893dd862c9a",
      "tree": "f0a2ff37fb97731c6ab6f1796a50d63ddaaecc18",
      "parents": [
        "de1353b8a413dc627dba30b5eb9a38fa717749e6"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Oct 19 13:54:11 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Oct 19 14:05:14 2018 -0700"
      },
      "message": "Make the test less specific.\n\nRemove the need to add every benchmark to the list of all benchmarks.\n\nAlso, add some hard-coding of the location of the benchmark executable.\nAdd a test to make sure the benchmark exists so it\u0027s possible to detect\nif the executable changes location.\n\nFinally, make the tests isolated so that they finish in half the time.\n\nTest: Ran unit tests.\nChange-Id: I1e59eb283e31d29b14e54c44ac865827c9704127\n"
    },
    {
      "commit": "3e5754c6ad6baf9f80885dc41c39854eb0bfb067",
      "tree": "4190f76386f30e73939c5caebe596da6e9aec01e",
      "parents": [
        "a2af8bea8c6c4b6ce6883bf92cbce922e0d9f458"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Oct 18 10:37:34 2018 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Oct 18 17:56:58 2018 -0700"
      },
      "message": "Add benchmarks for heap size retrieval\n\nAdd benchmarks for mallinfo, and for retrieving RSS from\n/proc/self/statm, since we\u0027re considering using these for GC\ntriggering.\n\nAdd some static linkage specifiers, after running into a build\nproblem due to a spurious conflict.\n\nBug: 111447610\n\nTest: Ran benchmarks\nChange-Id: Ie50d512294993882728c63ce51ec507590257d80\n"
    },
    {
      "commit": "efaa60ff6cab1cbd0018f69606bd738399241430",
      "tree": "6329a58016db2aaad7d03dfc0c99916327d7f3f8",
      "parents": [
        "30b17e32f0b403a97cef7c4d1fcab471fa316340",
        "627329915acba5e6884d02af97a8486421f251e8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 25 22:13:09 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 25 22:13:09 2018 +0000"
      },
      "message": "Merge \"Only use NDK libraries in the benchmarks.\""
    },
    {
      "commit": "627329915acba5e6884d02af97a8486421f251e8",
      "tree": "b64a9cff7893d56b6e028b2cb926ac77c50e19b0",
      "parents": [
        "ce9d653b38868a73260d141acbf3ddd8c5d8e178"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 24 16:45:13 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 24 16:45:13 2018 -0700"
      },
      "message": "Only use NDK libraries in the benchmarks.\n\nIt should be possible to run the benchmarks on any device, including\npast and future ones, and sticking to NDK libraries ensures that.\n\nBug: N/A\nTest: `readelf -aW`\nChange-Id: I15a7a4104fa30263136bc3033d2bd9022cd8ff7b\n"
    },
    {
      "commit": "4fae703029a75d7f8b649d1f4609ba8926c653e3",
      "tree": "a335dd49f8753a95bd53b16e455a87c4278dc388",
      "parents": [
        "8d11bea6c57cf62171f4157e0f2061ada4c19b10"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Sep 20 15:03:49 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Sep 20 15:03:49 2018 -0700"
      },
      "message": "Touch the memory when doing malloc/free benchmark.\n\nAlso, update the benchmark loop for modern C++.\n\nTest: Ran benchmarks.\nChange-Id: I925446b893793eb8c2c6759716cdd3dbbcf1e7c1\n"
    },
    {
      "commit": "ed16b344e75f422fb36fbfd91fb30de339475880",
      "tree": "aebd7ef303ec593c8d7b29fa6e4a443f08d9784f",
      "parents": [
        "b228f4e3d34d7d03d235f1a089a4abc10e08711e",
        "c282ca9f44d59697df04d6b07e6dcd86fe3bdd75"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Sep 14 02:16:52 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 14 02:16:52 2018 +0000"
      },
      "message": "Merge \"benchmarks: Fix the benchmark tests.\""
    },
    {
      "commit": "62011c27a73f0c5092ac278f934b6fd89ce67c9f",
      "tree": "92245806cb62f9671bfee089c3ce299cff490d5b",
      "parents": [
        "4d9814909677805d04d113b7af24b3edf655a712"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Sep 13 16:08:15 2018 -0700"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Sep 13 16:08:18 2018 -0700"
      },
      "message": "benchmarks: Update the documentation.\n\nUpdate the locations of the benchmark binaries to match where they\nare currently installed.\n"
    },
    {
      "commit": "c282ca9f44d59697df04d6b07e6dcd86fe3bdd75",
      "tree": "81fe0aeec4d322f4fa1b4f5aa294bb7dbe1bff74",
      "parents": [
        "4d9814909677805d04d113b7af24b3edf655a712"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Sep 13 16:05:19 2018 -0700"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Sep 13 16:06:01 2018 -0700"
      },
      "message": "benchmarks: Fix the benchmark tests.\n\nUpdate the list of benchmarks to include the recently added strncmp\nbenchmarks.\n"
    },
    {
      "commit": "e466cc0d5548472e6e78c9994e3c2c982157b549",
      "tree": "00b4ee9139f27133c49e141813983c620f161cca",
      "parents": [
        "d1214b0c688906d2a97c29fa1700723f31b51eb8"
      ],
      "author": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Tue Aug 21 12:55:37 2018 -0700"
      },
      "committer": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Tue Aug 21 21:04:43 2018 +0000"
      },
      "message": "Add benchmark for strncmp\n\nTest: run benchmark\nChange-Id: Id99d81fe4d2a72a7f22414c7eea3ef3d873022ab\n"
    },
    {
      "commit": "0dc784431b3e0a5964b257753e2bf4dcc96a463d",
      "tree": "112d7833549c2064988a53b6ad633117567bb6f3",
      "parents": [
        "5285d5995b37df589907b8fb00993b4414e7fd81"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 09 15:19:57 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Aug 14 16:01:58 2018 -0700"
      },
      "message": "Add new malloc benchmarks.\n\nThis runs through the trace of the allocations in a sql benchmark app\nexecuted in the benchmark thread.\n\nAdd one benchmark with decay time set to 0 and another with decay time\nset to 1.\n\nInclude a script that can generate a header file that can be used to\nregenerate the data.\n\nBug: 112317428\n\nTest: Builds, ran unit tests, ran benchmarks.\nChange-Id: I62e287cc06b74b74bcc5a4bbee71b0fac0a196fd\n"
    },
    {
      "commit": "510dda3ea1bdd2d52448cce076bbbee67914e801",
      "tree": "37a7aefaf5a640c8024b7df73ea9f1afa911ac7f",
      "parents": [
        "a7573441c1274bbdb3fc992d068ebf97b30a0208"
      ],
      "author": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Sat Aug 11 23:39:06 2018 -0700"
      },
      "committer": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Sat Aug 11 23:43:03 2018 -0700"
      },
      "message": "Fix benchmark-tests\n\n1. fix all_benchmarks. Some new benchmarks were added.\n2. move some benchmark suites to the right place.\n3. add unit test for https://android-review.googlesource.com/c/platform/bionic/+/724785\n\nTest: compile and run bionic-benchmarks-tests on device.\nChange-Id: I2b686b51910a422b664f9ea968199f37944039c0\n"
    },
    {
      "commit": "43f2b77c8bbe7dfdabce4f8118e7f43d701300e6",
      "tree": "77a3e4111885ab15b71f7024af946df4ec95a2e6",
      "parents": [
        "68c8dd73ae651adb2dcefe0edd109969f604b1df"
      ],
      "author": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Tue Jun 26 10:34:51 2018 -0300"
      },
      "committer": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Sat Aug 11 07:20:53 2018 +0000"
      },
      "message": "Add new strcmp/strncmp benchmark\n\nThis patch adds a new strcmp/strcmp benchmark with different set of\ninputs.  It cover all pre-defined range values (small, medium, large)\nfor aligned inputs and also small range for unaligned ones.\n\nTest: Ran new string test suite with a single bionic iteration.\nChange-Id: Ice78d74c3583a33158eaba3309c10df54044aa28\n"
    },
    {
      "commit": "0e4fd755a0da98649bfc1668003f83b8f8a09a3e",
      "tree": "6813837197e05f95e7dd63c3507cfb0fedbc4da2",
      "parents": [
        "5288655f014b96bec1dac52753fa7e46ba7a3b67"
      ],
      "author": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Tue Jun 26 10:30:14 2018 -0300"
      },
      "committer": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Sat Aug 11 07:20:13 2018 +0000"
      },
      "message": "Add new memcmp benchmark\n\nThis patch adds a new memcmp benchmark with different set of inputs.\nIt covers all pre-defined range values (small, medium, large) for\naligned inputs and also medium range for unaligned ones.\n\nTest: Ran new string test suite with a single bionic iteration.\nChange-Id: Icdb95220a62d46bd71fa6ffbbf4567a9a05b7685\n"
    },
    {
      "commit": "eda94aa1aeb61270228d2542feb9c493cfa12428",
      "tree": "175a503e0fe2f56ca0f88bbd5d9222f4c2b05c01",
      "parents": [
        "0f06b34e332fc0c430dacc1e648cc0832ffe15e4"
      ],
      "author": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Tue Jun 26 10:27:10 2018 -0300"
      },
      "committer": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Sat Aug 11 00:27:27 2018 +0000"
      },
      "message": "Add option to define ranges sets for benchmarks\n\nThis patch add an option to use the pre-define set of ranges along\nwith macros AT_ONEBUF_MANUAL_ALIGN_* and AT_TWOBUF_MANUAL_ALIGN1_*.\n\nThe size argument can be either a number or a string representing\nthe sets of values:\n\n  * SMALL for values between 1 and 256.\n  * MEDIUM for values between 512 and 128KB.\n  * LARGE for values between 256KB and 2048KB.\n\nTest: Ran new string test suite with a single bionic iteration.\nChange-Id: Ieda81ee9a5019991b0b2f97d4ca3a237127c5848\n"
    },
    {
      "commit": "72fe1c8df6a7a71d78d3089aae9f5fd06d15d90b",
      "tree": "995cdfd4699f50188c8f74a9bbdd5420e4ef5e27",
      "parents": [
        "56f4511c39589a6ac6957675e9d2feb212dfb708"
      ],
      "author": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Wed Aug 08 13:36:14 2018 -0300"
      },
      "committer": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Wed Aug 08 18:04:48 2018 -0300"
      },
      "message": "Add pow benchmark\n\nAs for exp/exp2 benchmark, this patch add two benchmark for pow:\none which measures thoughput and one which measures latency.\n\nThe input data is the same as powf.\n\nTest: ran 32-bit and 64-bit x86 tests on host\nChange-Id: I04335fac9e76fb3f39935323dacf6b7be6a6f917\n"
    },
    {
      "commit": "56f4511c39589a6ac6957675e9d2feb212dfb708",
      "tree": "6c8657bb174b6188c335cb9a6273504299019fe4",
      "parents": [
        "099835ad2a7c35ab9f2825b66d18742c7fcbd9be"
      ],
      "author": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Wed Aug 08 11:02:26 2018 -0300"
      },
      "committer": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Wed Aug 08 18:04:48 2018 -0300"
      },
      "message": "Add log and log2 benchmark\n\nSimilar to exp/exp2, this patch add two benchmarks for log and log2:\none which measures thoughput and one which measures latency.\n\nThe input data is based on logf/log2f one (reduced trace based on 2.8\nbillion samples extracted from specpu2017 521.wrf_r benchmark).\n\nTest: ran 32-bit and 64-bit x86 tests on host\n\nChange-Id: I51a9e2960e45d5619585e685eaa7634cc7be901b\n"
    },
    {
      "commit": "10d330af340a0f9c9a98b3c2db5eb883395656dc",
      "tree": "9c0da2a9cda2ab15a4d93c51d5515af31924a75b",
      "parents": [
        "f2fb3b11c611536b19d4ce8949dffe7f151854b5"
      ],
      "author": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Wed Aug 08 10:54:53 2018 -0300"
      },
      "committer": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Wed Aug 08 15:06:09 2018 -0300"
      },
      "message": "Add exp and exp2 benchmark\n\nThis patch add two benchmarks for both exp and exp2, one which measures\nthoughput and one which measures latency. The latency benchmark works by\ncreating a dependency on the previous iteration and with a zero multiply\nto avoid changing the input value.\n\nThe input is based on expf/exp2f benchmark (reduced trace based on 2.4\nbillion samples extracted from specpu2017 521.wrf_r benchmark).\n\nTest: ran 32-bit and 64-bit x86 tests on host\n"
    },
    {
      "commit": "32bc0fcf69dfccb3726fe572833a38b01179580e",
      "tree": "abca656f500087493e0997d5cf38cbcc9ec98eb8",
      "parents": [
        "65f82092a17518080178ff7004cc6db362ebfbcd"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 17:31:13 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 18:09:44 2018 -0700"
      },
      "message": "Modernize codebase by replacing NULL with nullptr\n\nFixes -Wzero-as-null-pointer-constant warning.\n\nTest: m\nBug: 68236239\nChange-Id: I5b4123bc6709641315120a191e36cc57541349b2\n"
    },
    {
      "commit": "d5ee4c5fb70661f919cb8edf96212202c4c3f5f4",
      "tree": "6786a48ecb7e88965bfd3cef9f6bef9ac7292a60",
      "parents": [
        "1d7c04c20ad640c41990cef1e04c99520b5a18eb"
      ],
      "author": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Fri Jul 06 15:55:25 2018 -0700"
      },
      "committer": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Sat Jul 07 04:14:22 2018 +0000"
      },
      "message": "Change args to int64_t\n\nThe new benchmark framework uses int64_t for args.\n\nRelated benchmark change:\nhttps://github.com/google/benchmark/commit/9913418d323e64a0111ca0da81388260c2bbe1e9#diff-b9f55422dc0bd52759c6aaa25c305bb0R757\n\nUpgrade benchmark framework:\nhttps://android-review.googlesource.com/c/platform/external/google-benchmark/+/714118\n\nTest: compile and run bionic benchmark\nChange-Id: I1b81c853c28abbead1816bf0be7a20a35e036619\n"
    },
    {
      "commit": "7871ca1075fffd2102147c1e75325b692d9a1d28",
      "tree": "94398994b380c3abc4c71181b46a7cd6d6307a01",
      "parents": [
        "ff5a353112d4d091a70b56304bddaa624e30e0ae"
      ],
      "author": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Fri Jun 08 11:18:32 2018 -0300"
      },
      "committer": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Tue Jun 19 11:34:54 2018 -0300"
      },
      "message": "Add sinf/cosf/sincosf benchmark\n\nSimilar to expf/exp2f, this patch add two benchmarks for sinf, cosf, and\nsincosf: one which measures thoughput as default and one which measures\nlatency.\n\nThe input in 512 random value divided in 8 ranges:\n\n  1. 0.0 \u003c\u003d x \u003c 0.1\n  2. 0.1 \u003c\u003d x \u003c 0.7\n  3. 0.7 \u003c\u003d x \u003c 3.1\n  4. -3.1 \u003c\u003d x \u003c 3.1\n  5. 3.3 \u003c\u003d x \u003c 33.3\n  6. 100.0 \u003c\u003d x \u003c 1000.0\n  7. 1e6 \u003c\u003d x \u003c 1e32\n  8. 1e32 \u003c x \u003c FLT_MAX\n\nTest: ran 32-bit and 64-bit x86 tests on host\nChange-Id: I92bc2f1fac911c573c5122911d08ca590311578a\n"
    },
    {
      "commit": "ff5a353112d4d091a70b56304bddaa624e30e0ae",
      "tree": "90ec52ae13be7aa37a8ec53fc00cd11d63d43a26",
      "parents": [
        "872c8b51331bba20e81a4563a901e2faf319cb69"
      ],
      "author": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Tue Jun 05 15:47:06 2018 -0300"
      },
      "committer": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Tue Jun 19 11:34:54 2018 -0300"
      },
      "message": "Add logf and log2f benchmark\n\nSimilar to expf/exp2f, this patch add two benchmarks for logf and log2f:\none which measures thoughput and one which measures latency.\n\nThe input data is based on a reduced trace based on 2.8 billion samples\nextracted from specpu2017 521.wrf_r benchmark.\n\nTest: ran 32-bit and 64-bit x86 tests on host\nChange-Id: If4fbd7eb3d40f8e155935149a82f162b222d5506\n"
    },
    {
      "commit": "872c8b51331bba20e81a4563a901e2faf319cb69",
      "tree": "22d0f85cef9efb8693325f0780ebd417ab742346",
      "parents": [
        "357f6c1b474065070e9cfd5a07baf10041337fde"
      ],
      "author": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Tue Jun 05 13:57:03 2018 -0300"
      },
      "committer": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Tue Jun 19 11:34:54 2018 -0300"
      },
      "message": "Add powf benchmark\n\nAs for expf/exp2f benchmark, this patch add two benchmark for powf:\none which measures thoughput and one which measures latency.\n\nThe input data is based on a reduced trace from 2.3 billion samples\nextracted from specpu2017 521.wrf_r benchmark.\n\nTest: ran 32-bit and 64-bit x86 tests on host\nChange-Id: Id8943d90dd5452146e55fb75708daaf7bf0e25fa\n"
    },
    {
      "commit": "357f6c1b474065070e9cfd5a07baf10041337fde",
      "tree": "7b2f980a17419fbf054c187201dc7df4162a575d",
      "parents": [
        "520ad0cae8f68166ca323c07ab704e5fbdc4f655"
      ],
      "author": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Tue Jun 05 09:28:40 2018 -0300"
      },
      "committer": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Tue Jun 19 11:34:54 2018 -0300"
      },
      "message": "Add expf and exp2f benchmark\n\nThis patch add two benchmarks for both expf and exp2f, one which\nmeasures thoughput, as default, and one which measures latency. The\nlatency benchmark works by creating a dependency on the previous\niteration and with a zero multiply to avoid changing the input value.\n\nThe input is based on a reduced trace based on 2.4 billion samples\nextracted from specpu2017 521.wrf_r benchmark.\n\nTest: ran 32-bit and 64-bit x86 tests on host\nChange-Id: Ic0d40cc4977dd6875fb7431146fc38ea0e6e0bc2\n"
    },
    {
      "commit": "e332f658e0ee33a799b204640b2d79590500b039",
      "tree": "ebf1acc64da70be14e81b050c788969c73463724",
      "parents": [
        "0364a4b44671abd016e10b0cf3a0927ae2f77592"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 08 15:07:43 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 09 12:25:12 2018 -0700"
      },
      "message": "Switch to FreeBSD\u0027s actual sincos.\n\nBefore:\n  BM_math_sin_fast                48 ns         48 ns   14693053\n  BM_math_sincos                  61 ns         61 ns   11470219\n\nAfter:\n  BM_math_sin_fast                48 ns         48 ns   14725120\n  BM_math_sincos                  43 ns         43 ns   16329843\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: I8693c64135233c0641af5302c38748f47ac76737\n"
    },
    {
      "commit": "bfb7c761d41a3ab9fd1cf20f256e7c4e14508c7b",
      "tree": "4151c5f2eb928e1248ca4a4bbfba25dd827474e0",
      "parents": [
        "7eb976e00db4c0cd7cff7468298fdce2d7682730"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 04 13:27:47 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 04 17:34:35 2018 -0700"
      },
      "message": "Fix bug in --bionic_cpu option handling.\n\nMake sure that all the variables are properly initialized.\n\nRemove the code that verifies the core to enable using get_schedaffinity\nsince that make it impossible to change the cpu for different tests.\n\nChange the cpu_to_lock to an int, it really didn\u0027t need to be a long.\n\nFix a few missing tests.\n\nTest: Ran unit tests.\nTest: Built the tests and ran on different cpus, verifying that the\nTest: chosen cpu was correct.\nTest: Created an xml file that had different cpus for different tests\nTest: and verified that it locked to each cpu properly.\nChange-Id: Ie7b4ad8f306f13d6e968d118e71bb5dc0221552a\n"
    },
    {
      "commit": "ee8e3dd67c910907115c7cef87be3d898d71a05d",
      "tree": "022d9c97d9bdc95c34dbf0052b8dcf9ce394bc46",
      "parents": [
        "44c7b6ad0ac277a8ed3ee2278f6c1ee23f130ab5"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Feb 21 15:01:22 2018 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Feb 21 15:10:17 2018 -0800"
      },
      "message": "Remove non-trivial constructors/destructors from SystemProperties\n\nWith the goal of disallowing exit time destructors, SystemProperties\u0027s\nnon-trivial destructor needs to be removed.  This means replacing the\nunion hack with yet another hack as we don\u0027t want to allocate anything\ndespite relying on some polymorphism.\n\nBug: 73485611\nTest: boot bullhead\nChange-Id: I64223714c9b26c9724bfb8f3e2b0168e47b56bc8\n"
    },
    {
      "commit": "cbc80ba9d839675a0c4891e2ab33f39ba51b04b2",
      "tree": "0b24e6123c94bd3e61d94fd6eca6a3b9cc9b074e",
      "parents": [
        "3374d0cabb973ff2b73ad8cd909389bdeed18658"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 14:26:29 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 14:27:17 2018 -0800"
      },
      "message": "Switch the rest of our internal headers to #pragma once.\n\nWe\u0027ve been using #pragma once for new internal files, but let\u0027s be more bold.\n\nBug: N/A\nTest: builds\nChange-Id: I7e2ee2730043bd884f9571cdbd8b524043030c07\n"
    },
    {
      "commit": "d50a1de565c00d415ad39ef8c14e392da4c99d43",
      "tree": "011e021bbb021d83634d00ffa3255ebd7d468cfe",
      "parents": [
        "a70089163ca09a983772dd2a8daa17e47f8ede53"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 05 17:30:57 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 05 17:30:57 2018 -0800"
      },
      "message": "Run bpfmt manually.\n\nBug: N/A\nTest: builds\nChange-Id: I0cf145c3b699ac8ef170a63366832f63a9cc1a91\n"
    },
    {
      "commit": "5a00ba7c1c5d563b58255257898fe0a5903933eb",
      "tree": "083ed71cdeb769c6de53fd333ca249ff77ab8f3d",
      "parents": [
        "2e2a8930e5f9eb2d9ea4fdb61f746c6f2e2048ac"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jan 26 17:32:31 2018 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Feb 01 16:01:46 2018 -0800"
      },
      "message": "Support priority inheritance mutex in 32-bit programs.\n\nAdd fast path calling PIMutexTryLock() in pthread_mutex_lock.\nAdd trace for pi mutex waiting.\n\nBug: http://b/29177606\nTest: run bionic-unit-tests.\nTest: run bionic-benchmarks.\n\nChange-Id: I30b6436692d5ea6b63ca9905df745edb843b5528\n"
    },
    {
      "commit": "6b9c85b36d2e69b45d780e6a0b27d64909311a7e",
      "tree": "eff21cc7000bc125f5c91f0d90819fd778be371f",
      "parents": [
        "73871ad09be8a8259171d606c4e3e3cf08d4733c"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 23 12:56:18 2018 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Jan 24 16:11:07 2018 -0800"
      },
      "message": "Support priority inheritance mutex in 64bit programs.\n\nBug: http://b/29177606\nTest: run bionic-unit-tests on walleye.\nTest: run bionic-unit-tests-glibc on host.\nChange-Id: Iac349284aa73515f384e7509445f87434757f59e\n"
    },
    {
      "commit": "5cec377f49d6429b19895eb632225cd757ea611e",
      "tree": "bcd08fe1e6b656a5a4e235a225fbe88feb54a112",
      "parents": [
        "0d63a3c233040af004cc470d5f76547f3adc0148"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:45:23 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:56:12 2018 -0800"
      },
      "message": "Address a bunch of clang-tidy complaints.\n\nThere were a bunch more unreasonable/incorrect ones, but these ones\nseemed legit. Nothing very interesting, though.\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: If66971194d4a7b4bf6d0251bedb88e8cdc88a76f\n"
    },
    {
      "commit": "4c5fde0e5e1e20ae265095332f0ce96745300566",
      "tree": "8f5ed6d15abb593d7fd58eaab221a98740f8257d",
      "parents": [
        "f9fcb1efae7458109b13260d7a7f8db939a1aa2c"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 08 16:13:14 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 08 16:13:14 2018 -0800"
      },
      "message": "Remove workaround for running property tests.\n\nAlso fix the tests for some missing benchmarks that have been\nadded recently.\n\nTest: Ran bionic benchmarks tests and all pass.\nTest: Ran bionic benchmarks to verify that there are no crashes.\nChange-Id: I8501553e8a229c0c6ea81e894e91ac2f5f2fe26c\n"
    },
    {
      "commit": "811a1dd8680ccc0c052651cb30ecf6416613c627",
      "tree": "93dd4a04aa83621c23e4fb953fb421134fa1a97d",
      "parents": [
        "ba69b37a75a793a5c534c6e53d2958770fa54786",
        "7063a838be5eb1f28f40a554944a31bab49c3211"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 19 20:23:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 19 20:23:39 2017 +0000"
      },
      "message": "Merge \"More benchmarks.\""
    },
    {
      "commit": "7063a838be5eb1f28f40a554944a31bab49c3211",
      "tree": "6f498b51428018eac4a519f7624b9e8131433433",
      "parents": [
        "721a5305e24b69b68ecc9431526f32131abc8f6c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 19 08:55:40 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 19 08:55:40 2017 -0800"
      },
      "message": "More benchmarks.\n\nAdd a hand-rolled maps line parser as something to compare our realistic\nsscanf benchmark against. Also add benchmarks for the ato*/strto* family.\n\nThis patch doesn\u0027t fix the tests, which seem to have been broken by\nthe recent google-benchmark upgrade despite the benchmarks themselves\nall working just fine. To me that\u0027s a final strike against these tests\nwhich are hard to maintain and not obviously useful, but we can worry\nabout what to do with them -- whether to just delete them or to try to\nturn them into tests that actually have some value -- in a separate CL.\n\nBug: N/A\nTest: ran benchmarks\nChange-Id: I6c9a77ece98d624baeb049b360876ef5c35ea7f2\n"
    },
    {
      "commit": "e275d6d72db1868056a204e8483a7346a28cb8d6",
      "tree": "3191e33ca242518f7d486c6b37212c7f682498b0",
      "parents": [
        "721a5305e24b69b68ecc9431526f32131abc8f6c"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Dec 11 23:31:33 2017 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Dec 18 15:17:55 2017 -0800"
      },
      "message": "Split properties into their own class to make testing better\n\nReinitializing system properties can result in crashes later in the\nprogram, and is generally not recommended or even supported.  This\nchange moves the actual logic for system properties into a class that\ncan be tested in isolation, without reinitializing the actual system\nproperty area used in libc.\n\nBug: 62197783\nTest: boot devices, ensure properties work\nTest: system property unit tests and benchmarks\nChange-Id: I9ae6e1b56c62f51a4d3fdb5b62b8926cef545649\n"
    },
    {
      "commit": "3b644e932a9a1e9f08ce27002c9a2803d5d74ef6",
      "tree": "15e60803da99f7b6802a90885fa60e1b5ee2ba41",
      "parents": [
        "4940a24a1146f3a3f03925ebc1b090028e42e49f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 11 14:43:52 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 11 14:46:22 2017 -0800"
      },
      "message": "Trivial scanf benchmarks.\n\nBug: http://b/68672236\nTest: ran benchmarks\nChange-Id: I96514be5e67969b65205e953051c524be3626ec4\n"
    },
    {
      "commit": "6f9c35ded294ca7b0b8f9042f705cbfca1ec8518",
      "tree": "0e6baac52e0ddd5b8d6fe250285db3484728efe0",
      "parents": [
        "6ffa10f4830f7831453b1051e7b86358a728240f"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 07 13:48:46 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Dec 07 09:41:31 2017 -0800"
      },
      "message": "bionic: benchmark: add clock_getres performance tests\n\nProvide a means to check vdso kernel performance for all reasoned\ncombinations of clock_getres, same set of ids as clock_gettime.\n\nAdd to suites/vdso.xml\n\nTest: /data/nativetest{64}/bionic-benchmarks-tests/bionic-benchmarks-tests\n      /data/benchmarktest{64}/bionic-benchmarks/bionic-benchmarks \\\n        --bionic_xml\u003dvdso.xml --benchmark_filter\u003dBM_time_clock_getres*\nBug: 63737556\nChange-Id: I11ea200f67aec2a2f6ad9284960f2941298da222\n"
    },
    {
      "commit": "6ffa10f4830f7831453b1051e7b86358a728240f",
      "tree": "231cce187b4d866b5192f7bd9e5d5b9f04695ea4",
      "parents": [
        "78b40e8fe1f37de319344c92d8e6e1eb595c1067"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 07 13:47:48 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Dec 07 09:41:13 2017 -0800"
      },
      "message": "bionic: benchmark: additional clock_gettime performance tests\n\nProvide a means to check vdso kernel performance for each of\nCLOCK_MONOTONIC (current), CLOCK_MONOTONIC_COARSE,\nCLOCK_MONOTONIC_RAW, CLOCK_REALTIME, CLOCK_REALTIME_COARSE,\nCLOCK_BOOTTIME.\n\nAdd a suites/vdso.xml to select subset of tests impacted by\nvdso implementations.\n\nTest: /data/nativetest{64}/bionic-benchmarks-tests/bionic-benchmarks-tests\n      /data/benchmarktest{64}/bionic-benchmarks/bionic-benchmarks \\\n        --bionic_xml\u003dvdso.xml --benchmark_filter\u003dBM_time_clock_gettime*\nBug: 63737556\nChange-Id: Ibc48e838e50929527ce8d221dd1a608bf185cbc2\n"
    },
    {
      "commit": "e2188d460b9356b84ec3a9113f03f0dd7ff43d32",
      "tree": "35c8d707b9833ec426cf5c442f60a5e4e4779bcd",
      "parents": [
        "fdacec1d4237373354d10c5a400c9c7a3a975285"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Nov 08 23:28:57 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 30 15:49:45 2017 -0800"
      },
      "message": "Add new benchmark options.\n\nAdd a bunch of extra options to allow greater flexibility for creating\nbenchmarks. Add a pattern option that can be used to represent any\none buffer or two buffer possibility. This should fully replace the\nfunctionality of microbench.\n\nAdd a single option for one buffer benchmarks and two buffer benchmarks\nthat represents all of the possible options to run a string benchmark.\n\nAdd a string test suite that includes all string benchmarks using the\nabove option.\n\nTest: New unit tests to cover all the new options, and all pass.\nTest: Ran new string test suite with a single bionic iteration.\nChange-Id: Idb13ea15e44cec626e9f46672ccd648d7ca72ba6\n"
    },
    {
      "commit": "858e33698d947a686fa59ed0206ce7c6656d3439",
      "tree": "74da61c257264c74bb683c5a7d7e0d387b53ac50",
      "parents": [
        "27d4977f1f4d0b4cbd67bd0cfc29d4d8cfff96f1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 30 08:53:15 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 30 09:09:41 2017 -0800"
      },
      "message": "Generate all the benchmarks to run.\n\nInstead of requiring the need to maintain a list of all the benchmarks,\nadd a programmatic way to generate all of the benchmarks.\n\nThis generation runs the benchmarks in alphabetical order.\n\nAdd a new macro BIONIC_BENCHMARK_WITH_ARG that will be the default argument\nto pass to the benchmark. Change the benchmarks that require default arguments.\n\nAdd a small example xml file, and remove the full.xml/host.xml files.\n\nUpdate readme.\n\nTest: Ran new unit tests, verified all tests are added.\nChange-Id: I8036daeae7635393222a7a92d18f34119adba745\n"
    },
    {
      "commit": "ad05730143cc2dbd38df869431a0ee461495fce3",
      "tree": "8aae8f6523dbd842a89bbcd86eafc99428597b31",
      "parents": [
        "8574a1f63082240c92945cff15fba785a5a857e7"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Nov 07 15:18:33 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Nov 07 15:18:33 2017 -0800"
      },
      "message": "Fix bionic benchmark unit tests.\n\nTest: Ran unit tests.\nChange-Id: I729572b101c7011cde5e7da4a72af7ede719b76b\n"
    },
    {
      "commit": "5305a4d4a723b06494b93f2df81733b83a0c46d3",
      "tree": "e2de767071618925487ca8b8ba2da4d7aac62fce",
      "parents": [
        "232541aa02e22ab8fafcdd503c74aae22fa09699"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 03 14:00:37 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 03 14:19:00 2017 -0700"
      },
      "message": "10x printf speedup.\n\nAndroid is UTF-8. Don\u0027t make everyone pay to convert UTF-8 to ASCII just\nso we can recognize \u0027%\u0027. With UTF-8 we can just strchr forwards.\n\nBefore:\n\n  ---------------------------------------------------------------\n  Benchmark                        Time           CPU Iterations\n  ---------------------------------------------------------------\n  BM_stdio_printf_literal       1290 ns       1290 ns     442554\n  BM_stdio_printf_s             1204 ns       1204 ns     582446\n  BM_stdio_printf_d             1206 ns       1206 ns     578311\n  BM_stdio_printf_1$s           2263 ns       2263 ns     310002\n\nAfter:\n\n  ---------------------------------------------------------------\n  Benchmark                        Time           CPU Iterations\n  ---------------------------------------------------------------\n  BM_stdio_printf_literal        178 ns        178 ns    3394001\n  BM_stdio_printf_s              246 ns        246 ns    2850284\n  BM_stdio_printf_d              252 ns        252 ns    2778610\n  BM_stdio_printf_1$s            363 ns        363 ns    1929011\n\nAdd missing __find_arguments error checking to the wide variant to match\nthe regular one.\n\nAlso replace various char/wchar_t differences with the macro.\n\nBug: http://b/67371539\nTest: ran tests\nChange-Id: I18f122009c22699943ab5d666a98ea594a972c40\n"
    },
    {
      "commit": "928059907bb5d594472687d1d05266158d317bb8",
      "tree": "afafcf66e8c2f9cc80a01643ae20cfd7f88d95ad",
      "parents": [
        "c6291b081d2089ba7a16d7777fb2713d828d537f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 26 15:41:49 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 26 15:43:34 2017 -0700"
      },
      "message": "Add basic printf benchmarks.\n\nBug: http://b/67371539\nTest: ran benchmarks\nChange-Id: I6ad05540079776b2df4cc8d9c02440c61e42037d\n"
    },
    {
      "commit": "286b3a8b2d071ee2652232b923770757f0647468",
      "tree": "e10a2b83141f4ce4af53fd8e4318103ad884c714",
      "parents": [
        "d330bbbac846d0dfbc797ca594bc69f3442494d1"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Oct 24 14:00:09 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Oct 24 14:02:54 2017 -0700"
      },
      "message": "Fix pthread benchmarks.\n\nPauseTiming and ResumeTiming are thread-local, and unbalanced calls to\nthem leads to obviously bogus results like:\n\n    Benchmark                          Time            CPU Iterations\n    -----------------------------------------------------------------\n    BM_pthread_exit_and_join      212600 ns    59981418 ns         12\n    BM_pthread_create_and_run  212997341 ns -1569132344 ns       1000\n\nBug: http://b/68170209\nTest: ran bionic benchmarks\nChange-Id: Ia88cd6af9ff524443850d834a96cf5dd9c7f3ed9\n"
    },
    {
      "commit": "5c6a7bf0dc821bcaa49d5289f01360f8dd78aa86",
      "tree": "3c535768b792308647f3c7294d72799b2b70fb4d",
      "parents": [
        "ab9dc08bdd60d3709e1bce555625d923b32812be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 19 13:56:28 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 19 14:15:31 2017 -0700"
      },
      "message": "Remove some legacy declarations from \u003cmath.h\u003e.\n\nThese are still needed for backwards compatibility with code built by old\nversions of the NDK, but we don\u0027t need to pollute the headers with them.\n\nAlso lose the hand-written code for these. The compiler-generated code\nis either the same or better, and no new code is calling these functions\nanyway.\n\nBug: N/A\nTest: ran tests\nChange-Id: Ib01ad9805034433e0105aec882608cc8e6526f78\n"
    },
    {
      "commit": "ae407e522a49cb2863ed69ad80a37ba789113b03",
      "tree": "33efe6ee9eced0de5f507b6066e54d0e29ca69be",
      "parents": [
        "b736c41ffe42f84ce8f74ce89368f07ff97924c5"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Sep 28 16:14:54 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Sep 28 16:16:14 2017 -0700"
      },
      "message": "Remove default libraries\n\nlibdl is part of system_shared_libs now. -ldl -lpthread -lm are now defaults\nfor host_ldlibs on Linux and Darwin. -lrt is a default for host_ldlibs on\nLinux.\n\nTest: m host\nTest: mmma bionic\nChange-Id: I966e2f88c24fba5e412bee6b6382045a2026a8e4\n"
    },
    {
      "commit": "0bfcbaf4d069e005d6e959d97f8d11c77722b70d",
      "tree": "c1c11870e6184884cf8f2dc6cf9cdf250cf5abde",
      "parents": [
        "8468a1be012f485c4f6579204704b52f5409cdc2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 28 09:18:34 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 29 11:07:36 2017 -0700"
      },
      "message": "Add new status document, based on internal wiki.\n\nAlso start breaking up the monolithic top level README.md, pulling the\n32-bit ABI stuff out into its own file, and moving the remaining benchmark\ndocumentation in with the rest of the benchmark documentation.\n\nBug: N/A\nTest: N/A\nChange-Id: Ic1b9995e27b5044199ed34883cc0b8faa894df0e\n"
    },
    {
      "commit": "814359a88053aa4eb80e2e0b8118ed88b44d3ec4",
      "tree": "2fbc1222ca095a3e5a3ea357f15f2b143228c4ca",
      "parents": [
        "571c88823636e3c6f894e806ea7c4dc8131a1ae4"
      ],
      "author": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Fri Aug 11 16:07:18 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Aug 25 10:41:38 2017 -0700"
      },
      "message": "Update the bionic benchmarks documentation.\n\nTest: NA\nChange-Id: I6b804a1655b5cb76f189366070d478680f40c5d1\n"
    },
    {
      "commit": "d9d39be0f0716eea1127b95be5c0b8155122fbd4",
      "tree": "44b29ea650d690588b3d87f0a8b559ebf2b77dd1",
      "parents": [
        "8e410a73d411a1dfe0a5074c9f956adfae361027"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Aug 23 18:03:51 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 24 14:50:03 2017 -0700"
      },
      "message": "A few small fix ups.\n\n- Add a default xml file to run if nothing is specified on the command-line.\n- Add a way to specify a xml file in suites without having to specify the\n  full path name.\n- Move all of the test xml files into their own directory.\n- Add the suites directory for to glibc benchmarks.\n- Add a new test for help data.\n- Modify the full suite test to verify the default xml is chosen and use\n  the real full.xml instead of the test one. Delete the test_full.xml.\n- Move the property tests to the end of the suite.\n- Add skipping of xml comments.\n\nTest: Ran the unit tests and ran the bionic benchmarks.\nChange-Id: Ie99965f86fe915af0175de46c7780ab79e2b0843\n"
    },
    {
      "commit": "8e410a73d411a1dfe0a5074c9f956adfae361027",
      "tree": "ee5d992a23fba77d9220eaa9a4a04705e50020ab",
      "parents": [
        "506f3f11f135039f3662ba183605bb194824aa57",
        "4b26f71778b446bb2da1592b20bcfa281d706c89"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 24 17:01:56 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 24 17:01:56 2017 +0000"
      },
      "message": "Merge \"Fix local path assumption in interface_test.\""
    },
    {
      "commit": "938bece9e0c5d7d67d137dbfbba1e2d244c95b35",
      "tree": "cb655541a4b96f3af5c854a80793af05833235b5",
      "parents": [
        "57e07a150e536f79d78f8203b0c807087b5c854b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 23 09:52:50 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 23 14:03:43 2017 -0700"
      },
      "message": "Benchmark fgetln(3) and getline(3) as well as fgets(3).\n\nOn Pixel 2016, there\u0027s about 1us overhead for getline versus\nfgets. fgetln(3) is worse still because of the intermediate buffering\n(though it might actually be better if you were only reading one line\nwhose length was less than BUFSIZ).\n\nAlso use somewhat realistic input for these benchmarks: /dev/zero makes\nno sense at all.\n\nBug: N/A\nTest: ran benchmarks\nChange-Id: I4a319825a37ac3849014c4c6b31523c1e200c641\n"
    },
    {
      "commit": "d706fe5f9e83707901389914c77afa69c19e07e6",
      "tree": "dffb701fa9e822f6c45c2d14d711e51d1701e22a",
      "parents": [
        "096fa4497c50cffdb56f06d7038adbeb3c1254d6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 22 15:26:07 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 23 00:05:21 2017 +0000"
      },
      "message": "Fix the stdio fwrite benchmark.\n\nCan\u0027t write to a read-only file. (Mode \"rw\" isn\u0027t meaningful, but isn\u0027t\nconsidered an error by any libc I know of.)\n\nBug: http://b/64585477\nTest: ran benchmarks\nChange-Id: Ifec1d68414bfc8f3cc8d7f912cb135dccb2e7a41\n"
    },
    {
      "commit": "4b26f71778b446bb2da1592b20bcfa281d706c89",
      "tree": "f374e351a0a7494ac8f16e844ebddff343c3ad39",
      "parents": [
        "30438e4cea83628bcacbedff37a35398bb8b40e7"
      ],
      "author": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Fri Aug 11 15:56:18 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Aug 15 11:04:44 2017 -0700"
      },
      "message": "Fix local path assumption in interface_test.\n\nAlso fix a couple of other issues with the tests.\n\nTest: Unit tests.\nChange-Id: I6c2b2b5fad487460441487cc231a0e4a8d3897c7\n"
    },
    {
      "commit": "30438e4cea83628bcacbedff37a35398bb8b40e7",
      "tree": "d0dab96c8f737ae4058b1e144ced6418823b5b77",
      "parents": [
        "73c3be22199a42bed53245b9b648e276de0b6422",
        "a98a5fb63ee00bbd7f1663192453efcdf117cb92"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Aug 11 02:04:47 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 11 02:04:47 2017 +0000"
      },
      "message": "Merge \"Improve error handling and fix minor bugs in bionic benchmarks.\""
    },
    {
      "commit": "73c3be22199a42bed53245b9b648e276de0b6422",
      "tree": "6c592e09bd57616bd84d32efce96645ee8a25094",
      "parents": [
        "cf764c05e43921e4d3f927a5eaca1c6ecafe046b",
        "ac4f4b43a3d19f40fc1138c5f78a3d5afd535935"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 10 23:44:04 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 10 23:44:04 2017 +0000"
      },
      "message": "Merge \"Add musl benchmarks.\""
    },
    {
      "commit": "a98a5fb63ee00bbd7f1663192453efcdf117cb92",
      "tree": "ca3ade0c20e9bb89f76e4ae37e9d3fde00a264f1",
      "parents": [
        "ac4f4b43a3d19f40fc1138c5f78a3d5afd535935"
      ],
      "author": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Wed Aug 09 16:52:19 2017 -0700"
      },
      "committer": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Wed Aug 09 17:24:13 2017 -0700"
      },
      "message": "Improve error handling and fix minor bugs in bionic benchmarks.\n\nTest: Unit tests.\nChange-Id: I224ae4c7f195176eb8a87deddb2debcbf0f24ba3\n"
    },
    {
      "commit": "ac4f4b43a3d19f40fc1138c5f78a3d5afd535935",
      "tree": "383382ddc413b182c7b84cab5c2e47004bfd9470",
      "parents": [
        "a7b0f8899790198cd9e72950f481679fe31e1a92"
      ],
      "author": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Tue Aug 08 18:29:51 2017 -0700"
      },
      "committer": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Wed Aug 09 15:26:37 2017 -0700"
      },
      "message": "Add musl benchmarks.\n\nTest: Unit tests.\nChange-Id: Ifb2911825f84b95fe64a803bfabd32fb81210eae\n"
    },
    {
      "commit": "c2223f746c7342945a6bf80b1b635250d53746a1",
      "tree": "9cd7a2af7c7a10fd54449a280d96b352ffb2fab3",
      "parents": [
        "ebbbe292bd2657b98007f3b6d0405686c1c646b8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 08 11:23:27 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 08 11:23:27 2017 -0700"
      },
      "message": "Track tinyxml2 API change.\n\nBug: http://b/64459264\nTest: builds\nChange-Id: I02206b9d40571f306ce712345a36c2754ac73a97\n"
    },
    {
      "commit": "a7b0f8899790198cd9e72950f481679fe31e1a92",
      "tree": "4167c3afc82ffb281f43ef2332a60c675f121e43",
      "parents": [
        "0d6485eca47f0e860486795b2da97679948fd5d5"
      ],
      "author": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Mon Jul 24 20:01:13 2017 -0700"
      },
      "committer": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Mon Aug 07 13:16:09 2017 -0700"
      },
      "message": "Implement interface for bionic benchmarks.\n\nTest: Unit tests.\nChange-Id: Ic61932f61ddd572e2f045b601f9da6e090cdc45d\n"
    },
    {
      "commit": "5fc1f6e887b980facb96a8a5d7629c3f6aa285da",
      "tree": "6795905e2f4d90c6023429a43733caa94979bc37",
      "parents": [
        "b1e4cc31a4badad7f224c01c78f286381d72d929"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 12 23:10:07 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 12 23:10:07 2017 -0700"
      },
      "message": "Really fix the mac build.\n\nI forgot an underscore.\n\nTest: Builds.\nChange-Id: Ib7da13dea315822af89c53a569fb0a0c2fd5d321\n"
    },
    {
      "commit": "bad43c7af4ceea35c6eca993426459c0e6f8262e",
      "tree": "9cecb669fc34a743e3ca6e5d239cd8f625c670c8",
      "parents": [
        "61b7e114dde1230f4f4e9e6f6f401eeb18ecce60"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 12 19:33:32 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 12 19:33:54 2017 -0700"
      },
      "message": "Fix max build.\n\nTest: Built properly.\nChange-Id: I37b8ac7d42653617be6611b640a883066257214c\n"
    },
    {
      "commit": "61b7e114dde1230f4f4e9e6f6f401eeb18ecce60",
      "tree": "b1344e9ac93091c8c63722f12e19279b874f6caa",
      "parents": [
        "3537331942cdebab5ab53104b852c997a9bc0be5",
        "f4447b9105f2d42acd2bbe0ba1c602ef3562b681"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 12 22:56:13 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 12 22:56:13 2017 +0000"
      },
      "message": "Merge \"Support memory alignment tests for string_benchmark.cpp\""
    },
    {
      "commit": "f4447b9105f2d42acd2bbe0ba1c602ef3562b681",
      "tree": "74a80edf3fb9f0f025e1a1dff79659dc514dc67b",
      "parents": [
        "42edca036e5c9ed24017de5fba41d5d1feda61d0"
      ],
      "author": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Fri Jun 23 15:53:59 2017 -0700"
      },
      "committer": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Wed Jul 12 13:42:23 2017 -0700"
      },
      "message": "Support memory alignment tests for string_benchmark.cpp\n\nTest: Manually verify that benchmark times are similar and add a unit test.\nChange-Id: Idaaeb4c8c3629f797ffd8d0c86c8d7b7b9653181\n"
    },
    {
      "commit": "705910094d07ddfc5a3b7a4baab58b0a94bcc691",
      "tree": "f503093f7f1675566233ac00bda745b8a9bcf714",
      "parents": [
        "82d746fb39465e78088aeb11a5dc178cf264d0c0"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Jun 27 16:23:45 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Jun 28 15:03:15 2017 -0700"
      },
      "message": "bionic: fix assorted static analyzer warnings\n\nWarnings:\n\nbionic/libc/bionic/fts.c:722:5: warning: Null passed to a callee that\nrequires a non-null 1st parameter\n\nbionic/libc/bionic/sched_cpualloc.c:34:25: warning: Result of \u0027malloc\u0027\nis converted to a pointer of type \u0027cpu_set_t\u0027, which is incompatible\nwith sizeof operand type \u0027unsigned long\u0027\n\nbionic/linker/linker_main.cpp:315:7: warning: Access to field \u0027e_type\u0027\nresults in a dereference of a null pointer (loaded from variable\n\u0027elf_hdr\u0027)\n\nbionic/linker/linker_main.cpp:493:66: warning: Access to field \u0027e_phoff\u0027\nresults in a dereference of a null pointer (loaded from variable\n\u0027elf_hdr\u0027)\n\nbionic/linker/linker_main.cpp:90:14: warning: Access to field \u0027next\u0027\nresults in a dereference of a null pointer (loaded from variable \u0027prev\u0027)\n\nBug: None\nTest: mma; analyzer warnings are gone. CtsBionicTestCases pass.\nChange-Id: I699a60c2c6f64c50b9ea06848a680c98a8abb44a\n"
    },
    {
      "commit": "1c487e103618b7e4e3480f59375761e94ce80d2a",
      "tree": "52a2acc40d89e503ef3c217423f8c2e89604b6c7",
      "parents": [
        "a99d052801be5618465e5532440711e61f9b89fc"
      ],
      "author": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Mon Jun 12 12:33:06 2017 -0700"
      },
      "committer": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Wed Jun 14 17:51:54 2017 -0700"
      },
      "message": "Add benchmarks for strcpy and strcmp.\n\nTest: Ran benchmarks and verified that runtimes were sensible.\nChange-Id: I609e3261503a015bfd4982767fef3ce56141aebc\n"
    },
    {
      "commit": "a99d052801be5618465e5532440711e61f9b89fc",
      "tree": "384f352dba6d63ad84caaf5257f5b3cc0827d97a",
      "parents": [
        "271be9bb7df6f3910a929ef7bff55fbd9bc2dee6"
      ],
      "author": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Mon Jun 12 11:24:01 2017 -0700"
      },
      "committer": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Wed Jun 14 15:13:50 2017 -0700"
      },
      "message": "Add copy-only, seek-only, and copy-and-seek benchmarks for strcat\n\nTest: Ran benchmarks and verified that runtimes were sensible.\nChange-Id: I6da3aaea0ba4817662534b24873993589385e6c5\n"
    },
    {
      "commit": "271be9bb7df6f3910a929ef7bff55fbd9bc2dee6",
      "tree": "cbada1d44532b8e463156c9d086733c37ebabf3f",
      "parents": [
        "5c76fec2821c9a5228e681ef37525f9b30fa5805"
      ],
      "author": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Wed Jun 07 13:00:38 2017 -0700"
      },
      "committer": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Fri Jun 09 13:30:34 2017 -0700"
      },
      "message": "Split memmove benchmark into separate overlapping (src before dst and dst before src) and non-overlapping tests.\n\nTest: Ran benchmarks and verified that runtimes were sensible.\nChange-Id: Ia7fbc5596dfdc162fff2364f4ef6dafe5549b907\n"
    },
    {
      "commit": "4a92ffd3029e9e38c3a55222676a126db5a3b962",
      "tree": "433d790ddfffcfb36b0b362e8c968ee2e6197a55",
      "parents": [
        "ebceea8e85ad2897a5ce8575b81f18fdd7aa0320"
      ],
      "author": {
        "name": "Victor Khimenko",
        "email": "khim@google.com",
        "time": "Wed Mar 01 20:36:13 2017 +0100"
      },
      "committer": {
        "name": "Victor Khimenko",
        "email": "khim@google.com",
        "time": "Wed Mar 01 20:43:42 2017 +0100"
      },
      "message": "Stop using __system_property_area__\n\nApparently that \"backdoor\" is no longer needed - the proper way is\nto reinitialize properties:\n    https://android-review.googlesource.com/#/c/181794/24/tests/system_properties_test.cpp\n\nAlso removes mentions of libnativehelper test (it no longer uses\n__system_property_area__) and removes useless \"extern\" declaration\n(actual use was removed long ago).\n\nTest: refactoring CL, existsing tests still pass\n\nBUG\u003d21852512\nBUG\u003d34114501\n\nChange-Id: I2223cab2fcb671ea180ad4470a7aba5c9cd20bd8\n"
    },
    {
      "commit": "3f5578708d02ef9a14bfaf5b169e0ecb672c10fd",
      "tree": "951f10d69e44eb7d4e5c2fed0e85405f1fbdfb76",
      "parents": [
        "7844b4c5dbd0be9ea4212a523da2dd6a4804032c"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Jan 23 17:30:44 2017 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Jan 31 10:20:26 2017 -0800"
      },
      "message": "Add \"benchmark\" to time atomic operations\n\nThe intent here is to confirm that the compiler behaves as expected,\nand to guide optimization efforts, particularly where there is a\nchoice between primitives.\n\nTest: Built and ran benchmark on Angler repeatedly. Manually confirmed\nthat the compiler behaves roughly as expected.\n\nChange-Id: I059b245d1ba8296e9b28602559b53eafafe0a30f\n"
    },
    {
      "commit": "ea87716696bf635706b6f3fa56b8a145add83aff",
      "tree": "9d8552a565789486c9d0f7e9057815924c946b90",
      "parents": [
        "940d460f59e566f2d84ea3e114074a50996e76b3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 11 14:34:16 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 11 14:56:04 2017 -0800"
      },
      "message": "localtime_r(3) should act as if it calls tzset(3).\n\nSee code comment.\n\nBug: http://b/31339449\nTest: ran tests \u0026 benchmarks\nChange-Id: I6b6a63750ef41664dc4698207e6a53e77cc28cdf\n"
    },
    {
      "commit": "be763d85c881b58754e650192204e8a2309660cb",
      "tree": "09175cceb1d28d140993c687b4c89abfeac2763d",
      "parents": [
        "b3321c961452f69650e4a6bd2a7db317a80b3234"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Mon Nov 14 14:16:08 2016 +0100"
      },
      "committer": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Tue Nov 15 09:07:11 2016 +0100"
      },
      "message": "Fix deprecated range_x() calls.\n\nTest: builds with new libbenchmark.\nChange-Id: I91c0e5c1b5cf75b8e551f3c59d83ac9352817c4a\n"
    }
  ],
  "next": "2722ebb30b76c9328541c057fa1f5e56a8cedf17"
}
