text: /*
  ** LuaJIT -- a Just-In-Time Compiler for Lua. http://luajit.org/
  **
  ** Copyright (C) 2005-2017 Mike Pall. All rights reserved.
  **
  ** Permission is hereby granted, free of charge, to any person obtaining
  ** a copy of this software and associated documentation files (the
  ** "Software"), to deal in the Software without restriction, including
  ** without limitation the rights to use, copy, modify, merge, publish,
  ** distribute, sublicense, and/or sell copies of the Software, and to
  ** permit persons to whom the Software is furnished to do so, subject to
  ** the following conditions:
  **
  ** The above copyright notice and this permission notice shall be
  ** included in all copies or substantial portions of the Software.
  **
  ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  **
  ** [ MIT license: http://www.opensource.org/licenses/mit-license.php ]
  */
  
  #ifndef _LUAJIT_H
  #define _LUAJIT_H
  
  #include "lua.h"
  
  #define LUAJIT_VERSION		"RaptorJIT 1.0.0"
  #define LUAJIT_VERSION_NUM	10000  /* Version 1.0.0 = 01.00.00. */
  #define LUAJIT_VERSION_SYM	luaJIT_version_1_0_0
  
  #define LUAJIT_URL		"http://github.com/raptorjit/raptorjit"
  
  /* Modes for luaJIT_setmode. */
  #define LUAJIT_MODE_MASK	0x00ff
  
  enum {
    LUAJIT_MODE_ENGINE,		/* Set mode for whole JIT engine. */
    LUAJIT_MODE_DEBUG,		/* Set debug mode (idx = level). */
  
    LUAJIT_MODE_FUNC,		/* Change mode for a function. */
    LUAJIT_MODE_ALLFUNC,		/* Recurse into subroutine protos. */
    LUAJIT_MODE_ALLSUBFUNC,	/* Change only the subroutines. */
  
    LUAJIT_MODE_TRACE,		/* Flush a compiled trace. */
  
    LUAJIT_MODE_WRAPCFUNC = 0x10,	/* Set wrapper mode for C function calls. */
  
    LUAJIT_MODE_MAX
  };
  
  /* Flags or'ed in to the mode. */
  #define LUAJIT_MODE_OFF		0x0000	/* Turn feature off. */
  #define LUAJIT_MODE_ON		0x0100	/* Turn feature on. */
  #define LUAJIT_MODE_FLUSH	0x0200	/* Flush JIT-compiled code. */
  
  /* LuaJIT public C API. */
  
  /* Control the JIT engine. */
  LUA_API int luaJIT_setmode(lua_State *L, int idx, int mode);
  
  /* VM profiling API. */
  LUA_API int luaJIT_vmprofile_start(lua_State *L);
  LUA_API int luaJIT_vmprofile_open(lua_State *L, const char *str, int noselect, int nostart);
  LUA_API int luaJIT_vmprofile_select(lua_State *L, void *ud);
  LUA_API int luaJIT_vmprofile_close(lua_State *L, void *ud);
  LUA_API int luaJIT_vmprofile_stop(lua_State *L);
  
  /* Enforce (dynamic) linker error for version mismatches. Call from main. */
  LUA_API void LUAJIT_VERSION_SYM(void);
  
  #endif
  