mirror of
				https://github.com/openresty/openresty.git
				synced 2024-10-13 00:29:41 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			183 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			183 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
=pod
 | 
						|
 | 
						|
LuaJIT
 | 
						|
 | 
						|
=head1 C<jit.*> Library
 | 
						|
 | 
						|
=over
 | 
						|
 | 
						|
=item * LuaJIT
 | 
						|
 | 
						|
=over
 | 
						|
 | 
						|
=item * Download E<rchevron>
 | 
						|
 | 
						|
=item * Installation
 | 
						|
 | 
						|
=item * Running
 | 
						|
 | 
						|
=back
 | 
						|
 | 
						|
=item * Extensions
 | 
						|
 | 
						|
=over
 | 
						|
 | 
						|
=item * FFI Library
 | 
						|
 | 
						|
=over
 | 
						|
 | 
						|
=item * FFI Tutorial
 | 
						|
 | 
						|
=item * ffi.* API
 | 
						|
 | 
						|
=item * FFI Semantics
 | 
						|
 | 
						|
=back
 | 
						|
 | 
						|
=item * jit.* Library
 | 
						|
 | 
						|
=item * Lua/C API
 | 
						|
 | 
						|
=item * Profiler
 | 
						|
 | 
						|
=back
 | 
						|
 | 
						|
=item * Status
 | 
						|
 | 
						|
=over
 | 
						|
 | 
						|
=item * Changes
 | 
						|
 | 
						|
=back
 | 
						|
 | 
						|
=item * FAQ
 | 
						|
 | 
						|
=item * Performance E<rchevron>
 | 
						|
 | 
						|
=item * Wiki E<rchevron>
 | 
						|
 | 
						|
=item * Mailing List E<rchevron>
 | 
						|
 | 
						|
=back
 | 
						|
 | 
						|
The functions in this built-in module control the behavior of the JIT
 | 
						|
compiler engine. Note that JIT-compilation is fully automatic E<mdash>
 | 
						|
you probably won't need to use any of the following functions unless
 | 
						|
you have special needs.
 | 
						|
 | 
						|
=head2 jit.on()
 | 
						|
 | 
						|
jit.off()
 | 
						|
 | 
						|
Turns the whole JIT compiler on (default) or off.
 | 
						|
 | 
						|
These functions are typically used with the command line options C<-j
 | 
						|
on> or C<-j off>.
 | 
						|
 | 
						|
=head2 C<jit.flush()>
 | 
						|
 | 
						|
Flushes the whole cache of compiled code.
 | 
						|
 | 
						|
=head2 jit.on(func|true [,true|false])
 | 
						|
 | 
						|
jit.off(func|true [,true|false])
 | 
						|
 | 
						|
jit.flush(func|true [,true|false])
 | 
						|
 | 
						|
C<jit.on> enables JIT compilation for a Lua function (this is the
 | 
						|
default).
 | 
						|
 | 
						|
C<jit.off> disables JIT compilation for a Lua function and flushes any
 | 
						|
already compiled code from the code cache.
 | 
						|
 | 
						|
C<jit.flush> flushes the code, but doesn't affect the enable/disable
 | 
						|
status.
 | 
						|
 | 
						|
The current function, i.e. the Lua function calling this library
 | 
						|
function, can also be specified by passing C<true> as the first
 | 
						|
argument.
 | 
						|
 | 
						|
If the second argument is C<true>, JIT compilation is also enabled,
 | 
						|
disabled or flushed recursively for all sub-functions of a function.
 | 
						|
With C<false> only the sub-functions are affected.
 | 
						|
 | 
						|
The C<jit.on> and C<jit.off> functions only set a flag which is checked
 | 
						|
when the function is about to be compiled. They do not trigger
 | 
						|
immediate compilation.
 | 
						|
 | 
						|
Typical usage is C<jit.off(true, true)> in the main chunk of a module
 | 
						|
to turn off JIT compilation for the whole module for debugging
 | 
						|
purposes.
 | 
						|
 | 
						|
=head2 C<jit.flush(tr)>
 | 
						|
 | 
						|
Flushes the root trace, specified by its number, and all of its side
 | 
						|
traces from the cache. The code for the trace will be retained as long
 | 
						|
as there are any other traces which link to it.
 | 
						|
 | 
						|
=head2 C<status, ... = jit.status()>
 | 
						|
 | 
						|
Returns the current status of the JIT compiler. The first result is
 | 
						|
either C<true> or C<false> if the JIT compiler is turned on or off. The
 | 
						|
remaining results are strings for CPU-specific features and enabled
 | 
						|
optimizations.
 | 
						|
 | 
						|
=head2 C<jit.version>
 | 
						|
 | 
						|
Contains the LuaJIT version string.
 | 
						|
 | 
						|
=head2 C<jit.version_num>
 | 
						|
 | 
						|
Contains the version number of the LuaJIT core. Version xx.yy.zz is
 | 
						|
represented by the decimal number xxyyzz.
 | 
						|
 | 
						|
=head2 C<jit.os>
 | 
						|
 | 
						|
Contains the target OS name: "Windows", "Linux", "OSX", "BSD", "POSIX"
 | 
						|
or "Other".
 | 
						|
 | 
						|
=head2 C<jit.arch>
 | 
						|
 | 
						|
Contains the target architecture name: "x86", "x64", "arm", "arm64",
 | 
						|
"ppc", "mips" or "mips64".
 | 
						|
 | 
						|
=head2 C<jit.opt.*> E<mdash> JIT compiler optimization control
 | 
						|
 | 
						|
This sub-module provides the backend for the C<-O> command line option.
 | 
						|
 | 
						|
You can also use it programmatically, e.g.:
 | 
						|
 | 
						|
 jit.opt.start(2) -- same as -O2
 | 
						|
 jit.opt.start("-dce")
 | 
						|
 jit.opt.start("hotloop=10", "hotexit=2")
 | 
						|
 | 
						|
Unlike in LuaJIT 1.x, the module is built-in and B<optimization is
 | 
						|
turned on by default!> It's no longer necessary to run
 | 
						|
C<require("jit.opt").start()>, which was one of the ways to enable
 | 
						|
optimization.
 | 
						|
 | 
						|
=head2 C<jit.util.*> E<mdash> JIT compiler introspection
 | 
						|
 | 
						|
This sub-module holds functions to introspect the bytecode, generated
 | 
						|
traces, the IR and the generated machine code. The functionality
 | 
						|
provided by this module is still in flux and therefore undocumented.
 | 
						|
 | 
						|
The debug modules C<-jbc>, C<-jv> and C<-jdump> make extensive use of
 | 
						|
these functions. Please check out their source code, if you want to
 | 
						|
know more.
 | 
						|
 | 
						|
----
 | 
						|
 | 
						|
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
 | 
						|
 | 
						|
=cut
 | 
						|
 | 
						|
#Pod::HTML2Pod conversion notes:
 | 
						|
#From file ext_jit.html
 | 
						|
# 5903 bytes of input
 | 
						|
#Mon May 14 13:19:16 2018 agentzh
 | 
						|
# No a_name switch not specified, so will not try to render <a name='...'>
 | 
						|
# No a_href switch not specified, so will not try to render <a href='...'>
 | 
						|
# Deleting phrasal "code" element (`tt_6) because it has super-phrasal elements (`br_2, `br_3) as children.
 | 
						|
# Deleting phrasal "code" element (`tt_2) because it has super-phrasal elements (`br_1) as children.
 |