)]}'
{
  "commit": "d4fc9dd5ecb6175c7cd299280e7f00e5e797d2a1",
  "tree": "a0279be0cc4500897379886c35e72a6915d5c537",
  "parents": [
    "5694beb50cc837f6cbdd770b80dd3b09430e4a7d"
  ],
  "author": {
    "name": "Lalit Maganti",
    "email": "lalitmaganti@gmail.com",
    "time": "Fri Aug 28 04:25:06 2026 +0100"
  },
  "committer": {
    "name": "Lalit Maganti",
    "email": "lalitmaganti@gmail.com",
    "time": "Fri Sep 04 01:01:54 2026 +0100"
  },
  "message": "tp: parse appended trace data without copying it\n\nTrace bytes arrive zero-copy into the tokenizer, and then Rpc::Parse\ncopies them straight back out because TraceProcessor needs to own what\nit is given. For APPEND_TRACE_DATA that is a 32 MB memcpy per chunk,\nwhich undoes the whole chain, on the wasm and httpd paths as much as\nanywhere else.\n\nHand the parser the tokenizer\u0027s message instead: TraceBlob holds it for\nas long as the bytes are needed, and the ring buffer moves onto another\nbuffer rather than recycling one still being read. Dispatching a message\nnow means handing over its bytes, so OnRpcMessage() takes an owned\nmessage rather than a pointer and a length.\n\nout/linux_clang_release/perfetto_integrationtests \\\n    --gtest_filter\u003d\u0027*Remote*:*Stdiod*:*ServerUnix*\u0027\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3da52a0535d9a127371be62c61191ef4f7e939ba",
      "old_mode": 33188,
      "old_path": "src/trace_processor/rpc/rpc.cc",
      "new_id": "0e7573dd7e7f5303dd60d7ff6d825c7fe7627c5e",
      "new_mode": 33188,
      "new_path": "src/trace_processor/rpc/rpc.cc"
    },
    {
      "type": "modify",
      "old_id": "cb3d42de43b366e7eaf2d021f9313bc6275dfb77",
      "old_mode": 33188,
      "old_path": "src/trace_processor/rpc/rpc.h",
      "new_id": "0ebca7cd5afb7a388254c00ff5d53e14ab6ce31e",
      "new_mode": 33188,
      "new_path": "src/trace_processor/rpc/rpc.h"
    }
  ]
}
