summaryrefslogtreecommitdiff
path: root/fpdfsdk/src/fpdf_progressive.cpp
diff options
context:
space:
mode:
authorBruce Dawson <brucedawson@google.com>2015-01-05 15:18:21 -0800
committerBruce Dawson <brucedawson@google.com>2015-01-05 15:18:21 -0800
commite68d624e4e6c0f2e4197b77e24728c419e6ccf2f (patch)
tree83c71a6d793369ac354de01c3e929a3a2d8a5041 /fpdfsdk/src/fpdf_progressive.cpp
parent3872ad9b04ae898deaa23a76ba2a5f1d0f946e04 (diff)
downloadpdfium-e68d624e4e6c0f2e4197b77e24728c419e6ccf2f.tar.xz
XFA: merge patch from CL 792043005, run-time hashing.
Remove run-time calculation of hash constants in pdfium. PDFium static initializers must go. Static initializers are prohibited by the style guide. They have negative consequences including increased startup time (from pulling in additional code pages) and reduced sharing of data pages (since the variables can't go in the read-only data segment). This change uses a template struct and typed enums to reproduce JS_CalcHash at run-time. An unsigned long long constant and masking with 0xFFFFFFFF are used to avoid compile errors due to integer overflow of compile-time constants. The HashVerify class is used to check the results, necessary since none of the functions in global.cpp are called when pdfium_test.exe runs. const_expr would be a much cleaner way to implement this change but it is not yet widely supported. On the Windows release build this reduces the code size (.text virtual size) by 0x240 (576) bytes, the .data section by 0x20 bytes (for eight unsigned globals), and the .rdata section by 0x20 bytes (the unneeded string savings, minus the eight unsigned globals now being there). BUG=441899 TBR=tsepez@chromium.org Review URL: https://codereview.chromium.org/792043005 Review URL: https://codereview.chromium.org/828883004
Diffstat (limited to 'fpdfsdk/src/fpdf_progressive.cpp')
0 files changed, 0 insertions, 0 deletions