I've played with LPegLJ and found, than applying `jit.off` to several functions made them (or perhaps some other functions) broken. Test is on fail_jit_off branch at https://github.com/funny-falcon/LPegLJ/tree/fail_jit_off With jit.off(getfirst) in lpcode.lua $ luajit tpe2.lua luajit: ./src/lpcode.lua:374: cannot convert 'nil' to 'unsigned int' stack traceback: ./src/lpcode.lua:374: in function 'getfirst' ./src/lpcode.lua:395: in function 'getfirst' ./src/lpcode.lua:664: in function 'codechoice' ./src/lpcode.lua:891: in function 'codegen' ./src/lpcode.lua:870: in function 'codeseq' ./src/lpcode.lua:889: in function 'codegen' ./src/lpcode.lua:843: in function 'codegrammar' ./src/lpcode.lua:905: in function 'codegen' ./src/lpcode.lua:870: in function 'codeseq' ./src/lpcode.lua:889: in function 'codegen' ./src/lpcode.lua:870: in function 'codeseq' ./src/lpcode.lua:889: in function 'codegen' ./src/lpcode.lua:730: in function 'codecapture' ./src/lpcode.lua:901: in function 'codegen' ./src/lpcode.lua:865: in function 'codeseq' ./src/lpcode.lua:889: in function 'codegen' ./src/lpcode.lua:961: in function 'compile' ./src/lpeglj.lua:897: in function 'prepcompile' ./src/lpeglj.lua:944: in function 'match' ./src/re.lua:208: in function 'compile' tpe2.lua:37: in main chunk [C]: at 0x004049d0 Without jit.off(getfirst) all works fine. With respect, Sokolov Yura aka funny_falcon