)]}'
{
  "commit": "0981b0bde74d2157cd8ed4ff0223641967a66326",
  "tree": "9848e7ffa092e8de574da576a6e24d266f0729f5",
  "parents": [
    "cf015c9b764fae69f2140ff2504cb9a4e3de06fc"
  ],
  "author": {
    "name": "Vitaly Goldshteyn",
    "email": "goldvitaly@google.com",
    "time": "Tue Oct 27 14:28:52 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Oct 28 16:04:02 2026 -0700"
  },
  "message": "Reduce the per-flag code size of ABSL_FLAG default value generators.\n\nPreviously, every non-arithmetic `ABSL_FLAG` emitted its own `AbslFlagDefaultGenFor\u003cname\u003e::Gen` function. Because its address is stored in the flag, identical code folding could not merge duplicate generators, and each body materialized a temporary wrapper struct, copy- or move-constructed the flag value from its member, and destroyed the temporary.\n\n`absl::flags_internal::DefaultArg` now selects the cheapest representation for a flag\u0027s default value:\n* Arithmetic `constexpr` defaults continue to be stored inline (`kOneWord`).\n* Empty defaults (`{}`, `std::nullopt`, and empty `std::string` literals or views) share a single `GenDefaultValue\u003cT\u003e` function per type, with `std::string` and `std::vector\u003cstd::string\u003e` explicitly instantiated in `flag.cc`.\n* Remaining per-flag `Gen` functions construct `Type` directly in place via `InitDefaultValue`, avoiding intermediate temporaries and exception landing pads when converting class types from literals or `const char*`.\n\nPlacing the generated `AbslFlagHelpGenFor\u003cname\u003e` and `AbslFlagDefaultGenFor\u003cname\u003e` structs in an unnamed namespace also allows applying `ABSL_INTERNAL_UNIQUE_SMALL_NAME()` to the remaining per-flag helper functions.\n\nPiperOrigin-RevId: 1008379642\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2e9a9e6c4762a6c4ea7ba486b9b3dcc291fee5d7",
      "old_mode": 33188,
      "old_path": "absl/flags/flag.h",
      "new_id": "d5f40a00666bb492a525711b79429a718bb61d03",
      "new_mode": 33188,
      "new_path": "absl/flags/flag.h"
    },
    {
      "type": "modify",
      "old_id": "5cacf6470de8df1e23bd327fdbed1fe05f18e72c",
      "old_mode": 33188,
      "old_path": "absl/flags/flag_test.cc",
      "new_id": "d9466e1366bb46a1e3d718630a033db8e43f6115",
      "new_mode": 33188,
      "new_path": "absl/flags/flag_test.cc"
    },
    {
      "type": "modify",
      "old_id": "662b342bb76fe095a827d55ffb419218e29163dc",
      "old_mode": 33188,
      "old_path": "absl/flags/internal/flag.cc",
      "new_id": "32861f7f370e18fdc8717fde96e0b620783f40f9",
      "new_mode": 33188,
      "new_path": "absl/flags/internal/flag.cc"
    },
    {
      "type": "modify",
      "old_id": "8baff43f8ddce530c6085441ebc040658e268fc3",
      "old_mode": 33188,
      "old_path": "absl/flags/internal/flag.h",
      "new_id": "d400fb3f89915bc4ccd2d490b09865f6922e5bb0",
      "new_mode": 33188,
      "new_path": "absl/flags/internal/flag.h"
    }
  ]
}
