Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 241 lines (169 sloc) 5.616 kb
573b460 andigutmans Zend Library
andigutmans authored
1 /*
2 +----------------------------------------------------------------------+
3 | Zend Engine |
4 +----------------------------------------------------------------------+
d2c9e80 andigutmans - Update copyright year
andigutmans authored
5 | Copyright (c) 1998-2001 Zend Technologies Ltd. (http://www.zend.com) |
573b460 andigutmans Zend Library
andigutmans authored
6 +----------------------------------------------------------------------+
5e55e47 Zeev Suraski It's official now...
zsuraski authored
7 | This source file is subject to version 0.92 of the Zend license, |
b5b1117 Zeev Suraski License update
zsuraski authored
8 | that is bundled with this package in the file LICENSE, and is |
9 | available at through the world-wide-web at |
5e55e47 Zeev Suraski It's official now...
zsuraski authored
10 | http://www.zend.com/license/0_92.txt. |
b5b1117 Zeev Suraski License update
zsuraski authored
11 | If you did not receive a copy of the Zend license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@zend.com so we can mail you a copy immediately. |
573b460 andigutmans Zend Library
andigutmans authored
14 +----------------------------------------------------------------------+
15 | Authors: Andi Gutmans <andi@zend.com> |
16 | Zeev Suraski <zeev@zend.com> |
17 +----------------------------------------------------------------------+
18 */
19
b5b1117 Zeev Suraski License update
zsuraski authored
20
a617217 Replace macros which begin with an underscore through an appropiately
Sascha Schumann authored
21 #ifndef ZEND_GLOBALS_H
22 #define ZEND_GLOBALS_H
573b460 andigutmans Zend Library
andigutmans authored
23
99947a2 andigutmans - Shift around header files.
andigutmans authored
24
573b460 andigutmans Zend Library
andigutmans authored
25 #include <setjmp.h>
26
99947a2 andigutmans - Shift around header files.
andigutmans authored
27 #include "zend_globals_macros.h"
28
573b460 andigutmans Zend Library
andigutmans authored
29 #include "zend_stack.h"
30 #include "zend_ptr_stack.h"
31 #include "zend_hash.h"
32 #include "zend_llist.h"
b7a5b3c Zeev Suraski - Generalize the fast cache mechanism
zsuraski authored
33 #include "zend_fast_cache.h"
573b460 andigutmans Zend Library
andigutmans authored
34
7a87fcb Zeev Suraski Thread safety patch. We're still not quite there but it compiles again,...
zsuraski authored
35 /* Define ZTS if you want a thread-safe Zend */
52fcaa4 Zeev Suraski Thread-safe project
zsuraski authored
36 /*#undef ZTS*/
573b460 andigutmans Zend Library
andigutmans authored
37
38 #ifdef ZTS
1aa2c5c Zeev Suraski Ok, call me crazy, because I probably am.
zsuraski authored
39
40 BEGIN_EXTERN_C()
e06a1ed Zeev Suraski Thread safety fixes
zsuraski authored
41 ZEND_API extern int compiler_globals_id;
42 ZEND_API extern int executor_globals_id;
5864b57 Zeev Suraski This should enable people to use ALLOC_ZVAL() in code outside the php4.d...
zsuraski authored
43 ZEND_API extern int alloc_globals_id;
1aa2c5c Zeev Suraski Ok, call me crazy, because I probably am.
zsuraski authored
44 END_EXTERN_C()
45
573b460 andigutmans Zend Library
andigutmans authored
46 #endif
47
48 #define SYMTABLE_CACHE_SIZE 32
49
50
51 #include "zend_compile.h"
52
b510a6d More portability stuff
Sascha Schumann authored
53 /* excpt.h on Digital Unix 4.0 defines function_table */
54 #undef function_table
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
55
56
57 typedef struct _zend_declarables {
58 zval ticks;
59 } zend_declarables;
60
61
573b460 andigutmans Zend Library
andigutmans authored
62 struct _zend_compiler_globals {
63 zend_stack bp_stack;
64 zend_stack switch_cond_stack;
22f066e andigutmans - Add foreach() freeing code.
andigutmans authored
65 zend_stack foreach_copy_stack;
573b460 andigutmans Zend Library
andigutmans authored
66 zend_stack object_stack;
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
67 zend_stack declare_stack;
573b460 andigutmans Zend Library
andigutmans authored
68
69 zend_class_entry class_entry, *active_class_entry;
cb0d277 Zeev Suraski parent::methodname() now works better with runtime classes (fix bug #115...
zsuraski authored
70 zval active_ce_parent_class_name;
573b460 andigutmans Zend Library
andigutmans authored
71
72 /* variables for list() compilation */
73 zend_llist list_llist;
74 zend_llist dimension_llist;
43ebb86 Zeev Suraski Fix bug #10287 - avoid crashing under a bogus usage of list()
zsuraski authored
75 zend_stack list_stack;
573b460 andigutmans Zend Library
andigutmans authored
76
77 zend_stack function_call_stack;
78
79 char *compiled_filename;
80
81 int zend_lineno;
86a0efc Zeev Suraski Fix #2744
zsuraski authored
82 int comment_start_line;
573b460 andigutmans Zend Library
andigutmans authored
83 char *heredoc;
84 int heredoc_len;
85
86 zend_op_array *active_op_array;
87
88 HashTable *function_table; /* function symbol table */
89 HashTable *class_table; /* class table */
da339a6 andigutmans - More namespaces work
andigutmans authored
90 HashTable *namespaces;
573b460 andigutmans Zend Library
andigutmans authored
91
c34f41b Zeev Suraski Eliminate run-time leak with eval()'s
zsuraski authored
92 HashTable filenames_table;
573b460 andigutmans Zend Library
andigutmans authored
93
9d11db1 andigutmans - Merge new $_GET, $_POST etc. patch from Engine 1 tree
andigutmans authored
94 HashTable *auto_globals;
95
b6197bc Zeev Suraski Maintain a state of whether we're compiling and/or executing
zsuraski authored
96 zend_bool in_compilation;
9ece796 Zeev Suraski define zend_bool
zsuraski authored
97 zend_bool short_tags;
98 zend_bool asp_tags;
ced9cee Zeev Suraski - Implement return by reference:
zsuraski authored
99 zend_bool allow_call_time_pass_reference;
573b460 andigutmans Zend Library
andigutmans authored
100
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
101 zend_declarables declarables;
102
573b460 andigutmans Zend Library
andigutmans authored
103 /* For extensions support */
9ece796 Zeev Suraski define zend_bool
zsuraski authored
104 zend_bool extended_info; /* generate extension information for debugger/profiler */
105 zend_bool handle_op_arrays; /* run op_arrays through op_array handlers */
1aa2c5c Zeev Suraski Ok, call me crazy, because I probably am.
zsuraski authored
106
9ece796 Zeev Suraski define zend_bool
zsuraski authored
107 zend_bool unclean_shutdown;
87ba08d Zeev Suraski Avoid leaking fd's in case of failures
zsuraski authored
108
9596255 Zeev Suraski Final touches on the INI parser
zsuraski authored
109 zend_bool ini_parser_unbuffered_errors;
110
87ba08d Zeev Suraski Avoid leaking fd's in case of failures
zsuraski authored
111 zend_llist open_files;
85b4df5 Zeev Suraski Improved interactive mode - it is now available in all builds, without a...
zsuraski authored
112
29f5dbe andigutmans - Initial support for exceptions.
andigutmans authored
113 zend_llist *throw_list;
114
609d58a Zeev Suraski Merge from branch - move to standard C scanners in thread safe mode
zsuraski authored
115 struct _zend_ini_parser_param *ini_parser_param;
116
85b4df5 Zeev Suraski Improved interactive mode - it is now available in all builds, without a...
zsuraski authored
117 int interactive;
7ade3b3 Zeev Suraski Fix an off by one lineno issue, in case of an implicit ;
zsuraski authored
118
119 zend_bool increment_lineno;
7fc45bf andigutmans - Create a branch for namespaces. This isn't even remotely close to
andigutmans authored
120
121 char *namespace;
122 int namespace_len;
573b460 andigutmans Zend Library
andigutmans authored
123 };
124
125
126 struct _zend_executor_globals {
ced9cee Zeev Suraski - Implement return by reference:
zsuraski authored
127 zval **return_value_ptr_ptr;
573b460 andigutmans Zend Library
andigutmans authored
128
129 zval uninitialized_zval;
130 zval *uninitialized_zval_ptr;
131
132 zval error_zval;
133 zval *error_zval_ptr;
134
135 zend_function_state *function_state_ptr;
136 zend_ptr_stack arg_types_stack;
223c674 Zeev Suraski - Made things work again (Thies, everybody - please check the latest CVS...
zsuraski authored
137
573b460 andigutmans Zend Library
andigutmans authored
138 /* symbol table cache */
139 HashTable *symtable_cache[SYMTABLE_CACHE_SIZE];
140 HashTable **symtable_cache_limit;
141 HashTable **symtable_cache_ptr;
142
143 zend_op **opline_ptr;
144
145 HashTable *active_symbol_table;
146 HashTable symbol_table; /* main symbol table */
147
5951b16 andigutmans - Quick way of supporting include_once().
andigutmans authored
148 HashTable included_files; /* files already included */
5463dd5 andigutmans - Add use support (behaves like require, but will not use the same file ...
andigutmans authored
149
573b460 andigutmans Zend Library
andigutmans authored
150 jmp_buf bailout;
151
152 int error_reporting;
fde2e61 Zeev Suraski error_reporting fix
zsuraski authored
153 int orig_error_reporting;
2ef6b68 Pass on the exit status
Sascha Schumann authored
154 int exit_status;
573b460 andigutmans Zend Library
andigutmans authored
155
156 zend_op_array *active_op_array;
157
158 HashTable *function_table; /* function symbol table */
159 HashTable *class_table; /* class table */
160 HashTable *zend_constants; /* constants table */
da339a6 andigutmans - More namespaces work
andigutmans authored
161 HashTable *namespaces;
573b460 andigutmans Zend Library
andigutmans authored
162
163 long precision;
164
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
165 int ticks_count;
166
b6197bc Zeev Suraski Maintain a state of whether we're compiling and/or executing
zsuraski authored
167 zend_bool in_execution;
931ebe0 Zeev Suraski Improve bailout mechanism, supports nesting of bailouts a-la try..catch
zsuraski authored
168 zend_bool bailout_set;
b6197bc Zeev Suraski Maintain a state of whether we're compiling and/or executing
zsuraski authored
169
573b460 andigutmans Zend Library
andigutmans authored
170 /* for extended information support */
741ca16 andigutmans - Fixed various inheritance problems & Andrey's leak
andigutmans authored
171 zend_bool no_extensions;
573b460 andigutmans Zend Library
andigutmans authored
172
84eb48f Zeev Suraski Ok, this time here's some real Win32 system programming :)
zsuraski authored
173 #ifdef ZEND_WIN32
174 zend_bool timed_out;
175 #endif
176
573b460 andigutmans Zend Library
andigutmans authored
177 HashTable regular_list;
178 HashTable persistent_list;
179
39a7f4c Zeev Suraski This patch is a go. Not fully optimized yet, but working properly.
zsuraski authored
180 zend_ptr_stack argument_stack;
b5f5e9a andigutmans - Optimize the execute stack a bit.
andigutmans authored
181 int free_op1, free_op2;
182 int (*unary_op)(zval *result, zval *op1);
8ce8324 Zeev Suraski More TSRMLS_FETCH annihilation
zsuraski authored
183 int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC);
39a7f4c Zeev Suraski This patch is a go. Not fully optimized yet, but working properly.
zsuraski authored
184
5bf89ce andigutmans - Hopefully fix bug #11476 and improve garbage to be freed very quickly.
andigutmans authored
185 zval *garbage[2];
1c0f136 andigutmans - Hooray. This might actually work. (I hope)
andigutmans authored
186 int garbage_ptr;
187
67f6974 Zeev Suraski Initial support for trapping errors (not complete and disabled; will be...
zsuraski authored
188 zval *user_error_handler;
34c2b0a Zeev Suraski - Add restore_error_handler()
zsuraski authored
189 zend_ptr_stack user_error_handlers;
67f6974 Zeev Suraski Initial support for trapping errors (not complete and disabled; will be...
zsuraski authored
190
ef0bd3d Zeev Suraski - Move timeout code to Zend
zsuraski authored
191 /* timeout support */
192 int timeout_seconds;
193
0b7a9ce Zeev Suraski - Fix Win32 compilation (Use winsock2.h from now on)
zsuraski authored
194 int lambda_count;
195
54d5305 Zeev Suraski Make the INI mechanism thread safe (or at least thread safer :)
zsuraski authored
196 HashTable ini_directives;
5af7770 andigutmans - Sync Engine2 CVS with latest Engine CVS
andigutmans authored
197 zend_objects objects;
29f5dbe andigutmans - Initial support for exceptions.
andigutmans authored
198 zval *exception;
54d5305 Zeev Suraski Make the INI mechanism thread safe (or at least thread safer :)
zsuraski authored
199
b5f5e9a andigutmans - Optimize the execute stack a bit.
andigutmans authored
200 void *reserved[ZEND_MAX_RESERVED_RESOURCES];
573b460 andigutmans Zend Library
andigutmans authored
201 };
202
203
204 struct _zend_alloc_globals {
c517633 Zeev Suraski namespace protection
zsuraski authored
205 zend_mem_header *head; /* standard list */
206 zend_mem_header *phead; /* persistent list */
573b460 andigutmans Zend Library
andigutmans authored
207 void *cache[MAX_CACHED_MEMORY][MAX_CACHED_ENTRIES];
7f87a31 Stanislav Malyshev Make cache counters to be unsigned int
smalyshev authored
208 unsigned int cache_count[MAX_CACHED_MEMORY];
b7a5b3c Zeev Suraski - Generalize the fast cache mechanism
zsuraski authored
209 void *fast_cache_list_head[MAX_FAST_CACHE_TYPES];
573b460 andigutmans Zend Library
andigutmans authored
210
66d9314 Zeev Suraski Implement fast memory allocation and reduced fragmentation under Windows...
zsuraski authored
211 #ifdef ZEND_WIN32
212 HANDLE memory_heap;
213 #endif
214
ebd4445 Zeev Suraski Add cache statistics support
zsuraski authored
215 #if ZEND_DEBUG
216 /* for performance tuning */
217 int cache_stats[MAX_CACHED_MEMORY][2];
b7a5b3c Zeev Suraski - Generalize the fast cache mechanism
zsuraski authored
218 int fast_cache_stats[MAX_FAST_CACHE_TYPES][2];
ebd4445 Zeev Suraski Add cache statistics support
zsuraski authored
219 #endif
2e9886d Zeev Suraski Get rid of php3_ini in Zend
zsuraski authored
220 #if MEMORY_LIMIT
221 unsigned int memory_limit;
573b460 andigutmans Zend Library
andigutmans authored
222 unsigned int allocated_memory;
4c0d85b Zeev Suraski Commit missing fix
zsuraski authored
223 unsigned int allocated_memory_peak;
573b460 andigutmans Zend Library
andigutmans authored
224 unsigned char memory_exhausted;
225 #endif
226 };
227
609d58a Zeev Suraski Merge from branch - move to standard C scanners in thread safe mode
zsuraski authored
228
229 struct _zend_scanner_globals {
483fc4c Zeev Suraski MFZE1
zsuraski authored
230 FILE *yy_in;
231 FILE *yy_out;
609d58a Zeev Suraski Merge from branch - move to standard C scanners in thread safe mode
zsuraski authored
232 int yy_leng;
233 char *yy_text;
234 struct yy_buffer_state *current_buffer;
235 char *c_buf_p;
236 int init;
237 int start;
238 };
239
a617217 Replace macros which begin with an underscore through an appropiately
Sascha Schumann authored
240 #endif /* ZEND_GLOBALS_H */
Something went wrong with that request. Please try again.