)]}'
{
  "commit": "8925a3875ffa2860ae954f738e7d0ed102c96e24",
  "tree": "4aea0afada6171e456ea84f5826e2741247ec819",
  "parents": [
    "b141bf9b1ea19272fde0cfbbdc7888d3f16526ac"
  ],
  "author": {
    "name": "Protobuf Team Bot",
    "email": "protobuf-github-bot@google.com",
    "time": "Tue Nov 15 12:57:59 2022 -0800"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Fri Nov 18 11:17:32 2022 -0800"
  },
  "message": "In arena, allocate strings on dedicated string blocks so that they can be efficiently destructed.\n\n- StringBlocks form a chunked linked list in which all nodes other than the first are full. When sizeof(void*)\u003d\u003d8 and sizeof(std::string)\u003d\u003d24, there are 21 strings per 512 byte StringBlock.\n- We no longer need to store cleanup nodes for std::string (when using AllocateAlignedWithCleanup) - instead we traverse the StringBlock list.\n- Template AllocAligned on is_string in order to avoid comparing the destructor against the string destructor on the allocation hot path.\n- Remove specialized cleanup blocks for string/cord. This allows for simplifying the allocation and cleanup code, and we still save memory due to no longer needing cleanup nodes for most strings.\n\nPiperOrigin-RevId: 488736123\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "327c26eaceb157cff64d195171842d630dc7e100",
      "old_mode": 33188,
      "old_path": "src/google/protobuf/arena.cc",
      "new_id": "633548d807576b1e415450b5f19a648a52277708",
      "new_mode": 33188,
      "new_path": "src/google/protobuf/arena.cc"
    },
    {
      "type": "modify",
      "old_id": "e76e66fabba30863769cc6013265d593c4594dd0",
      "old_mode": 33188,
      "old_path": "src/google/protobuf/arena.h",
      "new_id": "66fb0ccb5e34c8eedea99c279d14a67c36c0710b",
      "new_mode": 33188,
      "new_path": "src/google/protobuf/arena.h"
    },
    {
      "type": "modify",
      "old_id": "0ca60c25b2f1839ee95e1d90c95bd97bd6365937",
      "old_mode": 33188,
      "old_path": "src/google/protobuf/arena_cleanup.h",
      "new_id": "d567e0b6912c971b957b9bc744e0fbadc0e8c011",
      "new_mode": 33188,
      "new_path": "src/google/protobuf/arena_cleanup.h"
    },
    {
      "type": "modify",
      "old_id": "9d2de93396cb8abbf682bff0a8a9871ab7646029",
      "old_mode": 33188,
      "old_path": "src/google/protobuf/arena_impl.h",
      "new_id": "0a878dfe8695f5485a037320cfa3d26688a46440",
      "new_mode": 33188,
      "new_path": "src/google/protobuf/arena_impl.h"
    },
    {
      "type": "modify",
      "old_id": "4906cdd4261568d40d0d61e1c0f6fce794c30c45",
      "old_mode": 33188,
      "old_path": "src/google/protobuf/repeated_field_unittest.cc",
      "new_id": "d919694fa0963fa5f6d2a25d196790874c810245",
      "new_mode": 33188,
      "new_path": "src/google/protobuf/repeated_field_unittest.cc"
    }
  ]
}
