)]}'
{
  "commit": "8d7162bbb8303aebe8709b1e7cbd04f87e73e017",
  "tree": "bc3cd8056059e342a95f5e366aff12e3a769c454",
  "parents": [
    "f3082a66f2d2ac39ca90242fc001b2012fd16802"
  ],
  "author": {
    "name": "Lalit Maganti",
    "email": "lalitmaganti@gmail.com",
    "time": "Wed Sep 02 23:40:17 2026 +0100"
  },
  "committer": {
    "name": "Lalit Maganti",
    "email": "lalitmaganti@gmail.com",
    "time": "Thu Sep 03 00:28:51 2026 +0100"
  },
  "message": "ui: add source and assembly view for callstack sample functions\n\nAdd a details tab showing a function\u0027s source and disassembly, each\nline and instruction annotated with the number of samples taken on it\n(self) and including its callees (total), shaded by share of the\nhottest row. The data comes from the source_file and disassembly tables\npopulated by `trace_processor bundle` and the callstacks.annotate\nstdlib module; when neither source nor disassembly was bundled the tab\nexplains how to bundle them.\n\nSource is syntax highlighted for C, C++ and Rust and instructions for\ntheir mnemonics, registers and numbers, with a small dependency-free\ntokenizer. The assembly view draws branches to targets within the\nfunction as arrows in a gutter, packed into lanes with loops coloured\ndistinctly, each row rendering its own slice so the listing stays\nvirtualized.\n\nThe tab opens from a \"View source \u0026 assembly\" action on flamegraph\nnodes of the stack sample flamegraphs, both for area selections and for\nsingle samples. To locate the function, the stack sample metrics carry\nthe source file, sampled address and mapping id of each node as hidden\nproperties.\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e9d828626dd6f667c1d2e52337252de1b086c230",
      "new_mode": 33188,
      "new_path": "ui/src/components/source_annotation/highlight.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d8cc001f3a83cfac7dcca8d01c3622be844986de",
      "new_mode": 33188,
      "new_path": "ui/src/components/source_annotation/highlight_unittest.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "858a649380c4700ebfacefd00358be23fb33dd56",
      "new_mode": 33188,
      "new_path": "ui/src/components/source_annotation/jump_arrows.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d325ce851cad21a1d65ff4e1af6b2db639d5c9a2",
      "new_mode": 33188,
      "new_path": "ui/src/components/source_annotation/jump_arrows_unittest.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ad3c7d0516164a5a5b6b8f4ef24c0714e6800c98",
      "new_mode": 33188,
      "new_path": "ui/src/components/source_annotation/source_annotation_loader.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7c3c558bb4382d1745ed4cfaa55f3f721d33476",
      "new_mode": 33188,
      "new_path": "ui/src/components/source_annotation/source_annotation_panel.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8b3e304792daf70587e52479690bc06eb7278e5d",
      "new_mode": 33188,
      "new_path": "ui/src/components/source_annotation/source_annotation_panel.ts"
    },
    {
      "type": "modify",
      "old_id": "ecfc509978814325635a884cf30af54ad28af047",
      "old_mode": 33188,
      "old_path": "ui/src/plugins/dev.perfetto.StackSamples/index.ts",
      "new_id": "f307adc868c642c9046c2897c374c419bd556a2a",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.StackSamples/index.ts"
    },
    {
      "type": "modify",
      "old_id": "38ae410a3574dad8709dfc84cdeae631f8afacf9",
      "old_mode": 33188,
      "old_path": "ui/src/plugins/dev.perfetto.StackSamples/profiling_track.ts",
      "new_id": "af095c27c09977ba34d8562a8a553fd5136fa07f",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.StackSamples/profiling_track.ts"
    }
  ]
}
