sljitConfig.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. /*
  2. * Stack-less Just-In-Time compiler
  3. *
  4. * Copyright Zoltan Herczeg (hzmester@freemail.hu). All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without modification, are
  7. * permitted provided that the following conditions are met:
  8. *
  9. * 1. Redistributions of source code must retain the above copyright notice, this list of
  10. * conditions and the following disclaimer.
  11. *
  12. * 2. Redistributions in binary form must reproduce the above copyright notice, this list
  13. * of conditions and the following disclaimer in the documentation and/or other materials
  14. * provided with the distribution.
  15. *
  16. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND CONTRIBUTORS ``AS IS'' AND ANY
  17. * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  18. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
  19. * SHALL THE COPYRIGHT HOLDER(S) OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  20. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
  21. * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
  22. * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  23. * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  24. * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  25. */
  26. #ifndef _SLJIT_CONFIG_H_
  27. #define _SLJIT_CONFIG_H_
  28. /* --------------------------------------------------------------------- */
  29. /* Custom defines */
  30. /* --------------------------------------------------------------------- */
  31. /* Put your custom defines here. This empty section will never change
  32. which helps maintaining patches (with diff / patch utilities). */
  33. /* --------------------------------------------------------------------- */
  34. /* Architecture */
  35. /* --------------------------------------------------------------------- */
  36. /* Architecture selection. */
  37. /* #define SLJIT_CONFIG_X86_32 1 */
  38. /* #define SLJIT_CONFIG_X86_64 1 */
  39. /* #define SLJIT_CONFIG_ARM_V5 1 */
  40. /* #define SLJIT_CONFIG_ARM_V7 1 */
  41. /* #define SLJIT_CONFIG_ARM_THUMB2 1 */
  42. /* #define SLJIT_CONFIG_ARM_64 1 */
  43. /* #define SLJIT_CONFIG_PPC_32 1 */
  44. /* #define SLJIT_CONFIG_PPC_64 1 */
  45. /* #define SLJIT_CONFIG_MIPS_32 1 */
  46. /* #define SLJIT_CONFIG_MIPS_64 1 */
  47. /* #define SLJIT_CONFIG_SPARC_32 1 */
  48. /* #define SLJIT_CONFIG_TILEGX 1 */
  49. /* #define SLJIT_CONFIG_AUTO 1 */
  50. /* #define SLJIT_CONFIG_UNSUPPORTED 1 */
  51. /* --------------------------------------------------------------------- */
  52. /* Utilities */
  53. /* --------------------------------------------------------------------- */
  54. /* Useful for thread-safe compiling of global functions. */
  55. #ifndef SLJIT_UTIL_GLOBAL_LOCK
  56. /* Enabled by default */
  57. #define SLJIT_UTIL_GLOBAL_LOCK 1
  58. #endif
  59. /* Implements a stack like data structure (by using mmap / VirtualAlloc). */
  60. #ifndef SLJIT_UTIL_STACK
  61. /* Enabled by default */
  62. #define SLJIT_UTIL_STACK 1
  63. #endif
  64. /* Single threaded application. Does not require any locks. */
  65. #ifndef SLJIT_SINGLE_THREADED
  66. /* Disabled by default. */
  67. #define SLJIT_SINGLE_THREADED 0
  68. #endif
  69. /* --------------------------------------------------------------------- */
  70. /* Configuration */
  71. /* --------------------------------------------------------------------- */
  72. /* If SLJIT_STD_MACROS_DEFINED is not defined, the application should
  73. define SLJIT_MALLOC, SLJIT_FREE, SLJIT_MEMCPY, and NULL. */
  74. #ifndef SLJIT_STD_MACROS_DEFINED
  75. /* Disabled by default. */
  76. #define SLJIT_STD_MACROS_DEFINED 0
  77. #endif
  78. /* Executable code allocation:
  79. If SLJIT_EXECUTABLE_ALLOCATOR is not defined, the application should
  80. define SLJIT_MALLOC_EXEC, SLJIT_FREE_EXEC, and SLJIT_EXEC_OFFSET. */
  81. #ifndef SLJIT_EXECUTABLE_ALLOCATOR
  82. /* Enabled by default. */
  83. #define SLJIT_EXECUTABLE_ALLOCATOR 1
  84. /* When SLJIT_PROT_EXECUTABLE_ALLOCATOR is enabled SLJIT uses
  85. an allocator which does not set writable and executable
  86. permission flags at the same time. The trade-of is increased
  87. memory consumption and disabled dynamic code modifications. */
  88. #ifndef SLJIT_PROT_EXECUTABLE_ALLOCATOR
  89. /* Disabled by default. */
  90. #define SLJIT_PROT_EXECUTABLE_ALLOCATOR 0
  91. #endif
  92. #endif
  93. /* Force cdecl calling convention even if a better calling
  94. convention (e.g. fastcall) is supported by the C compiler.
  95. If this option is disabled (this is the default), functions
  96. called from JIT should be defined with SLJIT_FUNC attribute.
  97. Standard C functions can still be called by using the
  98. SLJIT_CALL_CDECL jump type. */
  99. #ifndef SLJIT_USE_CDECL_CALLING_CONVENTION
  100. /* Disabled by default */
  101. #define SLJIT_USE_CDECL_CALLING_CONVENTION 0
  102. #endif
  103. /* Return with error when an invalid argument is passed. */
  104. #ifndef SLJIT_ARGUMENT_CHECKS
  105. /* Disabled by default */
  106. #define SLJIT_ARGUMENT_CHECKS 0
  107. #endif
  108. /* Debug checks (assertions, etc.). */
  109. #ifndef SLJIT_DEBUG
  110. /* Enabled by default */
  111. #define SLJIT_DEBUG 1
  112. #endif
  113. /* Verbose operations. */
  114. #ifndef SLJIT_VERBOSE
  115. /* Enabled by default */
  116. #define SLJIT_VERBOSE 1
  117. #endif
  118. /*
  119. SLJIT_IS_FPU_AVAILABLE
  120. The availability of the FPU can be controlled by SLJIT_IS_FPU_AVAILABLE.
  121. zero value - FPU is NOT present.
  122. nonzero value - FPU is present.
  123. */
  124. /* For further configurations, see the beginning of sljitConfigInternal.h */
  125. #endif