aboutsummaryrefslogtreecommitdiffstats
path: root/docs/research/056-server-only-document-package.md
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-10-19 04:52:42 +0100
committereunhhu <[email protected]>2026-10-19 04:52:42 +0100
commitc80ac23fd74fe07e7e02514486fd0ecfbc8da779 (patch)
tree34200c62c847390022bb0d9f3a4c8e1d6193d58b /docs/research/056-server-only-document-package.md
parent6596533b0d5fe10f3cab028d7fa69a40e5416ecd (diff)
downloadpure-c80ac23fd74fe07e7e02514486fd0ecfbc8da779.tar.gz
pure-c80ac23fd74fe07e7e02514486fd0ecfbc8da779.zip
140: small block fns inlined in aup, made and measured, not merged (the patch kept): a block fn whose only return is its last line, with no loop or called where the stack is empty, written out where it is called, its parameters slots of its own (one set a fn and kinds of arguments in a handler); the three specs' checks passed, but inflate 191.2 instructions a byte as before and HTTP 61.4 to 62.1 (+1.1%, 277.7 to 274.9 ns): the hot fns (inflate's decode, HTTP's crlf) return early inside a loop, a fn with a loop cannot be written out where values are on the stack (Pure opens no loop above values), and storing a short body's parameters costs what CALL and PICK did; inflate's 23% was the expression fn bit's (a loop, a let and conversions gone with the call); what would make it pay is Pure's (loops above values, or a cheaper frame), one spec behind it; the decision point's list of what was made after it
Diffstat (limited to 'docs/research/056-server-only-document-package.md')
0 files changed, 0 insertions, 0 deletions