)]}'
{
  "commit": "6aa963f780d63d4c8fa80de97dd79c932bc35f4e",
  "tree": "9213c8b16ea52efd9c93ea59cdfec3e70260d350",
  "parents": [
    "334e05b4b78a5de6efdcb23f208f3453a5b364a0"
  ],
  "author": {
    "name": "Mikhail Zakharov",
    "email": "zmish1993@gmail.com",
    "time": "Thu May 01 20:10:41 2025 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu May 01 11:10:41 2025 -0700"
  },
  "message": "[lldb] Do not bump memory modificator ID when \"internal\" debugger memory is updated (#129092)\n\nThis change adds a setting `target.process.track-memory-cache-changes`.\nDisabling this setting prevents invalidating and updating values in\n`ValueObject::UpdateValueIfNeeded` when only \"internal\" debugger memory\nis updated. Writing to \"internal\" debugger memory happens when, for\ninstance, expressions are evaluated by visualizers (pretty printers).\nOne of the examples when cache invalidation has a particularly heavy\nimpact is visualizations of some collections: in some collections\ngetting collection size is an expensive operation (it requires traversal\nof the collection).\nAt the same time evaluating user expression with side effects (visible\nto target, not only to debugger) will still bump memory ID because:\n\n- If expression is evaluated via interpreter: it will cause write to\n\"non-internal\" memory\n- If expression is JIT-compiled: then to call the function LLDB will\nwrite to \"non-internal\" stack memory\n\nThe downside of disabled `target.process.track-memory-cache-changes`\nsetting is that convenience variables won\u0027t reevaluate synthetic\nchildren automatically.\n\n---------\n\nCo-authored-by: Mikhail Zakharov \u003cmikhail.zakharov@jetbrains.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2d1489a2c96ea49e023ae6c699ac385e5f4128e5",
      "old_mode": 33188,
      "old_path": "lldb/include/lldb/Target/Memory.h",
      "new_id": "864ef6ca008022d08442a9401467e2fbc29f4806",
      "new_mode": 33188,
      "new_path": "lldb/include/lldb/Target/Memory.h"
    },
    {
      "type": "modify",
      "old_id": "f5ee01d3fa713c2b05eeb370be96d1ea6260c95d",
      "old_mode": 33188,
      "old_path": "lldb/include/lldb/Target/Process.h",
      "new_id": "536a69fb897590de5893e79242fd69998d3c76d3",
      "new_mode": 33188,
      "new_path": "lldb/include/lldb/Target/Process.h"
    },
    {
      "type": "modify",
      "old_id": "ed80c854ed66ee0870da8d7101674885dd8e31e5",
      "old_mode": 33188,
      "old_path": "lldb/source/Commands/CommandObjectProcess.cpp",
      "new_id": "d0f5eaf2dfd9a7b25688ef2341488b1b93229de1",
      "new_mode": 33188,
      "new_path": "lldb/source/Commands/CommandObjectProcess.cpp"
    },
    {
      "type": "modify",
      "old_id": "53864ff29327d6812983d60f362deafa33ba81ab",
      "old_mode": 33188,
      "old_path": "lldb/source/Commands/Options.td",
      "new_id": "14ade96832c681f4919f7275e6fb31f905f675f4",
      "new_mode": 33188,
      "new_path": "lldb/source/Commands/Options.td"
    },
    {
      "type": "modify",
      "old_id": "5cdd84f6640f007ede95405dfe5852954b184cf5",
      "old_mode": 33188,
      "old_path": "lldb/source/Target/Memory.cpp",
      "new_id": "9bfb8c349aa2cc909c8728e45944703f65b63dd2",
      "new_mode": 33188,
      "new_path": "lldb/source/Target/Memory.cpp"
    },
    {
      "type": "modify",
      "old_id": "73557eb767c7214506a7684458849afbdae794c6",
      "old_mode": 33188,
      "old_path": "lldb/source/Target/Process.cpp",
      "new_id": "7694175ee29d9b536e618da02687904682a30489",
      "new_mode": 33188,
      "new_path": "lldb/source/Target/Process.cpp"
    },
    {
      "type": "modify",
      "old_id": "3940ac00a2bd9c77659efc28355f7ea4c546b39d",
      "old_mode": 33188,
      "old_path": "lldb/source/Target/TargetProperties.td",
      "new_id": "14fa33cc22c1829dcb5d8bdc6202170cda82c3b3",
      "new_mode": 33188,
      "new_path": "lldb/source/Target/TargetProperties.td"
    },
    {
      "type": "modify",
      "old_id": "4eb868430b0068f11e554348baebe67d0d47e31e",
      "old_mode": 33188,
      "old_path": "lldb/test/API/commands/settings/TestSettings.py",
      "new_id": "4f4fa0e032b507ae9cbf4f630c9874faf6e844ed",
      "new_mode": 33188,
      "new_path": "lldb/test/API/commands/settings/TestSettings.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4fc88b62730c7b7fd4ec1c72c07e02cddfb47b78",
      "new_mode": 33188,
      "new_path": "lldb/test/Shell/Expr/TestExprWithSideEffect.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b41a81f6f31a9f0a97df77c4ec8c278c5ef8f695",
      "new_mode": 33188,
      "new_path": "lldb/test/Shell/Expr/TestExprWithSideEffectOnConvenienceVar.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8ac4b961f1ca9acb389bcd71d4b302a938b9c19a",
      "new_mode": 33188,
      "new_path": "lldb/test/Shell/Expr/TestExprWithSideEffectOnConvenienceVarWindows.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eea02665c0749dce3feeeec3ed37e546ea2578a4",
      "new_mode": 33188,
      "new_path": "lldb/test/Shell/Expr/TestProcessModificationIdOnExpr.cpp"
    }
  ]
}
