[HN Gopher] Poking holes into bytecode with peephole optimisations
       ___________________________________________________________________
        
       Poking holes into bytecode with peephole optimisations
        
       Author : ibobev
       Score  : 20 points
       Date   : 2026-01-15 14:19 UTC (3 days ago)
        
 (HTM) web link (xnacly.me)
 (TXT) w3m dump (xnacly.me)
        
       | elphard wrote:
       | I like that you are treating peephole as a strict fallback after
       | IR optimizations, with a tiny window and single pass. In a lot of
       | compilers this stage turns into a junk drawer of pattern matches
       | that quietly grow until no one remembers why half of them exist.
       | 
       | The opt_trace! hook is the underrated bit here. Once you start
       | rewriting instruction sequences, knowing which patterns fire and
       | how often on real programs is usually more valuable than another
       | synthetic benchmark. Keeping it behind -O1 is a nice way to make
       | sure you only pay for that complexity when users actually opt in.
        
       | lkey wrote:
       | The article is fine, except for the example, and I suppose by
       | extension, the grammar of the lang itself.
       | 
       | The example: 2+3*4-1 should resolve to either LR: 19 RL: -7
       | PEMDAS: 13
       | 
       | and never this: 15
       | 
       | Who would expect a language where add/sub is more tightly binding
       | than mul? Its feels akin to starting your indexes at 2, it's not
       | illegal, if you remember everything works, but its a true foot
       | gun in a scripting lang.
        
         | masklinn wrote:
         | Wouldn't RL be 11? 2+(3 _(4-1)) = 2+(3_ 3) = 2+9
        
           | lkey wrote:
           | Depends on how you interpret (4-1) in your rl lang, 3 or -3.
        
       | fweimer wrote:
       | Does it make sense to implement constant folding using peepholes
       | for an ISA like this (with plenty of registers and limited scope
       | for immediate operands)?
       | 
       | I would expect the constant loads to float away from their use
       | sites, so that more instructions can use them. For example, 0 or
       | 1 might be loaded at the start of the function.
        
       ___________________________________________________________________
       (page generated 2026-01-18 23:01 UTC)