)]}'
{
  "commit": "6b52f6a1157f216d1a0f4d993dcd1481cc4c5c16",
  "tree": "f409dafa4b6555b29f4b4bf98c27fb3beddf82a8",
  "parents": [
    "1246ce661adcdec292f8c6b5f7d66e03e713da86"
  ],
  "author": {
    "name": "Vitaly Goldshteyn",
    "email": "goldvitaly@google.com",
    "time": "Thu Oct 22 03:46:51 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Thu Oct 29 14:15:01 2026 -0700"
  },
  "message": "Split AllocPolicy out of PolicyFunctions in raw_hash_set.\n\nMove layout and allocation information that is not needed by hot insert paths from `PolicyFunctions` into a separate `AllocPolicy`, referenced from `PolicyFunctions::alloc_policy`. Tables with the same slot/key/value sizes and a standard allocator share a single `AllocPolicy` instance.\n\n- New `HashtableTypeInfo` in `container_memory.h` holds the numeric fields (`slot_size`, `slot_align_mask`, `soo_enabled`, `is_hashtablez_enabled`, `alloc_offset`, `key_size`, `value_size`); `AllocPolicy` inherits it and adds `alloc` and `dealloc` (40 bytes).\n- `PolicyFunctions` shrinks from 64 to 40 bytes. `slot_size` is duplicated at offset 0 so hot paths (`PrepareInsertLarge*`, `GrowToNextCapacity*`, `RehashOrGrowToNextCapacityAndPrepareInsert`) never dereference `alloc_policy`.\n- `ForcedTrySample` takes `const HashtableTypeInfo\u0026` instead of four size arguments and returns an unsampled handle when `is_hashtablez_enabled` is false.\n- `HashtableSooCapacity()` is added to `container_memory.h`; `SooCapacity()` forwards to it.\n- `Clear`, `ClearBackingArray*`, `AllocBackingArray`, `DeallocBackingArrayImpl` and `ResizeEmptyNonAllocatedTableImpl` take `const AllocPolicy\u0026` directly.\n\nPiperOrigin-RevId: 1004649807\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fea860500a667b3c7a8234b381d7151385082ba5",
      "old_mode": 33188,
      "old_path": "absl/container/BUILD.bazel",
      "new_id": "345371ac270ddd025928a2c3917772df7f538ec7",
      "new_mode": 33188,
      "new_path": "absl/container/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "6432a69c6e12c684f689eace14771667e29682db",
      "old_mode": 33188,
      "old_path": "absl/container/CMakeLists.txt",
      "new_id": "5b33ebfc3f2b38285128b109f570b1cd212f5ed6",
      "new_mode": 33188,
      "new_path": "absl/container/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "175012ff13ae3e45398710b7ba4cb7fb08600fbc",
      "old_mode": 33188,
      "old_path": "absl/container/internal/container_memory.h",
      "new_id": "065d97acac51b2180b07bb6f33736012b126e577",
      "new_mode": 33188,
      "new_path": "absl/container/internal/container_memory.h"
    },
    {
      "type": "modify",
      "old_id": "8942cc306ca46d15a66030115824c715df43e475",
      "old_mode": 33188,
      "old_path": "absl/container/internal/hashtablez_sampler.cc",
      "new_id": "82929bb08ebcafbf68f1678d6e2c5ee4853e6878",
      "new_mode": 33188,
      "new_path": "absl/container/internal/hashtablez_sampler.cc"
    },
    {
      "type": "modify",
      "old_id": "628acf6687c8796fed3e7977b03388369fa64d43",
      "old_mode": 33188,
      "old_path": "absl/container/internal/hashtablez_sampler.h",
      "new_id": "0c7d63a740de8f624b32d1be0ab07412499aa753",
      "new_mode": 33188,
      "new_path": "absl/container/internal/hashtablez_sampler.h"
    },
    {
      "type": "modify",
      "old_id": "26083570aa5e17450c0f1780b6b05ea93f3e7d9b",
      "old_mode": 33188,
      "old_path": "absl/container/internal/raw_hash_set.cc",
      "new_id": "d7e10597e6d77865d50b81792296f893643bd2ff",
      "new_mode": 33188,
      "new_path": "absl/container/internal/raw_hash_set.cc"
    },
    {
      "type": "modify",
      "old_id": "dac9c3973c14f4254868a54a87962773f95769f8",
      "old_mode": 33188,
      "old_path": "absl/container/internal/raw_hash_set.h",
      "new_id": "8ca006f18f48ad6acfa503c2017970f003ba40b2",
      "new_mode": 33188,
      "new_path": "absl/container/internal/raw_hash_set.h"
    }
  ]
}
