)]}'
{
  "commit": "d18ee609176f7321d41cf9e2e5024dcbde8637e3",
  "tree": "d97ac4fcf0b21f7675917935c3692fdf0b978c1f",
  "parents": [
    "2bdd1af24187f3061da1fac47fc8f3157a6eb543"
  ],
  "author": {
    "name": "Sam Clegg",
    "email": "sbc@chromium.org",
    "time": "Wed Sep 02 20:39:19 2026"
  },
  "committer": {
    "name": "Sam Clegg",
    "email": "sbc@chromium.org",
    "time": "Wed Sep 02 23:37:26 2026"
  },
  "message": "[libc] Always use __builtin_wasm_memory_copy in memmove\n\nFollowup to #27653.\n\nReplace Musl\u0027s `memmove.c` and the `-Oz` manual loop in\n`emscripten_memmove.c` with `__builtin_wasm_memory_copy`.\n\nWebAssembly\u0027s `memory.copy` instruction is specified with overlapping\ncopy (`memmove`) semantics, and engines (V8, SpiderMonkey, JSC)\nimplement it using native host `memmove`.\n\nIn Musl\u0027s C implementation, misaligned overlapping copies fall back to\na byte-by-byte scalar loop in wasm, which is 15x to 33x slower than\n`memory.copy`.\n\nOverlapping copy benchmark results (200k iterations across sizes\n1B to 16KB):\n\nShift forward (dest \u003e src):\n- V8:             34.51ms vs  576.50ms (94.0% faster, 16.7x)\n- SpiderMonkey:   33.73ms vs 1129.64ms (97.0% faster, 33.5x)\n- JavaScriptCore: 33.32ms vs  715.26ms (95.3% faster, 21.5x)\n\nShift backward (dest \u003c src):\n- V8:             34.28ms vs  551.30ms (93.8% faster, 16.1x)\n- SpiderMonkey:   33.74ms vs  546.25ms (93.8% faster, 16.2x)\n- JavaScriptCore: 32.90ms vs  535.86ms (93.9% faster, 16.3x)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2d12280698f7fa028faf2b21e5a0852b1285aa6f",
      "old_mode": 33188,
      "old_path": "system/lib/libc/emscripten_memmove.c",
      "new_id": "0b63c44b2861f2ec809347ea5ff224c28d87953d",
      "new_mode": 33188,
      "new_path": "system/lib/libc/emscripten_memmove.c"
    },
    {
      "type": "modify",
      "old_id": "caac162f32d31aefe0b597376c08798147b1fdcd",
      "old_mode": 33188,
      "old_path": "test/codesize/test_codesize_hello_dylink_all.json",
      "new_id": "e884ba00f9b9c4a85f73d2539f79f29ea0cf0d1c",
      "new_mode": 33188,
      "new_path": "test/codesize/test_codesize_hello_dylink_all.json"
    },
    {
      "type": "modify",
      "old_id": "8540fbab0c304580dcf37f831367bf00d53a6a70",
      "old_mode": 33188,
      "old_path": "tools/native_sigs.py",
      "new_id": "9e6fedb00eea504f1990f803df45e80509a3d1b3",
      "new_mode": 33188,
      "new_path": "tools/native_sigs.py"
    },
    {
      "type": "modify",
      "old_id": "795086bcda3070e46affd92d6b4d1238a6c64ed7",
      "old_mode": 33188,
      "old_path": "tools/system_libs.py",
      "new_id": "bbdf3944b8983547d8c125bc0466382cc9e2d3b3",
      "new_mode": 33188,
      "new_path": "tools/system_libs.py"
    }
  ]
}
