)]}'
{
  "commit": "001659f1e3ce0712df6cd773af3a0af816510ddf",
  "tree": "cd53e946e49d0583fa153157b7d28729de708871",
  "parents": [
    "7a55cd2f657d4a2f233cef74eadf73a24a200cdb"
  ],
  "author": {
    "name": "Vitaly Goldshteyn",
    "email": "goldvitaly@google.com",
    "time": "Wed Oct 21 02:47:29 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Oct 21 02:48:03 2026 -0700"
  },
  "message": "Store hasher and allocator offsets in PolicyFunctions instead of accessor function pointers.\n\n`PolicyFunctions` carried two per-instantiation accessor functions, `hash_fn` and `get_char_alloc`, whose only job was to compute the address of the hasher and of the allocator from a `CommonFields\u0026`. Every type-erased growth, rehash, and copy path paid an indirect call for what is a compile-time constant offset, the calls acted as optimization barriers (values had to be moved into callee-saved registers or spilled around them).\n\nReplace the two function pointers with 32 bit offsets computed with `offsetof`.\n\n`sizeof(PolicyFunctions)` shrinks from 72 to 64 bytes (one cache line), `GetRefForEmptyClass` and the per-instantiation accessor functions disappear, and the type-erased code in `raw_hash_set.cc` shrinks by 95 bytes (-0.45%) in optimized builds.\n\nPiperOrigin-RevId: 1003783299\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7792be02514de1a2112e022f687aa48621e43897",
      "old_mode": 33188,
      "old_path": "absl/container/BUILD.bazel",
      "new_id": "fea860500a667b3c7a8234b381d7151385082ba5",
      "new_mode": 33188,
      "new_path": "absl/container/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "82548bc642340a74d8eed8e8c35bfeea3d5320b4",
      "old_mode": 33188,
      "old_path": "absl/container/CMakeLists.txt",
      "new_id": "6432a69c6e12c684f689eace14771667e29682db",
      "new_mode": 33188,
      "new_path": "absl/container/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "285d269d9f1cb1ad56f587a596289a1d56085ccd",
      "old_mode": 33188,
      "old_path": "absl/container/internal/raw_hash_set.cc",
      "new_id": "7892d2d40691618268e2183049ce2b6566e7ac9f",
      "new_mode": 33188,
      "new_path": "absl/container/internal/raw_hash_set.cc"
    },
    {
      "type": "modify",
      "old_id": "2d9e654f25f1ec4d6eebd0780a24267a955f349b",
      "old_mode": 33188,
      "old_path": "absl/container/internal/raw_hash_set.h",
      "new_id": "49e5b2e7d471c823c9d8b8f3a6d64253fbbfefd3",
      "new_mode": 33188,
      "new_path": "absl/container/internal/raw_hash_set.h"
    },
    {
      "type": "modify",
      "old_id": "ed25c05f2efc53750e4bfeb0f654722b7f339ff1",
      "old_mode": 33188,
      "old_path": "absl/container/internal/raw_hash_set_test.cc",
      "new_id": "1268851c1b197e3070735a1b023505cf739eb95b",
      "new_mode": 33188,
      "new_path": "absl/container/internal/raw_hash_set_test.cc"
    }
  ]
}
