LuaJIT has only a single stand-alone executable, called luajit onPOSIX systems or luajit.exe on Windows. It can be used to run simpleLua statements or whole Lua applications from the command line. It has aninteractive mode, too.
The luajit stand-alone executable is just a slightly modifiedversion of the regular lua stand-alone executable.It supports the same basic options, too. luajit -hprints a short list of the available options. Please have a look at theLua manualfor details.
LuaJIT has some additional options:
This option saves or lists bytecode. The following additional optionsare accepted:
The output file type is auto-detected from the extension of the outputfile name:
Notes:
Typical usage examples:
luajit -b test.lua test.out # Save bytecode to test.outluajit -bg test.lua test.out # Keep debug infoluajit -be "print('hello world')" test.out # Save cmdline scriptluajit -bl test.lua # List to stdoutluajit -bl test.lua test.txt # List to test.txtluajit -ble "print('hello world')" # List cmdline scriptluajit -b test.lua test.obj # Generate object file# Link test.obj with your application and load it with require("test")
This option performs a LuaJIT control command or activates one of theloadable extension modules. The command is first looked up in thejit.* library. If no matching function is found, a modulenamed jit.<cmd> is loaded and the start()function of the module is called with the specified arguments (ifany). The space between -j and cmd is optional.
Here are the available LuaJIT control commands:
The -jv and -jdump commands are extension moduleswritten in Lua. They are mainly used for debugging the JIT compileritself. For a description of their options and output format, pleaseread the comment block at the start of their source.They can be found in the lib directory of the sourcedistribution or installed under the jit directory. By defaultthis is /usr/local/share/luajit-2.0.2/jit on POSIXsystems.
This options allows fine-tuned control of the optimizations used bythe JIT compiler. This is mainly intended for debugging LuaJIT itself.Please note that the JIT compiler is extremely fast (we are talkingabout the microsecond to millisecond range). Disabling optimizationsdoesn't have any visible impact on its overhead, but usually generatescode that runs slower.
The first form sets an optimization level — this enables aspecific mix of optimization flags. -O0 turns off alloptimizations and higher numbers enable more optimizations. Omittingthe level (i.e. just -O) sets the default optimization level,which is -O3 in the current version.
The second form adds or removes individual optimization flags.The third form sets a parameter for the VM or the JIT compilerto a specific value.
You can either use this option multiple times (like -Ocse-O-dce -Ohotloop=10) or separate several settings with a comma(like -O+cse,-dce,hotloop=10). The settings are applied fromleft to right and later settings override earlier ones. You can freelymix the three forms, but note that setting an optimization leveloverrides all earlier flags.
Here are the available flags and at what optimization levels theyare enabled:
Flag | -O1 | -O2 | -O3 | |
fold | ? | ? | ? | Constant Folding, Simplifications and Reassociation |
cse | ? | ? | ? | Common-Subexpression Elimination |
dce | ? | ? | ? | Dead-Code Elimination |
narrow | ? | ? | Narrowing of numbers to integers | |
loop | ? | ? | Loop Optimizations (code hoisting) | |
fwd | ? | Load Forwarding (L2L) and Store Forwarding (S2L) | ||
dse | ? | Dead-Store Elimination | ||
abc | ? | Array Bounds Check Elimination | ||
sink | ? | Allocation/Store Sinking | ||
fuse | ? | Fusion of operands into instructions |
Here are the parameters and their default settings:
Parameter | Default | |
maxtrace | 1000 | Max. number of traces in the cache |
maxrecord | 4000 | Max. number of recorded IR instructions |
maxirconst | 500 | Max. number of IR constants of a trace |
maxside | 100 | Max. number of side traces of a root trace |
maxsnap | 500 | Max. number of snapshots for a trace |
hotloop | 56 | Number of iterations to detect a hot loop or hot call |
hotexit | 10 | Number of taken exits to start a side trace |
tryside | 4 | Number of attempts to compile a side trace |
instunroll | 4 | Max. unroll factor for instable loops |
loopunroll | 15 | Max. unroll factor for loop ops in side traces |
callunroll | 3 | Max. unroll factor for pseudo-recursive calls |
recunroll | 2 | Min. unroll factor for true recursion |
sizemcode | 32 | Size of each machine code area in KBytes (Windows: 64K) |
maxmcode | 512 | Max. total size of all machine code areas in KBytes |
联系客服