)]}'
{
  "commit": "0a809f87c8faba9e4cbdab120bf1d575e31db802",
  "tree": "999e111bed839ba574c4a859257005c27ec9d9d6",
  "parents": [
    "187ec5a255435b6bd9e06ec1008979a6a5d77ebc"
  ],
  "author": {
    "name": "Jeroen Bobbeldijk",
    "email": "jerbob92@gmail.com",
    "time": "Wed Aug 26 18:20:47 2026 -0700"
  },
  "committer": {
    "name": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Aug 26 18:20:47 2026 -0700"
  },
  "message": "Composite opaque BGR rows via Zip() and skip per-pixel alpha division\n\nCompositeRow_Bgr2Bgra_NoBlend_NoClip() advanced through the source row\nby reassigning src_span via subspan(src_Bpp) once per pixel, which\nbounds-checks against the shrinking span\u0027s own size every iteration.\nThe compiler cannot elide that check, because the checked offset is a\nderived induction variable rather than the loop\u0027s own.\n\nThe caller knows the source format, so let it reinterpret the row into\nfixed-size pixel structs and hand the compositor a typed span. The row\nthen becomes a single fxcrt::Zip() loop that compares sizes once and\niterates checklessly.\n\nOn the per-pixel BGRA no-blend path, the two callers already branch on\nsrc_alpha, so they now handle a fully opaque source directly.\nAlphaUnion() would be 255, the ratio 255, and AlphaMerge(..., 255)\nreturns the source, so that case is a copy and skips the general path\u0027s\ndivision entirely. Opaque pixels dominate in real documents.\n\nBug: 549552310\nChange-Id: Iba8d9bf1326c8d9a539e1c4db614ee29405c83d3\nReviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/155530\nReviewed-by: Lei Zhang \u003cthestig@chromium.org\u003e\nReviewed-by: Tom Sepez \u003ctsepez@chromium.org\u003e\nCommit-Queue: Lei Zhang \u003cthestig@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2849e73d217c18046edc34fc5cb22de69aad11b3",
      "old_mode": 33188,
      "old_path": "core/fxge/dib/cfx_scanlinecompositor.cpp",
      "new_id": "498f80a929006b5fcd7b7c031a940f3ba9962d91",
      "new_mode": 33188,
      "new_path": "core/fxge/dib/cfx_scanlinecompositor.cpp"
    }
  ]
}
