php-internal-docs
8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
sljitConfig.h
Go to the documentation of this file.
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
27
#ifndef SLJIT_CONFIG_H_
28
#define SLJIT_CONFIG_H_
29
30
#ifdef __cplusplus
31
extern
"C"
{
32
#endif
33
34
/*
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.
39
*/
40
41
/* --------------------------------------------------------------------- */
42
/* Utilities */
43
/* --------------------------------------------------------------------- */
44
45
/* Implements a stack like data structure (by using mmap / VirtualAlloc */
46
/* or a custom allocator). */
47
#ifndef SLJIT_UTIL_STACK
48
/* Enabled by default */
49
#define SLJIT_UTIL_STACK 1
50
#endif
51
52
/* Uses user provided allocator to allocate the stack (see SLJIT_UTIL_STACK) */
53
#ifndef SLJIT_UTIL_SIMPLE_STACK_ALLOCATION
54
/* Disabled by default */
55
#define SLJIT_UTIL_SIMPLE_STACK_ALLOCATION 0
56
#endif
57
58
/* Single threaded application. Does not require any locks. */
59
#ifndef SLJIT_SINGLE_THREADED
60
/* Disabled by default. */
61
#define SLJIT_SINGLE_THREADED 0
62
#endif
63
64
/* --------------------------------------------------------------------- */
65
/* Configuration */
66
/* --------------------------------------------------------------------- */
67
68
/* If SLJIT_STD_MACROS_DEFINED is not defined, the application should
69
define SLJIT_MALLOC, SLJIT_FREE, SLJIT_MEMCPY, and NULL. */
70
#ifndef SLJIT_STD_MACROS_DEFINED
71
/* Disabled by default. */
72
#define SLJIT_STD_MACROS_DEFINED 0
73
#endif
74
75
/* Executable code allocation:
76
If SLJIT_EXECUTABLE_ALLOCATOR is not defined, the application should
77
define SLJIT_MALLOC_EXEC and SLJIT_FREE_EXEC.
78
Optionally, depending on the implementation used for the allocator,
79
SLJIT_EXEC_OFFSET and SLJIT_UPDATE_WX_FLAGS might also be needed. */
80
#ifndef SLJIT_EXECUTABLE_ALLOCATOR
81
/* Enabled by default. */
82
#define SLJIT_EXECUTABLE_ALLOCATOR 1
83
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.
87
Instead, it creates a shared memory segment (usually backed by a file)
88
and maps it twice, with different permissions, depending on the use
89
case.
90
The trade-off is increased use of virtual memory, incompatibility with
91
fork(), and some possible additional security risks by the use of
92
publicly accessible files for the generated code. */
93
#ifndef SLJIT_PROT_EXECUTABLE_ALLOCATOR
94
/* Disabled by default. */
95
#define SLJIT_PROT_EXECUTABLE_ALLOCATOR 0
96
#endif
97
98
/* When SLJIT_WX_EXECUTABLE_ALLOCATOR is enabled SLJIT uses an
99
allocator which does not set writable and executable permission
100
flags at the same time.
101
Instead, it creates a new independent map on each invocation and
102
switches permissions at the underlying pages as needed.
103
The trade-off is increased memory use and degraded performance. */
104
#ifndef SLJIT_WX_EXECUTABLE_ALLOCATOR
105
/* Disabled by default. */
106
#define SLJIT_WX_EXECUTABLE_ALLOCATOR 0
107
#endif
108
109
#endif
/* !SLJIT_EXECUTABLE_ALLOCATOR */
110
111
/* Return with error when an invalid argument is passed. */
112
#ifndef SLJIT_ARGUMENT_CHECKS
113
/* Disabled by default */
114
#define SLJIT_ARGUMENT_CHECKS 0
115
#endif
116
117
/* Debug checks (assertions, etc.). */
118
#ifndef SLJIT_DEBUG
119
/* Enabled by default */
120
#define SLJIT_DEBUG 1
121
#endif
122
123
/* Verbose operations. */
124
#ifndef SLJIT_VERBOSE
125
/* Enabled by default */
126
#define SLJIT_VERBOSE 1
127
#endif
128
129
/*
130
SLJIT_IS_FPU_AVAILABLE
131
The availability of the FPU can be controlled by SLJIT_IS_FPU_AVAILABLE.
132
zero value - FPU is NOT present.
133
nonzero value - FPU is present.
134
*/
135
136
/* For further configurations, see the beginning of sljitConfigInternal.h */
137
138
#ifdef __cplusplus
139
}
/* extern "C" */
140
#endif
141
142
#endif
/* SLJIT_CONFIG_H_ */
ext
pcre
pcre2lib
sljit
sljitConfig.h
Generated on Sat Aug 23 2025 01:46:10 for php-internal-docs by
1.13.2