)]}'
{
  "log": [
    {
      "commit": "620eec1f3546523fab4f58fa6733e7faa34e4fd2",
      "tree": "3ae31082c61a5b445cd5b3c55d68334ece7e20d6",
      "parents": [
        "7b2c6d4d12104fade7bfe8cc49a15cb9b3883ee2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 07 17:59:53 2024 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 07 17:59:53 2024 +0000"
      },
      "message": "Merge \u003csys/system_properties.h\u003e and \u003csys/_system_properties.h\u003e.\n\nYou could argue that some of this stuff (such as the constants used for communication between init and libc that _aren\u0027t_ passed on to callers) should be moved to a new \u003cplatform/system_properties.h\u003e instead, but in the sense of \"exposed to the NDK\" rather than \"useful to NDK users\", all of this is already technically public API.\n\nWe can worry about how to make the platform-only implementation details less visible in documentation if/when we ever actually have the bionic docs generated and published on the web...\n\nChange-Id: I1a6456cf7d301753ec8f541a2046538cd59ed58a\n"
    },
    {
      "commit": "a9d5f9b58c22d1f4d3ad8d2ee776e7c77c2f700b",
      "tree": "f7d5699f0dd6a1c5d446f979e4ac3deeb73f7abb",
      "parents": [
        "2cc50545e2a72c2330b8af48a94ddd9901625e03"
      ],
      "author": {
        "name": "yangbill",
        "email": "yangbill@google.com",
        "time": "Fri Jul 19 02:16:01 2024 +0000"
      },
      "committer": {
        "name": "yangbill",
        "email": "yangbill@google.com",
        "time": "Mon Jul 22 02:29:05 2024 +0000"
      },
      "message": "Update benchmarks/README.md for perf-setup to soong\n\nDue to convert from Android.mk to Android.bp and the perf-setup.sh is\nalready be changed to be by default installed under /vendor/bin/ in eng\nand userdebug mode images.\n\nBug: 343133111\nTest: adb shell perf-setup.sh\nChange-Id: Idfc332e1d2c36d237af73bc8171cb54e20257943\n"
    },
    {
      "commit": "a58871b9129649f243074030ca1a0abfb4425676",
      "tree": "4c90a59d11d563b6595dafb7505e49d9240b3bec",
      "parents": [
        "aa530d55cd07b9db7ec9d1a9f1862988b7e81f0c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 08 21:56:09 2024 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 08 21:56:09 2024 +0000"
      },
      "message": "Also mention our _static_ benchmark binaries.\n\nChange-Id: I8b7649cc470670110f5d8e336f943f74b3dc57c4\n"
    },
    {
      "commit": "fa7fea5ce6cc4262836d9ffb2840a2a079f72104",
      "tree": "d42c2eb4ae4a8bbc10492e6f10e6bbe985f3da21",
      "parents": [
        "b63f4198cd91ed9d8d25c269f99090cc3c2e8a1e",
        "be36fc54a9ecca98d6f0e9cadff1e2e371f9e99b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 03 17:34:23 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 03 17:34:23 2024 +0000"
      },
      "message": "Merge \"Improve the \u003cctype.h\u003e (and \u003cwctype.h\u003e) benchmarks.\" into main"
    },
    {
      "commit": "be36fc54a9ecca98d6f0e9cadff1e2e371f9e99b",
      "tree": "3b6c47e0f526a29212816504dfeacf9d741f993a",
      "parents": [
        "883de33d4269a9626c7e1de4782c449efff20b14"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jul 02 13:46:13 2024 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jul 02 16:42:40 2024 -0700"
      },
      "message": "Improve the \u003cctype.h\u003e (and \u003cwctype.h\u003e) benchmarks.\n\nFrom trying to optimize \u003cctype.h\u003e I\u0027ve realized that our current\nbenchmarks -- by reusing the same single input repeatedly -- are\nbasically just testing the CPU\u0027s branch predictor. And modern branch\npredictors are pretty good. Subvert this by using randomized data\ninstead.\n\nAdded macros to generate the different ctype/wctype versions of the\nbenchmarks.\n\nTest: Ran benchmarks and verified they appear to benchmark the calls.\nChange-Id: I262181ab43e041ce39d9b684071bc945cf996a1c\n"
    },
    {
      "commit": "e0f02b7578a4eec2f223e036e15ca470c4a50cf3",
      "tree": "46eda2adb0bc1312020dc53c3eb57228eadf2e46",
      "parents": [
        "0782929faa7205a2adf4ae30a98188dcc7916ee6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 25 11:22:59 2024 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 25 11:22:59 2024 +0000"
      },
      "message": "The libc++ upgrade means we can use contains() in benchmarks now.\n\nChange-Id: If59daab8d05bda8cc33910327d3949fd7660c1a6\n"
    },
    {
      "commit": "c2a4e891397c8957abd6b418d53ad8e2440eccc1",
      "tree": "ba7093dbad92a3dacda39ebecd7b7730786a45fa",
      "parents": [
        "a13b3b32e06d7c8afc7d19243bbad17f397acba1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 21 15:37:39 2024 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 21 15:37:39 2024 +0000"
      },
      "message": "linker benchmark: our riscv64 toolchain has lga now.\n\nThis doesn\u0027t make any difference, but it does let us delete an obsolete comment.\n\nChange-Id: Ibf81978bb7883e8c6b86c1f6c459ff70bca3f682\n"
    },
    {
      "commit": "3469e7df9b6c762d98c0e390e6d74408265a2e6c",
      "tree": "89362a24e3ea9f936161ce1affa0332d47433377",
      "parents": [
        "3c0173d988fdbdc934a8b992d59b469778016d55"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 15 16:06:07 2024 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 15 16:06:07 2024 +0000"
      },
      "message": "Tidy and document the `inline`/`__inline`/`__inline__` situation.\n\nWe can (and should) use `inline` in C++ but not in C headers that\nneed to support ANSI/C89/C90. `__inline__` works everywhere, but\ntraditionally we\u0027ve used the BSD `__inline` in public headers.\n\nChange-Id: I920e0a1f5fcd01cf8ddd89240ef66b25c50378d7\n"
    },
    {
      "commit": "b2bb21da8dc58478e41961b00074fb1b99666a96",
      "tree": "ecf524a0bf81aadbdc0a462483edc41a8730cedd",
      "parents": [
        "60573deb7242de790f80f1895648152a5ecd148b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 11 16:08:26 2024 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Mar 13 16:59:44 2024 -0700"
      },
      "message": "Minor benchmark fixes.\n\nChange the AT_All_XXX to AT_ALL_XXX.\n\nChange the name of the from_prot and to_prot parameters to be more\ndescriptive.\n\nAdd a few extra large page sizes. Without this, it jumps from a\nrelatively small size to an extreme large size and nothing in\nbetween.\n\nClang-format modified the args_shorthand initialization.\n\nTest: Ran benchmarks on device.\nChange-Id: I5105788cbf05793fcb4d86c26037ec435635631e\n"
    },
    {
      "commit": "4a98366070ad550f9fb247c21f92b55e73197265",
      "tree": "eb4db7352bbe3fb47c4e39ba4b543a1f4e73fa3a",
      "parents": [
        "5ab3daa560479637f68057a530116aef3fea267f"
      ],
      "author": {
        "name": "Carlos Galo",
        "email": "carlosgalo@google.com",
        "time": "Mon Mar 11 13:55:46 2024 -0700"
      },
      "committer": {
        "name": "Carlos Galo",
        "email": "carlosgalo@google.com",
        "time": "Mon Mar 11 13:55:46 2024 -0700"
      },
      "message": "Adding missing mm tests in syscall.xml\n\nBug: 327496587\nTest: local build and run\nChange-Id: I914fe3b6665acadb3f2c87333f85f5ff0374f678\nSigned-off-by: Carlos Galo \u003ccarlosgalo@google.com\u003e\n"
    },
    {
      "commit": "5ab3daa560479637f68057a530116aef3fea267f",
      "tree": "00f0b2c95435e13a256d829fb2163e503c59aa1e",
      "parents": [
        "fd9824d0b1ed8d27cc19d953d9b8a54226aaeb18",
        "f86d29cc497f658264afc64ad4d4affe8e8ace81"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "android-test-infra-autosubmit@system.gserviceaccount.com",
        "time": "Sat Mar 09 05:01:03 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Mar 09 05:01:03 2024 +0000"
      },
      "message": "Merge changes Iec225109,I988e9495 into main\n\n* changes:\n  Add mprotect syscall benchmark\n  Rename mmap benchmarks to mm benchmark\n"
    },
    {
      "commit": "f86d29cc497f658264afc64ad4d4affe8e8ace81",
      "tree": "7589eb3e503f2ff76fb067eaf9f425337fc226d9",
      "parents": [
        "fb7dd9dd85f97569f0779d3e76ad829de083e390"
      ],
      "author": {
        "name": "Carlos Galo",
        "email": "carlosgalo@google.com",
        "time": "Wed Feb 28 23:07:38 2024 +0000"
      },
      "committer": {
        "name": "Carlos Galo",
        "email": "carlosgalo@google.com",
        "time": "Fri Mar 08 22:02:11 2024 +0000"
      },
      "message": "Add mprotect syscall benchmark\n\nSpecific parameters were chosen based on the frequency of their use in\nAndroid.\n\nBug: 327496587\nTest: local build and run\nChange-Id: Iec225109f62e1e9cde133863d3cee8103172a6c8\nSigned-off-by: Carlos Galo \u003ccarlosgalo@google.com\u003e\n"
    },
    {
      "commit": "457dee1a3339aac5812f61cac82794703164afb0",
      "tree": "246b5c58ee99524a85c5f7c6ab301d5a7fc98467",
      "parents": [
        "70ecb746f3e993027a42bedd63dfbc7c80a0c90a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 06 18:22:36 2024 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 06 18:22:36 2024 -0800"
      },
      "message": "Make our \u003cctype.h\u003e benchmarks less useless.\n\nApparently we hadn\u0027t looked at the disassembly of these benchmarks since\nimplementing the various \u003cctype.h\u003e functions inline, because they\u0027ve all\nbeen optimized away to literal loads of 0 or 1.\n\nObviously, this is not helpful when trying to judge further\noptimizations.\n\nTest: objdump and ran the benchmarks (on both arm64 and arm32)\nChange-Id: Id66c4f7f4c92d9eee8937d31546158eda62ef3ba\n"
    },
    {
      "commit": "fb7dd9dd85f97569f0779d3e76ad829de083e390",
      "tree": "016a2075b066e71de6006a8de1244477069d9b0b",
      "parents": [
        "15299909381c00ea5f2c398ffea7ac6f38080500"
      ],
      "author": {
        "name": "Carlos Galo",
        "email": "carlosgalo@google.com",
        "time": "Wed Mar 06 05:19:37 2024 +0000"
      },
      "committer": {
        "name": "Carlos Galo",
        "email": "carlosgalo@google.com",
        "time": "Wed Mar 06 07:49:15 2024 +0000"
      },
      "message": "Rename mmap benchmarks to mm benchmark\n\nThis file no longer covers only mmap benchmarking, but also additional\nmemory related syscalls. Adjusting the name of this file to reflect the\nbroader utilization.\n\nBug: 327496587\nTest: local build and run\nChange-Id: I988e949589f9731fb1d85f489cd46ae64bf0a74c\nSigned-off-by: Carlos Galo \u003ccarlosgalo@google.com\u003e\n"
    },
    {
      "commit": "66abb0a039ff6269ba447e4bf839ce45a81fc6cd",
      "tree": "cad61a4f7e046c1108172b3d1ef949fbc3a63d9b",
      "parents": [
        "41ed53fac6f371bdbebace8b4168fd5a15226e4e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 07 22:43:15 2024 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 07 22:43:15 2024 +0000"
      },
      "message": "Address review comments on previous change.\n\nA different way to silence the build warnings...\n\nTest: treehugger\nChange-Id: I3fec02ceb0dc2ea22fe1769c948db6c20f458614\n"
    },
    {
      "commit": "d7144fcdf0fcb8fd9ca221d67a19e41f46e5b158",
      "tree": "62dedc332a0dbc87d46609569d7540f6c7e45637",
      "parents": [
        "a0d0355105cb9d4a4b5384897448676133d7b8e2",
        "d9d37c09d886d0fa797bd94537517c46cc3fa334"
      ],
      "author": {
        "name": "Aditya Choudhary",
        "email": "caditya@google.com",
        "time": "Sun Feb 04 20:48:36 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Feb 04 20:48:36 2024 +0000"
      },
      "message": "Merge \"Migrate Test Targets to New Android Ownership Model\" into main"
    },
    {
      "commit": "2ee65a232d51d571d3fe575182522d2cfec1d625",
      "tree": "6fc3bad4b360affecdbcdda94a59ebf6f2a55095",
      "parents": [
        "38dadd12253c82c78be24de684c5ec8834801795"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 02 16:59:22 2024 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 02 16:59:22 2024 -0800"
      },
      "message": "Silence the -Wdeprecated-volatile warnings from our atomic benchmarks.\n\nTest: treehugger\nChange-Id: Iea710334f7761901259d7223444ec4dfe534920e\n"
    },
    {
      "commit": "d9d37c09d886d0fa797bd94537517c46cc3fa334",
      "tree": "d3f9cf758a84251781bc22c7bbdde8e7b2db3a7b",
      "parents": [
        "8e631624e9da603e023abe049820eaa830d02815"
      ],
      "author": {
        "name": "Aditya Choudhary",
        "email": "caditya@google.com",
        "time": "Fri Feb 02 13:57:12 2024 +0000"
      },
      "committer": {
        "name": "Aditya Choudhary",
        "email": "caditya@google.com",
        "time": "Fri Feb 02 13:57:12 2024 +0000"
      },
      "message": "Migrate Test Targets to New Android Ownership Model\n\nThis CL is created as a best effort to migrate test targets to the new Android ownership model.\nIt is based on historical data from repository history and insights from git blame.\nGiven the nature of this effort, there may be instances of incorrect attribution. If you find incorrect or unnecessary\nattribution in this CL, please create a new CL to fix that.\n\nFor detailed guidelines and further information on the migration please refer to the link below,\ngo/new-android-ownership-model\n\nBug: 304529413\nTest: N/A\nChange-Id: Ie36b2a3245d9901323affcc5e51dafbb87af9248\n"
    },
    {
      "commit": "76061104900d37c51575d7dfac32dc8596965eac",
      "tree": "7fc1c8066474ab7826f7a882034b75df4bda81af",
      "parents": [
        "6467c97105addff1e6323c3326374b8179112dc8",
        "4c41cab3f34119ebed4dcbc30fcb72c4b960e643"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 22 21:32:04 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 22 21:32:04 2024 +0000"
      },
      "message": "Merge \"Silence the linker_relocation benchmark weak symbol warnings.\" into main"
    },
    {
      "commit": "4c41cab3f34119ebed4dcbc30fcb72c4b960e643",
      "tree": "a842075f07f0f94e945fd52fcaf10a9573bc5298",
      "parents": [
        "569b45dce513089930b266b63b74cdceef432d56"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 20 00:30:51 2024 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 20 00:30:51 2024 +0000"
      },
      "message": "Silence the linker_relocation benchmark weak symbol warnings.\n\nTest: treehugger\nChange-Id: I617e82540ba5f22e237bde344d2b568a369692cd\n"
    },
    {
      "commit": "1eacc0edc001ee0f11333d47fa6f7fb14b5b6670",
      "tree": "f401b585b35a5dcb1f179bc4aa08a2ecfd6772f7",
      "parents": [
        "569b45dce513089930b266b63b74cdceef432d56"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 19:05:36 2024 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 19:05:36 2024 +0000"
      },
      "message": "bpfmt all the .bp files to silence ayeaye.\n\nTest: treehugger\nChange-Id: I5b7add6f013dcd2d4eee4851b7a2a22310c6d533\n"
    },
    {
      "commit": "3e281b1dcbba1ded8ee40bc164429499fd703a6b",
      "tree": "d4696cde6ba375d9789eee2bf9da387a0fc2767a",
      "parents": [
        "6717b2d3e63ca081d580ae8f0b72a2eec749f662"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Dec 13 14:30:56 2023 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 10 12:57:45 2024 -0800"
      },
      "message": "Update mmap benchmarks and add madvise bechmarks.\n\nA small refactor of the mmap benchmarks to make it easier to benchmark\nthe mmap and munmap separately. Add a mmap only and munmap only benchmark.\n\nAdd new madvise benchmarks.\n\nClean-up fixed mmap benchmarks to properly create the initial map.\n\nTest: Ran benchmarks on host and on device.\nChange-Id: I2fc306dd3eba151cff066da8df8f0168df0ade69\n"
    },
    {
      "commit": "4e6205546285dfed786126692c6110ffdf8aecf0",
      "tree": "22a14a183507a3b0658daaea9263dee857b06ba6",
      "parents": [
        "717debf261c56ada8b7a40d623bf3558ce6aef01"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 11 16:57:03 2023 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 11 16:57:03 2023 -0800"
      },
      "message": "Add a missing strtol() family test and a hex benchmark.\n\nBenchmark added to test an optimization I\u0027ll send round next, test added\nwhen an even bigger refactoring (as part of a more interesting\noptimization) broke strtol() in a way the strtol() tests didn\u0027t notice.\n\nTest: treehugger\nChange-Id: Ic974900021107938dbbbe98648960adb102d9595\n"
    },
    {
      "commit": "08b0a68d6d32cf91ccb9096fe567ab20b11ea723",
      "tree": "3c39983a13a537d787d0823efbcc7bc92ab573c5",
      "parents": [
        "58df4dfe9a4eb4f0491c299570506a3c83f89e44"
      ],
      "author": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Fri Nov 10 11:09:46 2023 -0800"
      },
      "committer": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Fri Nov 10 11:09:46 2023 -0800"
      },
      "message": "Unmap appcompat properties in property benchmark\n\nOtherwise, they\u0027ll leak and cause failures\n\nFixes: 305838406\nTest: adb shell /data/benchmarktest/bionic-benchmarks/bionic-benchmarks --benchmark_filter\u003dBM_property\nChange-Id: I2d6ed4aa30012dd7aa92eed8dc564699e6505c8f\n"
    },
    {
      "commit": "58df4dfe9a4eb4f0491c299570506a3c83f89e44",
      "tree": "9f2d6db78bc35dcfbbd7694419797fb908f5a6e1",
      "parents": [
        "5512532418996ecb2200f57a493a1687049b59f2"
      ],
      "author": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Tue Nov 07 15:20:49 2023 -0800"
      },
      "committer": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Tue Nov 07 15:20:49 2023 -0800"
      },
      "message": "Modify benchmark for appcompat properties, exit when init fails\n\nThe property_benchmark needs to use the `load_default_path` parameter in\nwhen writing its test, which is necessary now. Also, the benchmark\nseemed to retry infinitely when the initialization failed, so it has now\nbeen modified to exit when the initialization fails, and send a message\nas it does so.\n\nBug: 305838406\nTest: adb shell /data/benchmarktest/bionic-benchmarks/bionic-benchmarks --benchmark_filter\u003dBM_property\nChange-Id: Idb235b0e7c119fa08ace5b814d7f7404dd0eaeb3\n"
    },
    {
      "commit": "b4e560ed7c10d533939c0c0bb6190d17fba554d6",
      "tree": "18df1cd5539b329aa1abe7b0b100c06446bc2606",
      "parents": [
        "0db95a4f2333e1d7496955542c5d1c3f4bf65bcc"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 26 17:00:00 2023 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Oct 30 15:30:16 2023 -0700"
      },
      "message": "Add android_mallopt M_GET_DECAY_TIME_ENABLED.\n\nThe bionic benchmarks set the decay time in various ways, but\ndon\u0027t necessarily restore it properly. Add a new method for\ngetting the current decay time and then a way to restore it.\n\nRight now the assumption is that the decay time defaults to zero,\nbut in the near future that assumption might be incorrect. Therefore\nusing this method will future proof the code.\n\nBug: 302212507\n\nTest: Unit tests pass for both static and dynamic executables.\nTest: Ran bionic benchmarks that were modified.\nChange-Id: Ia77ff9ffee3081c5c1c02cb4309880f33b284e82\n"
    },
    {
      "commit": "a01b292ab9371033c5cb30b32541344cfbd1bda3",
      "tree": "75a957011716405073309d57136d684d438cf1aa",
      "parents": [
        "22743e3a7e75290a8acbea7014dd891004872790",
        "9c06d16ca3d230059ccf3b7f270574bc5e8fcfcb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "android-test-infra-autosubmit@system.gserviceaccount.com",
        "time": "Thu Oct 05 17:36:09 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 05 17:36:09 2023 +0000"
      },
      "message": "Merge \"s/master/main/\" into main"
    },
    {
      "commit": "9c06d16ca3d230059ccf3b7f270574bc5e8fcfcb",
      "tree": "9051bc0a5c2d7b110be37d81f041427c5b79f8fb",
      "parents": [
        "ae3168308606f837cb8470e641a265d2040ad016"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 04 23:36:14 2023 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 04 23:36:48 2023 +0000"
      },
      "message": "s/master/main/\n\nTest: treehugger\nChange-Id: I2c975b2f5f92f23c7357b6f7e785578504298cc6\n"
    },
    {
      "commit": "7ee0b316a5091be3a4d52a8bc22b17edd18e164c",
      "tree": "113b4333c67feb5ebd6202deb2b7197de04d37df",
      "parents": [
        "ae3168308606f837cb8470e641a265d2040ad016"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 04 22:28:49 2023 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 04 22:28:49 2023 +0000"
      },
      "message": "Update the benchmarks/NOTICE file.\n\nTest: treehugger\nChange-Id: I8cbf378dd746da9e97b56a0110f86a7cc4043671\n"
    },
    {
      "commit": "9a0a360ed6dac7fd5aeef949fd10794c2de141a0",
      "tree": "a75a038502c2faafc8b7fb9bc8fbb213e9dc3aa8",
      "parents": [
        "61cd1428b44f3d428f63d1a778e0b128ca7572ac"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Thu Aug 17 21:52:50 2023 +0000"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Sep 29 20:24:47 2023 +0000"
      },
      "message": "Add mmap syscall benchmarks\n\nAdd benchmarks to monitor performance of the syscalls which are frequently\nused in Android. These benchmarks will help Android kernel team to catch\nsyscall performance regressions and flagging them early. They can also\nbe used to compare different kernel versions.\nAdd mmap/munmap syscall benchmarks as a starting point. mmap and munmap\nare among most frequently used syscall in Andoird. Specific parameters\nwere also chosen based on the frequency of their use in Android.\n\nBug: 283058897\nTest: local build and run\nChange-Id: If8e53305174532dd698706ccd20e4b800d8720d7\n"
    },
    {
      "commit": "3df5b76a4eee34cdbdd930a907de38a35b9f391b",
      "tree": "a45e8bf9684aea590d4aca2513a264a0a83ec754",
      "parents": [
        "51be22c28d32983a8b43725c90208a7e686a8dee"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Sep 28 13:30:49 2023 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Sep 28 13:30:49 2023 -0700"
      },
      "message": "Match new google benchmark help output.\n\nBug: 302324720\n\nTest: Tests pass on a raven device.\nChange-Id: I0766c4799c47f58e6cafa340bc8e76f68f4898ee\n"
    },
    {
      "commit": "5dd1582706fa619490559202b1019874a5104436",
      "tree": "e4d98a445926024c7f6c64477dbe41a0319490b5",
      "parents": [
        "6f6df7376e0dc6dcca0e94e30616c67b30c1886d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 07 18:48:13 2023 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 07 18:48:13 2023 +0000"
      },
      "message": "Remove a stray newline.\n\nerr() not only adds its own newline, it\u0027ll add the strerror() output\nfirst, so this stray newline messes up the error message. (Seen running\nbionic benchmarks not as root, which causes the std_map benchmarks to\nfail, which is especially annoying because it ends the whole benchmark\nrun, not just the specific benchmark, but that\u0027s a less obvious fix, so\nI\u0027m just fixing the trivial part here!)\n\nTest: treehugger\nChange-Id: I7e87ea4385c410942fbdd14e6fdfddbf7320082a\n"
    },
    {
      "commit": "44148443543d0436c096731a6ace45fbb969344a",
      "tree": "f59c2aeadc78efae4621652a38dfd860ae50418a",
      "parents": [
        "143f3cea320becbfc836309fade5dfa1074731d0"
      ],
      "author": {
        "name": "Chia-hung Duan",
        "email": "chiahungduan@google.com",
        "time": "Thu Jun 29 21:16:42 2023 +0000"
      },
      "committer": {
        "name": "Chia-hung Duan",
        "email": "chiahungduan@google.com",
        "time": "Mon Jul 10 18:23:09 2023 +0000"
      },
      "message": "Add multithreads throughput benchmark\n\nThis is used to monitor the impact of different lock granularity in a\nmemory allocator. It creates different memory alloc/dealloc patterns\nacross different threads but keep the same amount of bytes to be\nprocessed.\n\nBug: 288126442\nTest: run benchmark with --benchmark_filter\u003dBM_malloc_threads_throughput*\n\nChange-Id: I24eea617a6346480524dcb8c0bdbe9bd8e90dd72\n"
    },
    {
      "commit": "61c0dcec9b0086b91fd1c4db9264f3c712a83755",
      "tree": "09e1691b0cbceef69aaf93d000ecabe8799e0556",
      "parents": [
        "5c6961ff6d0fde3dab0236b0e56be1638b030e52"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jun 15 13:43:57 2023 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jun 15 22:02:10 2023 -0700"
      },
      "message": "Remove symbols that don\u0027t exist in musl from linker benchmark\n\nThe lseek64, lstat64, pread64 and pwrite64 symbols have been removed\nfrom musl 1.2.4.\n\nBug: 286415000\nTest: builds\nChange-Id: Icba9e92e1ccbb5b52d6c60e554ab411c9e5c1954\n"
    },
    {
      "commit": "f2d93d604d23f010488874ca39b9b2bd6b6a3189",
      "tree": "f85b11e207360d7edf2a2a1607259cd0f1bce32a",
      "parents": [
        "185103af606150aa69b4fd9b6ddf7a530b157b06"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 26 13:47:53 2023 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 26 16:07:16 2023 -0700"
      },
      "message": "Modify argument parser for multiple arguments.\n\nCurrently, if a test is created like this:\n\n  BIONIC_BENCHMARK_WITH_ARG(BM_bench, \"16\");\n\nEverything works as expected, a benchmark is created of BM_bench/16.\nHowever, it is not possible to specify a benchmark should be called with\none argument, but iterate over different values. The example:\n\n  BIONIC_BENCHMARK_WITH_ARG(BM_bench, \"16 32\");\n\nCreates a single benchmark run with two arguments:\n\n  BM_bench/16/32\n\nThis change modifies the algorithm to make it possible to create multiple\ninstances of the benchmark iterating over each argument as a single\nargument. After this change, two benchmarks are executed:\n\n  BM_bench/16\n  BM_bench/32\n\nTo do the previous behavior, use:\n\n  BIONIC_BENCHMARK_WITH_ARG(BM_bench, \"16/32\");\n\nThis will create a single benchmark with two args. This format does\nnot support spaces in the args, so \"16 / 32\" is not valid.\n\nModified the test_small.xml to use the new format.\n\nTest: All unit tests pass.\nChange-Id: I6f486e1d4a90580c3dace0581ea65f439911ef5a\n"
    },
    {
      "commit": "80b551ddc40f240b97b437447b0fc883aa251a6f",
      "tree": "0b4aa49bb88494288681ed1c0fea04be5c9eeba9",
      "parents": [
        "2b12a6ed5f3d1af092b4ea2b69fb776c13e08b9c"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 25 15:44:54 2023 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 26 01:20:56 2023 -0700"
      },
      "message": "Fix benchmark unit tests.\n\nAdd benchmark file dependency in tests instead of using hard-coded\npath to bionic-benchmarks.\n\nIn addition, add a TEST_MAPPING file so the tests run when benchmark files change.\n\nTest: All unit tests pass.\nTest: Ran atest bionic-benchmarks-tests.\nChange-Id: I95608f5b5e75d9d74930960a2431c9896b621ce8\n"
    },
    {
      "commit": "d86eb8665c4783b8c941b307e98589136ffc7293",
      "tree": "14f96c8b4af88b3f73233220f64c72e747966846",
      "parents": [
        "f6f8315747b2d474e10953645984f9d7547a057c"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Feb 28 12:45:54 2023 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 13 19:55:32 2023 -0700"
      },
      "message": "Add support for M_PURGE_ALL.\n\nThis is a new mallopt option that will force purge absolutely\neverything no matter how long it takes to purge.\n\nWrote a unit test for the new mallopt, and added a test to help\nverify that new mallopt parameters do not conflict with each other.\n\nModified some benchmarks to use this new parameter so that we can\nget better RSS data.\n\nAdded a new M_PURGE_ALL benchmark.\n\nBug: 243851006\n\nTest: All unit tests pass.\nTest: Ran changed benchmarks.\nChange-Id: I1b46a5e6253538108e052d11ee46fd513568adec\n"
    },
    {
      "commit": "a15d5c4f86be41438c01e31c571423ed5e910f1e",
      "tree": "52946e3aed4b6a399854b9b3bfc5ccab88fd68b3",
      "parents": [
        "137ecdd059e15af551ef258d21c59f4dce6086f6"
      ],
      "author": {
        "name": "Chia-hung Duan",
        "email": "chiahungduan@google.com",
        "time": "Tue Aug 09 01:55:44 2022 +0000"
      },
      "committer": {
        "name": "Chia-hung Duan",
        "email": "chiahungduan@google.com",
        "time": "Wed Dec 14 19:33:22 2022 +0000"
      },
      "message": "Add a malloc rss benchmark\n\nThe behavior of this benchmark includes three steps:\n1. Use up to 16 MB by allocating blocks with given size in each thread.\n2. Release the all blocks in random order.\n3. Use up to 1.6 MB by allocating blocks with given size in each thread.\n\nThis is used to see how the allocator manages the free blocks and we can\nmeasure the impact of randomization property used by the allocator.\n\nTest: Run malloc-rss-benchmark $NUM_THREADS $ALLOC_SIZE\n\nChange-Id: Ib68562996905839ee4367b1b059714e2325ca03e\n"
    },
    {
      "commit": "20561b893d5b15717b8b615080b876f8461053f5",
      "tree": "6a80c1461dd4cb1b6c71d395d8108e1f101cba41",
      "parents": [
        "9874c54c935fe6fcfa5be471c1d5fababca914d1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 14 21:43:30 2022 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 14 21:43:30 2022 +0000"
      },
      "message": "Add riscv64 support to the linker relocation benchmark.\n\nChange-Id: I8274826803a07016b9fd08efe60a2f1c77751c5d\nSigned-off-by: Mao Han \u003chan_mao@linux.alibaba.com\u003e\nSigned-off-by: Xia Lifang \u003clifang_xia@linux.alibaba.com\u003e\nSigned-off-by: Chen Guoyin \u003cchenguoyin.cgy@linux.alibaba.com\u003e\nSigned-off-by: Wang Chen \u003cwangchen20@iscas.ac.cn\u003e\nSigned-off-by: Lu Xufan \u003cluxufan@iscas.ac.cn\u003e\nTest: `mm -j` in bionic/\n"
    },
    {
      "commit": "82fc2d573c06b01a2f679cd7f4c715dd99680413",
      "tree": "df108ad53f12b36e5ee2422d9206fc21c1ba470f",
      "parents": [
        "9da1b3fa295fe4be408d6b1f10832b4ef66d9eb8"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Tue Sep 14 12:19:49 2021 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 20:05:38 2022 +0000"
      },
      "message": "Update module configs for native tests\n\nUse /data/local/tests/unrestricted as on-device test path so that\ndebuggerd can generate proper back traces.\n\nBug: 199904562\nBug: 184739644\nTest: treehugger\nChange-Id: I4ae1fb3182dde081121179f1b099374119205dd3\n"
    },
    {
      "commit": "da446cc5ccc9abdd3610ecb439ed3d969d7b59b4",
      "tree": "3b4fda1145c07877361d06d509942cece14a9d4b",
      "parents": [
        "471bef4d34a666a5edfb2c0008dad89b6c6f1d76"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Mar 08 15:07:57 2022 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Mar 08 15:07:57 2022 -0800"
      },
      "message": "Tweak linux_glibc properties for musl builds in bionic\n\nFor convenience, builds against musl libc currently use the\nlinux_glibc properties because they are almost always linux-specific\nand not glibc-specific.  In preparation for removing this hack,\ntweak the linux_glibc properties by either moving them to host_linux,\nwhich will apply to linux_glibc, linux_musl and linux_bionic, or\nby setting appropriate musl or linux_musl properties.  Properties\nthat must not be repeated while musl uses linux_musl and also still\nuses the linux_glibc properties are moved to glibc properties, which\ndon\u0027t apply to musl.  Whether these stay as glibc properties or get\nmoved back to linux_glibc later once the musl hack is removed is TBD.\n\nBug: 223257095\nTest: m checkbuild\nTest: m USE_HOST_MUSL\u003dtrue host-native\nChange-Id: I809bf1ba783dff02f6491d87fbdc9fa7fc0975b0\n"
    },
    {
      "commit": "daa6b82edf9612ff333d00e76f3387128287845a",
      "tree": "58b7ed352476d95d155bd351db5212e64f0380c2",
      "parents": [
        "8266380c777791e36182ba9f729884fd3c77e2ad"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Dec 15 14:26:43 2021 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 02 12:36:39 2022 -0800"
      },
      "message": "Fix bionic benchmarks and header tests for musl\n\nFix references to symbols that don\u0027t exist in musl in the bionic\nbenchmarks, and disable the header tests for musl.\n\nBug: 190084016\nTest: m USE_HOST_MUSL\u003dtrue host-native\nChange-Id: I6b1964afa4a7b6e6a4812e9f2605fcfc2fae9691\n"
    },
    {
      "commit": "e4d5efe231bd942fe661a066d9d5c895e950f248",
      "tree": "7b1787b1a32199354d1aaa61de8c2e0a0fd9204d",
      "parents": [
        "a9ebf6f422c1924b3c6486385babc38152c39500"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 18 17:57:38 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 06 14:55:00 2021 -0800"
      },
      "message": "strftime: format small positive integers ourselves.\n\nA decent chunk of the logcat profile is spent formatting the timestamps\nfor each line, and most of that time was going to snprintf(3). We should\nfind all the places that could benefit from a lighter-weight \"format an\ninteger\" and share something between them, but this is easy for now.\n\nBefore:\n\n-----------------------------------------------------------\nBenchmark                 Time             CPU   Iterations\n-----------------------------------------------------------\nBM_time_strftime        781 ns          775 ns       893102\n\nAfter:\n\n-----------------------------------------------------------\nBenchmark                 Time             CPU   Iterations\n-----------------------------------------------------------\nBM_time_strftime        149 ns          147 ns      4750782\n\nMuch of the remaining time is in tzset() which seems unfortunate.\n\nTest: treehugger\nChange-Id: Ie0f7ee462ff1b1abea6f87d4a9a996d768e51056\n"
    },
    {
      "commit": "09bf432be49e4890b1079c5f5c74bff5e59aac98",
      "tree": "58449b7535fe158fcb682073f0ae4ace7152979c",
      "parents": [
        "7d3f322e64ea1d51a465d2cac1ba2905977bdc49"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 16 10:51:12 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 16 10:51:12 2021 -0800"
      },
      "message": "New multi-byte character benchmarks.\n\nI don\u0027t think the old benchmarks made any sense; going through all the\ncharacters might have made sense as a unit test, but I\u0027m not sure how\nactionable they were for realistic cases. In particular, \"all ASCII\" is\na common special case that\u0027s worth measuring separately. I\u0027m still not\nhugely convinced, but at least separating the \"ASCII\" and \"wide\" paths\nis an improvement. I can\u0027t think of a case where we did optimization\nwork on this kind of code without considering those two paths\nseparately.\n\nI\u0027ve added to the single-character benchmarks by splitting out the\nseparate cases instead --- one benchmark each for single-byte up to\n4-byte characters.\n\nBug: http://b/206523398\nTest: treehugger\nChange-Id: I58cbfedb4b497a55580857eff307a024938cf006\n"
    },
    {
      "commit": "c57947860d252aa735c50785d4f6ff1c77054ca2",
      "tree": "0409e3492ecf7fcaee112f6668e84443b1205069",
      "parents": [
        "b40eb10acc747b600ea361726e3212ff81209ab1"
      ],
      "author": {
        "name": "Jingwen Chen",
        "email": "jingwen@google.com",
        "time": "Wed Mar 10 03:24:48 2021 -0500"
      },
      "committer": {
        "name": "Jingwen Chen",
        "email": "jingwen@google.com",
        "time": "Fri Mar 19 02:06:27 2021 -0400"
      },
      "message": "bp2build: remove some bp2build_available props, use package_allowlist instead.\n\nTest: build/bazel/scripts/milestone-2/demo.sh full\n\nTest: bazel query //bionic/...\nChange-Id: I737574766be898279d8bf6f3f0adb43dcc40c220\n"
    },
    {
      "commit": "363a480602f9278e7f1e16d0109ca8fb2666c069",
      "tree": "652e8d1cb19bac22a03544463e36f1cb576c5e1c",
      "parents": [
        "8ae9d017f36b90c0b041b1677d83ceb71824387b",
        "f5a97dc1e81f61ac670c1a5c5d1e88660b47aa41"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 22 16:14:32 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 22 16:14:32 2021 +0000"
      },
      "message": "Merge \"Update gen_bench.py to propagate license information.\""
    },
    {
      "commit": "f5a97dc1e81f61ac670c1a5c5d1e88660b47aa41",
      "tree": "acb000ba8c03cefe1c8d0d7e95476ce396722188",
      "parents": [
        "332065d57e734b65f56474d136d22d767e36cbcd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 19 15:39:27 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Feb 20 17:16:17 2021 +0000"
      },
      "message": "Update gen_bench.py to propagate license information.\n\nTest: treehugger\nChange-Id: Ia34fcb575575d7916632e0973d43b2bc0f510f15\n"
    },
    {
      "commit": "aa7d835fdd739881a907ac5c8a89a5dae01f6089",
      "tree": "d85b4086e7cd0aedd28a071d5e1899f62b73695d",
      "parents": [
        "d29cac66b426d59afd7ce7da9519b6d43f5df0cc"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Feb 19 13:06:22 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 19 23:38:28 2021 +0000"
      },
      "message": "Add LOCAL_LICENSE_KINDS to bionic\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  apex/Android.bp\n  libdl/Android.bp\n  tools/Android.bp\n  tools/versioner/Android.bp\n  tools/versioner/src/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:\n  benchmarks/Android.bp\n  benchmarks/linker_relocation/gen/Android.bp\n  libc/malloc_debug/Android.bp\n  libc/system_properties/Android.bp\n  tests/Android.bp\n  tests/libs/Android.bp\n  tests/libs/Android.build.dlext_testzip.mk\n  tests/make_fortify_compile_test.mk\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-ISC SPDX-license-identifier-MIT\n    legacy_notice legacy_unencumbered\nto:\n  libc/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-MIT legacy_unencumbered\nto:\n  libm/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 legacy_unencumbered\nto:\n  libc/tools/Android.bp\n\nAdded SPDX-license-identifier-BSD\nto:\n  benchmarks/linker_relocation/Android.bp\n  benchmarks/spawn/Android.bp\n  libc/async_safe/Android.bp\n  libc/malloc_hooks/Android.bp\n  libfdtrack/Android.bp\n  linker/Android.bp\n  tests/headers/Android.bp\n  tests/headers/posix/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\nExempt-From-Owner-Approval: janitorial work\nChange-Id: Ib05bcaa276b3aa71a7654ccbe8e67e1f16aec9f3\n"
    },
    {
      "commit": "332065d57e734b65f56474d136d22d767e36cbcd",
      "tree": "f413bfdde646c88a80fe7e5b30472f078d7bf28f",
      "parents": [
        "ede54420ba85fbfe4af4752d501aaa569561ff26",
        "aa8db1b9d1e8bba7eba26238e44713f02a3dd533"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 17 17:51:06 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 17 17:51:06 2021 +0000"
      },
      "message": "Merge \"Fix/update notices.\""
    },
    {
      "commit": "aa8db1b9d1e8bba7eba26238e44713f02a3dd533",
      "tree": "0c55f7bf1fa5b9aa9e01c63573bd4bb6314a6393",
      "parents": [
        "ef0ec82684ea52ee3a13db8df9103ca314ea17aa"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 16 15:05:44 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 16 15:06:50 2021 -0800"
      },
      "message": "Fix/update notices.\n\nAuto-generate NOTICE files for all the directories, and for each one\nindividually rather than mixing libc and libm together.\n\nTest: N/A\nChange-Id: I7e251194a8805c4ca78fcc5675c3321bcd5abf0a\n"
    },
    {
      "commit": "fd64868a929a849c25e350eb233f78329e9995cb",
      "tree": "1782f0a6ccee4e7e15e88efd46b30391610701b2",
      "parents": [
        "ef0ec82684ea52ee3a13db8df9103ca314ea17aa"
      ],
      "author": {
        "name": "Rupert Shuttleworth",
        "email": "ruperts@google.com",
        "time": "Tue Feb 16 03:27:05 2021 +0000"
      },
      "committer": {
        "name": "Rupert Shuttleworth",
        "email": "ruperts@google.com",
        "time": "Tue Feb 16 03:39:20 2021 +0000"
      },
      "message": "Mark cc_library_headers targets as being bp2build_available.\n\nTest: build/bazel/scripts/bp2build-sync.sh write.\nChange-Id: I78a491d20779f50757b55c8e5305b588bf613839\n"
    },
    {
      "commit": "2cefcb1b9c88a946a92842a5dffee90bebed80cd",
      "tree": "2b6a1083d7c86ead4a2fea7ae6fc194089766589",
      "parents": [
        "9397bdd13f8e54855d0cda2a150c1bca98126a86"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Dec 08 14:37:58 2020 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Dec 08 14:47:58 2020 -0800"
      },
      "message": "Add a bionic-benchmarks-static target.\n\nThis makes it easy to benchmark changes to bionic without needing\nto reflash the device or mess with LD_LIBRARY_PATH.\n\nChange-Id: Ic7ea0f075751f8f077612617802775d2d0a799dc\n"
    },
    {
      "commit": "e8693e78711e8f45ccd2b610e4dbe0b94d551cc9",
      "tree": "5b7a67244a6a122e27fca20f84d0a4f78d487fe2",
      "parents": [
        "9aa6b15d799ac246e842552fca555920a93ce46b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 22 13:43:59 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 22 13:43:59 2020 -0700"
      },
      "message": "Make more use of benchmark::DoNotOptimize in benchmarks.\n\nA lot of these benchmarks predate DoNotOptimize and rolled their own\nhacks.\n\nBug: http://b/148307629\nTest: ran benchmarks before \u0026 after and got similar results\nChange-Id: If44699d261b687f6253af709edda58f4c90fb285\n"
    },
    {
      "commit": "3f09b0ac2e6a3875f2c1cd947ab01f95198aa751",
      "tree": "6667e08bc663dcb825ca69c6d437e9963f25a12f",
      "parents": [
        "38940f17ac94441524f62b50ef97cc0692ba5958",
        "b5f8e034968da83dd27da322c7a0b534b61f3ec8"
      ],
      "author": {
        "name": "Peter Kalauskas",
        "email": "peskal@google.com",
        "time": "Tue Oct 20 17:17:29 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 20 17:17:29 2020 +0000"
      },
      "message": "Merge \"Update module name referenced in README.md\""
    },
    {
      "commit": "a3d41ee17669084489bbecd3262658834f43541c",
      "tree": "3dc94fca23772726ddaeb1917983c44764f45c8f",
      "parents": [
        "08a43426a0bcbc53cd2a33b3624bc6b3f7176117"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Oct 07 16:32:27 2020 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Oct 16 17:55:54 2020 -0700"
      },
      "message": "Add __cxa_atexit benchmark\n\nThe benchmark calls __cxa_atexit 100000 times, then either exits early\nwithout calling the destructors (_Exit) or exits normally, calling them\n(exit).\n\nTest: mmma bionic/benchmarks/spawn\nChange-Id: I41fe702d6ef11acb7a1dec95bf546b5dc693bd4a\n"
    },
    {
      "commit": "b5f8e034968da83dd27da322c7a0b534b61f3ec8",
      "tree": "67f6e61a7879a3ed45b6b5098c7b24f87dcf3d1f",
      "parents": [
        "08a43426a0bcbc53cd2a33b3624bc6b3f7176117"
      ],
      "author": {
        "name": "Peter Kalauskas",
        "email": "peskal@google.com",
        "time": "Fri Oct 09 13:07:43 2020 -0700"
      },
      "committer": {
        "name": "Peter Kalauskas",
        "email": "peskal@google.com",
        "time": "Mon Oct 12 16:48:36 2020 -0700"
      },
      "message": "Update module name referenced in README.md\n\nTest: atest-src google/perf/jank/UIBench/UIBench-Lock -v\nBug: 170349152\n\nChange-Id: I0dfb9422b068952c6f4d506a8fbfa5316dbe9886\n"
    },
    {
      "commit": "68ae6ad12e4f89526638f167c380d0b28b3bdeac",
      "tree": "e18075751c1f0d08d94d7c6be14e1a18b560b285",
      "parents": [
        "c79ea239415963d4a38752d0f3efe50531c8e04f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 21 16:11:30 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 21 16:34:58 2020 -0700"
      },
      "message": "Changes for #inclusivefixit.\n\nTest: treehugger\nChange-Id: I7ff0496c5c2792a41781e74634247f55b0548213\n"
    },
    {
      "commit": "8c936b4e6c5ffc5d55b93e59587d95066abf9b0e",
      "tree": "3c4c54acb8b47cdbe4951e7380d4c1e1096c6ade",
      "parents": [
        "4ea659a7c6abdae1873e72627a06a8d2aa8c02fd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 15 11:18:43 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 15 11:18:43 2020 -0700"
      },
      "message": "Use more inclusive language.\n\nOne turns out not to be used at all, and the pylintrc even uses the more\nintention-revealing term in the machine readable part, just not the\ncomment!\n\nTest: treehugger\nChange-Id: I4db7f1cf4fa1aa8ee601857e4e4c400e2119887c\n"
    },
    {
      "commit": "d613f89bf00d447145241eb90089ba44e29e4043",
      "tree": "4b236085c522430c507b6da123d68c8620b0b6df",
      "parents": [
        "fcbdba22ab1c84825bd1e4cd18f8298c87991a5b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Feb 20 17:12:48 2020 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Sat Feb 22 14:43:41 2020 +0000"
      },
      "message": "Add a std::map, std::unordered_map benchmark.\n\nThis benchmark also includes the measuring of RSS.\n\nBug: 137795072\n\nTest: Ran different iterations and verified the RSS_MB value is nearly\nTest: identical no matter the number of iterations.\nChange-Id: I465a0eae9dcff2e1fb739c35623a26291680951f\n"
    },
    {
      "commit": "4b11192d8a55eb9eefd071693a1276b60fd8e816",
      "tree": "a6a18857a9050460098265c6867335840f11c01f",
      "parents": [
        "3597b0676b6b9c886ced9fb5d0e6e74379965c91"
      ],
      "author": {
        "name": "Jake Weinstein",
        "email": "jake@aospa.co",
        "time": "Wed Feb 19 17:12:48 2020 +0100"
      },
      "committer": {
        "name": "Jake Weinstein",
        "email": "jake@aospa.co",
        "time": "Wed Feb 19 17:18:25 2020 +0100"
      },
      "message": "benchmarks: add 16 and 32 bytes to common sizes\n\nPer Wilco Dijkstra at ARM, 16 and 32 byte copies are much more common\nthan 8 or 64.\n\nChange-Id: I3699d8bcd5f9dd8a8ccd8564a6cf58d2bd7089f5\nSuggested-By: Wilco Dijkstra \u003cwilco.dijkstra@arm.com\u003e\n"
    },
    {
      "commit": "bdb678c9bdad161d033b236f261ba1cb299fada2",
      "tree": "fa287787541a5fa9a9cf2432a813c6bda26d4820",
      "parents": [
        "9354f3e9a96dd0292c358d8e1afb6ef9b329be79",
        "64d03a287e0e45a0c34075c1687790bb115d4220"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Feb 03 13:58:11 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 03 13:58:11 2020 +0000"
      },
      "message": "Merge \"Add an end-to-end property benchmark.\""
    },
    {
      "commit": "89379355c4b532977ee77fa80d8763a8c784637c",
      "tree": "f73cfecdda524ef77c0ef411a60c4b2cbe174bfb",
      "parents": [
        "0e0b473a4c01ec6b739ac7aa9eccb63005fa3da2"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 29 15:21:09 2020 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 29 16:36:14 2020 -0800"
      },
      "message": "Add a couple of new benchmarks.\n\nAdd a calloc benchmark to make sure that a native allocator isn\u0027t\ndoing anything incorrectly when zero\u0027ing memory.\n\nAlso add a fork call benchmark to verify that the time to make a\nfork call isn\u0027t increasing.\n\nTest: Ran benchmarks on walleye and verified that the numbers are not\nTest: too variable between runs.\nChange-Id: I61d289d277f85ac432a315e539cf6391ea036866\n"
    },
    {
      "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"
    }
  ],
  "next": "0dc784431b3e0a5964b257753e2bf4dcc96a463d"
}
