Remove SLJIT_NEG.
[sljit.git] / sljit_src / sljitConfig.h
blob1c821d287d87285f05ba6485a8715bd9f64c313b
1 /*
2 * Stack-less Just-In-Time compiler
4 * Copyright Zoltan Herczeg (hzmester@freemail.hu). All rights reserved.
6 * Redistribution and use in source and binary forms, with or without modification, are
7 * permitted provided that the following conditions are met:
9 * 1. Redistributions of source code must retain the above copyright notice, this list of
10 * conditions and the following disclaimer.
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.
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.
27 #ifndef SLJIT_CONFIG_H_
28 #define SLJIT_CONFIG_H_
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
35 This file contains the basic configuration options for the SLJIT compiler
36 and their default values. These options can be overridden in the
37 sljitConfigPre.h header file when SLJIT_HAVE_CONFIG_PRE is set to a
38 non-zero value.
41 /* --------------------------------------------------------------------- */
42 /* Architecture */
43 /* --------------------------------------------------------------------- */
45 /* Architecture selection. */
46 /* #define SLJIT_CONFIG_X86_32 1 */
47 /* #define SLJIT_CONFIG_X86_64 1 */
48 /* #define SLJIT_CONFIG_ARM_V5 1 */
49 /* #define SLJIT_CONFIG_ARM_V7 1 */
50 /* #define SLJIT_CONFIG_ARM_THUMB2 1 */
51 /* #define SLJIT_CONFIG_ARM_64 1 */
52 /* #define SLJIT_CONFIG_PPC_32 1 */
53 /* #define SLJIT_CONFIG_PPC_64 1 */
54 /* #define SLJIT_CONFIG_MIPS_32 1 */
55 /* #define SLJIT_CONFIG_MIPS_64 1 */
56 /* #define SLJIT_CONFIG_SPARC_32 1 */
57 /* #define SLJIT_CONFIG_S390X 1 */
59 /* #define SLJIT_CONFIG_AUTO 1 */
60 /* #define SLJIT_CONFIG_UNSUPPORTED 1 */
62 /* --------------------------------------------------------------------- */
63 /* Utilities */
64 /* --------------------------------------------------------------------- */
66 /* Implements a stack like data structure (by using mmap / VirtualAlloc */
67 /* or a custom allocator). */
68 #ifndef SLJIT_UTIL_STACK
69 /* Enabled by default */
70 #define SLJIT_UTIL_STACK 1
71 #endif
73 /* Uses user provided allocator to allocate the stack (see SLJIT_UTIL_STACK) */
74 #ifndef SLJIT_UTIL_SIMPLE_STACK_ALLOCATION
75 /* Disabled by default */
76 #define SLJIT_UTIL_SIMPLE_STACK_ALLOCATION 0
77 #endif
79 /* Single threaded application. Does not require any locks. */
80 #ifndef SLJIT_SINGLE_THREADED
81 /* Disabled by default. */
82 #define SLJIT_SINGLE_THREADED 0
83 #endif
85 /* --------------------------------------------------------------------- */
86 /* Configuration */
87 /* --------------------------------------------------------------------- */
89 /* If SLJIT_STD_MACROS_DEFINED is not defined, the application should
90 define SLJIT_MALLOC, SLJIT_FREE, SLJIT_MEMCPY, and NULL. */
91 #ifndef SLJIT_STD_MACROS_DEFINED
92 /* Disabled by default. */
93 #define SLJIT_STD_MACROS_DEFINED 0
94 #endif
96 /* Executable code allocation:
97 If SLJIT_EXECUTABLE_ALLOCATOR is not defined, the application should
98 define SLJIT_MALLOC_EXEC, SLJIT_FREE_EXEC, and SLJIT_EXEC_OFFSET. */
99 #ifndef SLJIT_EXECUTABLE_ALLOCATOR
100 /* Enabled by default. */
101 #define SLJIT_EXECUTABLE_ALLOCATOR 1
103 /* When SLJIT_PROT_EXECUTABLE_ALLOCATOR is enabled SLJIT uses
104 an allocator which does not set writable and executable
105 permission flags at the same time.
106 Instead, it creates a shared memory segment (usually backed by a file)
107 and maps it twice, with different permissions, depending on the use
108 case.
109 The trade-off is increased use of virtual memory, incompatibility with
110 fork(), and some possible additional security risks by the use of
111 publicly accessible files for the generated code. */
112 #ifndef SLJIT_PROT_EXECUTABLE_ALLOCATOR
113 /* Disabled by default. */
114 #define SLJIT_PROT_EXECUTABLE_ALLOCATOR 0
115 #endif
117 /* When SLJIT_WX_EXECUTABLE_ALLOCATOR is enabled SLJIT uses an
118 allocator which does not set writable and executable permission
119 flags at the same time.
120 Instead, it creates a new independent map on each invocation and
121 switches permissions at the underlying pages as needed.
122 The trade-off is increased memory use and degraded performance. */
123 #ifndef SLJIT_WX_EXECUTABLE_ALLOCATOR
124 /* Disabled by default. */
125 #define SLJIT_WX_EXECUTABLE_ALLOCATOR 0
126 #endif
128 #endif /* !SLJIT_EXECUTABLE_ALLOCATOR */
130 /* Force cdecl calling convention even if a better calling
131 convention (e.g. fastcall) is supported by the C compiler.
132 If this option is disabled (this is the default), functions
133 called from JIT should be defined with SLJIT_FUNC attribute.
134 Standard C functions can still be called by using the
135 SLJIT_CALL_CDECL jump type. */
136 #ifndef SLJIT_USE_CDECL_CALLING_CONVENTION
137 /* Disabled by default */
138 #define SLJIT_USE_CDECL_CALLING_CONVENTION 0
139 #endif
141 /* Return with error when an invalid argument is passed. */
142 #ifndef SLJIT_ARGUMENT_CHECKS
143 /* Disabled by default */
144 #define SLJIT_ARGUMENT_CHECKS 0
145 #endif
147 /* Debug checks (assertions, etc.). */
148 #ifndef SLJIT_DEBUG
149 /* Enabled by default */
150 #define SLJIT_DEBUG 1
151 #endif
153 /* Verbose operations. */
154 #ifndef SLJIT_VERBOSE
155 /* Enabled by default */
156 #define SLJIT_VERBOSE 1
157 #endif
160 SLJIT_IS_FPU_AVAILABLE
161 The availability of the FPU can be controlled by SLJIT_IS_FPU_AVAILABLE.
162 zero value - FPU is NOT present.
163 nonzero value - FPU is present.
166 /* For further configurations, see the beginning of sljitConfigInternal.h */
168 #ifdef __cplusplus
169 } /* extern "C" */
170 #endif
172 #endif /* SLJIT_CONFIG_H_ */