jit.off of single function could break programm

  • From: Юрий Соколов <funny.falcon@xxxxxxxxx>
  • To: luajit@xxxxxxxxxxxxx
  • Date: Thu, 21 Nov 2013 19:36:34 +0400

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

Other related posts: