)]}'
{
  "commit": "21d7873fb7a01c0163c869631971086dc92a3d82",
  "tree": "d908ff3de9305121d5b3cfa124e11d376d67d926",
  "parents": [
    "761ddc54db31993f215a49d53326d6a879d4cfb7"
  ],
  "author": {
    "name": "Abseil Team",
    "email": "absl-team@google.com",
    "time": "Mon Oct 26 07:40:49 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Mon Oct 26 07:41:38 2026 -0700"
  },
  "message": "Optimize `resize()` shrinking and simplify `assign()` in `absl::chunked_queue`.\n\nNow that `ChunkedQueueBlock` is doubly-linked (`prev()`), use backward block traversal to optimize and simplify erase operations:\n\n1. Replace `iterator_common::IncrBy()` with `DecrBy()` and update `resize(size_t new_size)` when shrinking (`new_size \u003c size()`) to walk backward from `end()` via `DecrBy(size() - new_size)` instead of walking forward from `begin()` via `IncrBy(new_size)`. This avoids traversing the kept prefix blocks and reduces shrinking time complexity from O(B_kept + N_removed) to O(N_removed).\n\n2. Move the block-boundary adjustment (`i.ptr \u003d\u003d i.block-\u003estart() \u0026\u0026 i.block-\u003eprev() !\u003d nullptr`) directly into `EraseAllFrom(iterator i)`, eliminating the need to track `prev_block` on every element iteration and special-case block boundaries in `assign(Iter first, Iter last)`.\n\nPiperOrigin-RevId: 1007269347\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7dba5dc484110369eb33a6f6b85c0b930d91e92a",
      "old_mode": 33188,
      "old_path": "absl/container/chunked_queue.h",
      "new_id": "a027291abde2e010b3054d2c70ef93081e297851",
      "new_mode": 33188,
      "new_path": "absl/container/chunked_queue.h"
    }
  ]
}
