)]}'
{
  "commit": "2a8a527e90aa3b9a4c5418b60ada60c9c58ceb78",
  "tree": "f060b5db8efac9989250badb0cbbbe250559f313",
  "parents": [
    "14be0bbe4b8ed0af6dfbccc84de0af94fed4cd9d"
  ],
  "author": {
    "name": "Lokesh Gidra",
    "email": "lokeshgidra@google.com",
    "time": "Fri May 03 05:42:29 2024 +0000"
  },
  "committer": {
    "name": "Lokesh Gidra",
    "email": "lokeshgidra@google.com",
    "time": "Fri May 10 17:39:05 2024 +0000"
  },
  "message": "Register only the used portion of moving space in compaction pause\n\nThe unused portion of the moving space is where new TLABs are allocated.\nIn order to avoid userfaults during compaction in this portion, we were\nmapping a zero-page and then unregistering the unused portion after\nconcurrent compaction has begun. Prior to that, during comapction pause,\nwe were registering the entire space.\n\nSince gc-thread takes mmap_lock in write-mode for unregister, the\nconcurrent COPY ioctls from mutators get serialized. We can solve this\nby simply faulting in a page in the space before registering in the\ncompaction pause. This way we can directly register only the used\nportion.\n\nIn order to minimize mmap_lock read and write acquisitions, the CL also\nreorders the sequence in which gc-thread processes linear-alloc, and\nunregisters moving-space and linear-alloc space.\n\nBug: 320478828\nTest: manual\nChange-Id: I299bba8f6ba48ae05dc2c61cdb7783c6f2d01a81\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "46eb3ad522882f90b3d714b30d7486d034db249f",
      "old_mode": 33188,
      "old_path": "runtime/gc/collector/mark_compact.cc",
      "new_id": "b9eb3d207a9892bc789558ad4781f54d53cc248b",
      "new_mode": 33188,
      "new_path": "runtime/gc/collector/mark_compact.cc"
    }
  ]
}
