)]}'
{
  "commit": "d13ede8e6034ed7a65c4cbd0ab7b76211a63a600",
  "tree": "7ac69658c996670193c49a5b6896159c0c7f4811",
  "parents": [
    "a4914364994ba99e65711945a86d357747fed390"
  ],
  "author": {
    "name": "Nico Weber",
    "email": "thakis@chromium.org",
    "time": "Sat Sep 05 14:08:24 2026 -0700"
  },
  "committer": {
    "name": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Sat Sep 05 14:08:24 2026 -0700"
  },
  "message": "Remove one duplicated jbig2 huffman code reading loop\n\nThe motivation is that I\u0027d like to optimize the huffman symbol\nreading loop that\u0027s currently repeated in\n1. CJBig2_HuffmanDecoder::DecodeAValue()\n2. CJBig2_Context::DecodeSymbolIDHuffmanTable() (for reading `runcode`)\n3. CJBig2_TRDProc::DecodeHuffman() (for reading `IDI`)\n\nI mostly care about optimizing the last one, but it seems nicer to\ndedupe them first.\n\nThis implements the 2nd in terms of the 1st; the 3rd is for a future CL.\n\n* ParseFromStandardTable() becomes ParseFromTable() and receives\n  a HuffmanTable instead of an index. This simplifies the\n  CJBig2_HuffmanTable(int) constructor a bit, which used to\n  load each built-in table in the ctor, and then again in\n  ParseFromStandardTable(). This requires moving `struct HuffmanTable`\n  to the header. (It\u0027s still an internal type, but as it\u0027s used by\n  private functions, we have to move it over. If we wanted, we could\n  put it inside the class, in the `private:` section.)\n\n* Add a constructor that builds a CJBig2_HuffmanTable from just\n  code lengths.\n\n* Call that from CJBig2_Context::DecodeSymbolIDHuffmanTable()\n\nWhile here, add a comment over `lines`, and fix\n`RANDELEN` -\u003e `RANGELEN` typo.\n\nNo intended behavior change.\n\n(Linked bug vaguely related: I want to bump some limit, but things\nare currently very slow with high symbol count, even with the current\nlimit.)\n\nBug: 555145149\nChange-Id: If29d5d11951a47cf7b32f61d6147054f3fffd684\nReviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156810\nCommit-Queue: Nico Weber \u003cthakis@chromium.org\u003e\nReviewed-by: Nico Weber \u003cthakis@google.com\u003e\nReviewed-by: Tom Sepez \u003ctsepez@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "219946e010c5aca30022d3a362b2051143f49c5b",
      "old_mode": 33188,
      "old_path": "core/fxcodec/jbig2/jbig2_context.cpp",
      "new_id": "a731247922d0579aad2d80f38dd9a2ea02f3652e",
      "new_mode": 33188,
      "new_path": "core/fxcodec/jbig2/jbig2_context.cpp"
    },
    {
      "type": "modify",
      "old_id": "f040a09a9bcadd061547c042854514e96871ceb7",
      "old_mode": 33188,
      "old_path": "core/fxcodec/jbig2/jbig2_huffman_table.cpp",
      "new_id": "2cdf63da4d2d1a47dd50ff66860bf686b6bdecf4",
      "new_mode": 33188,
      "new_path": "core/fxcodec/jbig2/jbig2_huffman_table.cpp"
    },
    {
      "type": "modify",
      "old_id": "7f5d5a066db9eccd77b8dcef2088070500812aac",
      "old_mode": 33188,
      "old_path": "core/fxcodec/jbig2/jbig2_huffman_table.h",
      "new_id": "9a5723f1b21f2a6a5ac0361c13b2efec1f1688c0",
      "new_mode": 33188,
      "new_path": "core/fxcodec/jbig2/jbig2_huffman_table.h"
    }
  ]
}
