)]}'
{
  "commit": "d4e9d956572a7bbf96a5500d70ddfe5a33f23ced",
  "tree": "6d03076555a2e09219f2607a468daea3d365f9ad",
  "parents": [
    "cedf6f8702e53a9575db8abec25925578271d11d"
  ],
  "author": {
    "name": "Nick Alcock",
    "email": "nick.alcock@oracle.com",
    "time": "Tue Jun 03 12:01:45 2025 +0100"
  },
  "committer": {
    "name": "Nick Alcock",
    "email": "nick.alcock@oracle.com",
    "time": "Wed Jun 04 12:51:28 2025 +0100"
  },
  "message": "libctf, dedup: reclaim space wasted by duplicate hidden types\n\nIn normal deduplicating links, we insert every type (identified by its\nunique hash) precisely once.  But conflicting types appear in multiple\ndicts, so for those, we loop, inserting them into every target dict\nin turn (each corresponding to an input dict that type appears in).\nBut in cu-mapped links, some of those dicts may have been merged into\none: now that we are hiding duplicate conflicting types more\naggressively in such links, we are getting duplicate identical hidden\ntypes turning up in large numbers.\n\nFix this by eliminating them in cu-mapping phase 1 (the phase in which this\nmerging takes place), by checking to see if a type with this hash has\nalready been inserted in this dict and skipping it if so.  This is\nredundant and a waste of time in other cu-mapping phases and in normal\nlinks, but in cu-mapped links it saves a few tens to hundreds of kilobytes\nin kernel-sized links.\n\nlibctf/\n\tPR libctf/33047\n\t* ctf-dedup.c (ctf_dedup_emit_type): Check for already-emitted\n\ttypes in cu-mapping phase 1.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0b1bfc27c40bf30a0ee15c3f772dfffebafb5008",
      "old_mode": 33188,
      "old_path": "libctf/ctf-dedup.c",
      "new_id": "c7c2eddc2b216b875d725645a69bf783a395b38c",
      "new_mode": 33188,
      "new_path": "libctf/ctf-dedup.c"
    }
  ]
}
