src/luajit.h - luajit-2.0-src

Data types defined

Macros defined

Source code

  1. /*
  2. ** LuaJIT -- a Just-In-Time Compiler for Lua. http://luajit.org/
  3. **
  4. ** Copyright (C) 2005-2015 Mike Pall. All rights reserved.
  5. **
  6. ** Permission is hereby granted, free of charge, to any person obtaining
  7. ** a copy of this software and associated documentation files (the
  8. ** "Software"), to deal in the Software without restriction, including
  9. ** without limitation the rights to use, copy, modify, merge, publish,
  10. ** distribute, sublicense, and/or sell copies of the Software, and to
  11. ** permit persons to whom the Software is furnished to do so, subject to
  12. ** the following conditions:
  13. **
  14. ** The above copyright notice and this permission notice shall be
  15. ** included in all copies or substantial portions of the Software.
  16. **
  17. ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  18. ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  19. ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  20. ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  21. ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  22. ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  23. ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  24. **
  25. ** [ MIT license: http://www.opensource.org/licenses/mit-license.php ]
  26. */

  27. #ifndef _LUAJIT_H
  28. #define _LUAJIT_H

  29. #include "lua.h"

  30. #define LUAJIT_VERSION                "LuaJIT 2.1.0-alpha"
  31. #define LUAJIT_VERSION_NUM        20100  /* Version 2.1.0 = 02.01.00. */
  32. #define LUAJIT_VERSION_SYM        luaJIT_version_2_1_0_alpha
  33. #define LUAJIT_COPYRIGHT        "Copyright (C) 2005-2015 Mike Pall"
  34. #define LUAJIT_URL                "http://luajit.org/"

  35. /* Modes for luaJIT_setmode. */
  36. #define LUAJIT_MODE_MASK        0x00ff

  37. enum {
  38.   LUAJIT_MODE_ENGINE,                /* Set mode for whole JIT engine. */
  39.   LUAJIT_MODE_DEBUG,                /* Set debug mode (idx = level). */

  40.   LUAJIT_MODE_FUNC,                /* Change mode for a function. */
  41.   LUAJIT_MODE_ALLFUNC,                /* Recurse into subroutine protos. */
  42.   LUAJIT_MODE_ALLSUBFUNC,        /* Change only the subroutines. */

  43.   LUAJIT_MODE_TRACE,                /* Flush a compiled trace. */

  44.   LUAJIT_MODE_WRAPCFUNC = 0x10,        /* Set wrapper mode for C function calls. */

  45.   LUAJIT_MODE_MAX
  46. };

  47. /* Flags or'ed in to the mode. */
  48. #define LUAJIT_MODE_OFF                0x0000        /* Turn feature off. */
  49. #define LUAJIT_MODE_ON                0x0100        /* Turn feature on. */
  50. #define LUAJIT_MODE_FLUSH        0x0200        /* Flush JIT-compiled code. */

  51. /* LuaJIT public C API. */

  52. /* Control the JIT engine. */
  53. LUA_API int luaJIT_setmode(lua_State *L, int idx, int mode);

  54. /* Low-overhead profiling API. */
  55. typedef void (*luaJIT_profile_callback)(void *data, lua_State *L,
  56.                                         int samples, int vmstate);
  57. LUA_API void luaJIT_profile_start(lua_State *L, const char *mode,
  58.                                   luaJIT_profile_callback cb, void *data);
  59. LUA_API void luaJIT_profile_stop(lua_State *L);
  60. LUA_API const char *luaJIT_profile_dumpstack(lua_State *L, const char *fmt,
  61.                                              int depth, size_t *len);

  62. /* Enforce (dynamic) linker error for version mismatches. Call from main. */
  63. LUA_API void LUAJIT_VERSION_SYM(void);

  64. #endif