Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 321 lines (235 sloc) 7.421 kb
573b460 andigutmans Zend Library
andigutmans authored
1 /*
2 +----------------------------------------------------------------------+
3 | Zend Engine |
4 +----------------------------------------------------------------------+
f2d7d53 MFH: Bump year.
Sebastian Bergmann authored
5 | Copyright (c) 1998-2007 Zend Technologies Ltd. (http://www.zend.com) |
573b460 andigutmans Zend Library
andigutmans authored
6 +----------------------------------------------------------------------+
d863d52 Update headers.
Sebastian Bergmann authored
7 | This source file is subject to version 2.00 of the Zend license, |
b5b1117 Zeev Suraski License update
zsuraski authored
8 | that is bundled with this package in the file LICENSE, and is |
f68c7ff updating license information in the headers.
James Cox authored
9 | available through the world-wide-web at the following url: |
d863d52 Update headers.
Sebastian Bergmann authored
10 | http://www.zend.com/license/2_00.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
333406b - Added some missing CVS $Id$ tags, headers and footers.
foobar authored
20 /* $Id$ */
b5b1117 Zeev Suraski License update
zsuraski authored
21
a617217 Replace macros which begin with an underscore through an appropiately
Sascha Schumann authored
22 #ifndef ZEND_GLOBALS_H
23 #define ZEND_GLOBALS_H
573b460 andigutmans Zend Library
andigutmans authored
24
99947a2 andigutmans - Shift around header files.
andigutmans authored
25
573b460 andigutmans Zend Library
andigutmans authored
26 #include <setjmp.h>
27
99947a2 andigutmans - Shift around header files.
andigutmans authored
28 #include "zend_globals_macros.h"
29
573b460 andigutmans Zend Library
andigutmans authored
30 #include "zend_stack.h"
31 #include "zend_ptr_stack.h"
32 #include "zend_hash.h"
33 #include "zend_llist.h"
b7a5b3c Zeev Suraski - Generalize the fast cache mechanism
zsuraski authored
34 #include "zend_fast_cache.h"
6608f07 Stanislav Malyshev Mega-commit: Enter the new object model
smalyshev authored
35 #include "zend_objects.h"
f75f3cf Stanislav Malyshev Generalize object storage and reference bookkeeping
smalyshev authored
36 #include "zend_objects_API.h"
5230321 - Fix Reflection class names
Marcus Boerger authored
37 #include "zend_modules.h"
573b460 andigutmans Zend Library
andigutmans authored
38
ab9dcec Masaki Fujimoto - added script encoding support to Zend Engine 2.
fujimoto authored
39 #ifdef ZEND_MULTIBYTE
40 #include "zend_multibyte.h"
41 #endif /* ZEND_MULTIBYTE */
42
7a87fcb Zeev Suraski Thread safety patch. We're still not quite there but it compiles again,...
zsuraski authored
43 /* Define ZTS if you want a thread-safe Zend */
52fcaa4 Zeev Suraski Thread-safe project
zsuraski authored
44 /*#undef ZTS*/
573b460 andigutmans Zend Library
andigutmans authored
45
46 #ifdef ZTS
1aa2c5c Zeev Suraski Ok, call me crazy, because I probably am.
zsuraski authored
47
48 BEGIN_EXTERN_C()
e06a1ed Zeev Suraski Thread safety fixes
zsuraski authored
49 ZEND_API extern int compiler_globals_id;
50 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
51 ZEND_API extern int alloc_globals_id;
1aa2c5c Zeev Suraski Ok, call me crazy, because I probably am.
zsuraski authored
52 END_EXTERN_C()
53
573b460 andigutmans Zend Library
andigutmans authored
54 #endif
55
56 #define SYMTABLE_CACHE_SIZE 32
57
58
59 #include "zend_compile.h"
60
b510a6d More portability stuff
Sascha Schumann authored
61 /* excpt.h on Digital Unix 4.0 defines function_table */
62 #undef function_table
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
63
64
65 typedef struct _zend_declarables {
66 zval ticks;
67 } zend_declarables;
68
69
573b460 andigutmans Zend Library
andigutmans authored
70 struct _zend_compiler_globals {
71 zend_stack bp_stack;
72 zend_stack switch_cond_stack;
22f066e andigutmans - Add foreach() freeing code.
andigutmans authored
73 zend_stack foreach_copy_stack;
573b460 andigutmans Zend Library
andigutmans authored
74 zend_stack object_stack;
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
75 zend_stack declare_stack;
573b460 andigutmans Zend Library
andigutmans authored
76
26578c3 andigutmans - Initial support for nested class definitions
andigutmans authored
77 zend_class_entry *active_class_entry;
573b460 andigutmans Zend Library
andigutmans authored
78
79 /* variables for list() compilation */
80 zend_llist list_llist;
81 zend_llist dimension_llist;
43ebb86 Zeev Suraski Fix bug #10287 - avoid crashing under a bogus usage of list()
zsuraski authored
82 zend_stack list_stack;
573b460 andigutmans Zend Library
andigutmans authored
83
84 zend_stack function_call_stack;
85
86 char *compiled_filename;
87
88 int zend_lineno;
86a0efc Zeev Suraski Fix #2744
zsuraski authored
89 int comment_start_line;
573b460 andigutmans Zend Library
andigutmans authored
90 char *heredoc;
91 int heredoc_len;
92
93 zend_op_array *active_op_array;
94
95 HashTable *function_table; /* function symbol table */
96 HashTable *class_table; /* class table */
97
c34f41b Zeev Suraski Eliminate run-time leak with eval()'s
zsuraski authored
98 HashTable filenames_table;
573b460 andigutmans Zend Library
andigutmans authored
99
9d11db1 andigutmans - Merge new $_GET, $_POST etc. patch from Engine 1 tree
andigutmans authored
100 HashTable *auto_globals;
101
b6197bc Zeev Suraski Maintain a state of whether we're compiling and/or executing
zsuraski authored
102 zend_bool in_compilation;
9ece796 Zeev Suraski define zend_bool
zsuraski authored
103 zend_bool short_tags;
104 zend_bool asp_tags;
ced9cee Zeev Suraski - Implement return by reference:
zsuraski authored
105 zend_bool allow_call_time_pass_reference;
573b460 andigutmans Zend Library
andigutmans authored
106
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
107 zend_declarables declarables;
108
573b460 andigutmans Zend Library
andigutmans authored
109 /* For extensions support */
9ece796 Zeev Suraski define zend_bool
zsuraski authored
110 zend_bool extended_info; /* generate extension information for debugger/profiler */
111 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
112
9ece796 Zeev Suraski define zend_bool
zsuraski authored
113 zend_bool unclean_shutdown;
87ba08d Zeev Suraski Avoid leaking fd's in case of failures
zsuraski authored
114
9596255 Zeev Suraski Final touches on the INI parser
zsuraski authored
115 zend_bool ini_parser_unbuffered_errors;
116
87ba08d Zeev Suraski Avoid leaking fd's in case of failures
zsuraski authored
117 zend_llist open_files;
85b4df5 Zeev Suraski Improved interactive mode - it is now available in all builds, without a...
zsuraski authored
118
f1e8815 andigutmans - Change exception handling to use the Java-like catch(MyException $exce...
andigutmans authored
119 long catch_begin;
29f5dbe andigutmans - Initial support for exceptions.
andigutmans authored
120
609d58a Zeev Suraski Merge from branch - move to standard C scanners in thread safe mode
zsuraski authored
121 struct _zend_ini_parser_param *ini_parser_param;
122
85b4df5 Zeev Suraski Improved interactive mode - it is now available in all builds, without a...
zsuraski authored
123 int interactive;
7ade3b3 Zeev Suraski Fix an off by one lineno issue, in case of an implicit ;
zsuraski authored
124
cf05f34 Zeev Suraski MFZE1 - lineno fix
zsuraski authored
125 zend_uint start_lineno;
7ade3b3 Zeev Suraski Fix an off by one lineno issue, in case of an implicit ;
zsuraski authored
126 zend_bool increment_lineno;
b90d80b andigutmans - Initial patch to support importing from class scopes (for Stig).
andigutmans authored
127
26dd849 Zeev Suraski Add support for interfaces
zsuraski authored
128 znode implementing_class;
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
129
471947b Zeev Suraski Reimplement PPP properties
zsuraski authored
130 zend_uint access_type;
bdd3b60 Implement a different way to catch documentation comments.
Andrei Zmievski authored
131
132 char *doc_comment;
133 zend_uint doc_comment_len;
ab9dcec Masaki Fujimoto - added script encoding support to Zend Engine 2.
fujimoto authored
134
135 #ifdef ZEND_MULTIBYTE
136 zend_encoding **script_encoding_list;
137 int script_encoding_list_size;
a8c6b99 Fixed bug #35147 (__HALT_COMPILER() breaks with --enable-zend-multibyte)
Dmitry Stogov authored
138 zend_bool detect_unicode;
ab9dcec Masaki Fujimoto - added script encoding support to Zend Engine 2.
fujimoto authored
139
140 zend_encoding *internal_encoding;
141
142 /* multibyte utility functions */
143 zend_encoding_detector encoding_detector;
144 zend_encoding_converter encoding_converter;
145 zend_encoding_oddlen encoding_oddlen;
146 #endif /* ZEND_MULTIBYTE */
8768ab9 Fixed bug #34729 (Crash in ZTS mode under Apache)
Dmitry Stogov authored
147
148 #ifdef ZTS
149 HashTable **static_members;
150 int last_static_member;
151 #endif
573b460 andigutmans Zend Library
andigutmans authored
152 };
153
154
155 struct _zend_executor_globals {
ced9cee Zeev Suraski - Implement return by reference:
zsuraski authored
156 zval **return_value_ptr_ptr;
573b460 andigutmans Zend Library
andigutmans authored
157
158 zval uninitialized_zval;
159 zval *uninitialized_zval_ptr;
160
161 zval error_zval;
162 zval *error_zval_ptr;
163
164 zend_function_state *function_state_ptr;
165 zend_ptr_stack arg_types_stack;
223c674 Zeev Suraski - Made things work again (Thies, everybody - please check the latest CVS...
zsuraski authored
166
573b460 andigutmans Zend Library
andigutmans authored
167 /* symbol table cache */
168 HashTable *symtable_cache[SYMTABLE_CACHE_SIZE];
169 HashTable **symtable_cache_limit;
170 HashTable **symtable_cache_ptr;
171
172 zend_op **opline_ptr;
173
174 HashTable *active_symbol_table;
175 HashTable symbol_table; /* main symbol table */
176
5951b16 andigutmans - Quick way of supporting include_once().
andigutmans authored
177 HashTable included_files; /* files already included */
5463dd5 andigutmans - Add use support (behaves like require, but will not use the same file ...
andigutmans authored
178
573b460 andigutmans Zend Library
andigutmans authored
179 jmp_buf bailout;
180
181 int error_reporting;
fde2e61 Zeev Suraski error_reporting fix
zsuraski authored
182 int orig_error_reporting;
2ef6b68 Pass on the exit status
Sascha Schumann authored
183 int exit_status;
573b460 andigutmans Zend Library
andigutmans authored
184
185 zend_op_array *active_op_array;
186
187 HashTable *function_table; /* function symbol table */
188 HashTable *class_table; /* class table */
189 HashTable *zend_constants; /* constants table */
190
90bd453 andigutmans - Remove use of C++ reserved words namespace/this
andigutmans authored
191 zend_class_entry *scope;
4248619 andigutmans - Initial work on changing namespace scope. Only methods & variables
andigutmans authored
192
90bd453 andigutmans - Remove use of C++ reserved words namespace/this
andigutmans authored
193 zval *This;
a4248dd andigutmans - Significantly improve the performance of method calls and $this->membe...
andigutmans authored
194
573b460 andigutmans Zend Library
andigutmans authored
195 long precision;
196
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
197 int ticks_count;
198
b6197bc Zeev Suraski Maintain a state of whether we're compiling and/or executing
zsuraski authored
199 zend_bool in_execution;
55cf45a New autoload protection schema was implemented (Using HashTable instead ...
Dmitry Stogov authored
200 HashTable *in_autoload;
b7a8297 - Boost up __autoload() calls by caching the lookup
Marcus Boerger authored
201 zend_function *autoload_func;
931ebe0 Zeev Suraski Improve bailout mechanism, supports nesting of bailouts a-la try..catch
zsuraski authored
202 zend_bool bailout_set;
aecd5b8 Zeev Suraski MFZE1
zsuraski authored
203 zend_bool full_tables_cleanup;
eb6fd52 Zeev Suraski - Rename compatiblity mode to zend.ze2_compatibility_mode (it doesn't ...
zsuraski authored
204 zend_bool ze1_compatibility_mode;
b6197bc Zeev Suraski Maintain a state of whether we're compiling and/or executing
zsuraski authored
205
573b460 andigutmans Zend Library
andigutmans authored
206 /* for extended information support */
741ca16 andigutmans - Fixed various inheritance problems & Andrey's leak
andigutmans authored
207 zend_bool no_extensions;
573b460 andigutmans Zend Library
andigutmans authored
208
84eb48f Zeev Suraski Ok, this time here's some real Win32 system programming :)
zsuraski authored
209 #ifdef ZEND_WIN32
210 zend_bool timed_out;
211 #endif
212
573b460 andigutmans Zend Library
andigutmans authored
213 HashTable regular_list;
214 HashTable persistent_list;
215
39a7f4c Zeev Suraski This patch is a go. Not fully optimized yet, but working properly.
zsuraski authored
216 zend_ptr_stack argument_stack;
1c0f136 andigutmans - Hooray. This might actually work. (I hope)
andigutmans authored
217
a72c1ab Zeev Suraski Added error mask to set_error_handler()
zsuraski authored
218 int user_error_handler_error_reporting;
67f6974 Zeev Suraski Initial support for trapping errors (not complete and disabled; will be...
zsuraski authored
219 zval *user_error_handler;
04788f9 @- Added set_exception_handler() function for registering a global,
Stig Bakken authored
220 zval *user_exception_handler;
a72c1ab Zeev Suraski Added error mask to set_error_handler()
zsuraski authored
221 zend_stack user_error_handlers_error_reporting;
34c2b0a Zeev Suraski - Add restore_error_handler()
zsuraski authored
222 zend_ptr_stack user_error_handlers;
04788f9 @- Added set_exception_handler() function for registering a global,
Stig Bakken authored
223 zend_ptr_stack user_exception_handlers;
67f6974 Zeev Suraski Initial support for trapping errors (not complete and disabled; will be...
zsuraski authored
224
ef0bd3d Zeev Suraski - Move timeout code to Zend
zsuraski authored
225 /* timeout support */
226 int timeout_seconds;
227
0b7a9ce Zeev Suraski - Fix Win32 compilation (Use winsock2.h from now on)
zsuraski authored
228 int lambda_count;
229
8831b9c andigutmans - MFZE1.
andigutmans authored
230 HashTable *ini_directives;
f75f3cf Stanislav Malyshev Generalize object storage and reference bookkeeping
smalyshev authored
231 zend_objects_store objects_store;
29f5dbe andigutmans - Initial support for exceptions.
andigutmans authored
232 zval *exception;
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
233 zend_op *opline_before_exception;
54d5305 Zeev Suraski Make the INI mechanism thread safe (or at least thread safer :)
zsuraski authored
234
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
235 struct _zend_execute_data *current_execute_data;
236
5230321 - Fix Reflection class names
Marcus Boerger authored
237 struct _zend_module_entry *current_module;
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
238
fce275e Zeev Suraski Improve PPP handling of properties
zsuraski authored
239 zend_property_info std_property_info;
240
b5f5e9a andigutmans - Optimize the execute stack a bit.
andigutmans authored
241 void *reserved[ZEND_MAX_RESERVED_RESOURCES];
573b460 andigutmans Zend Library
andigutmans authored
242 };
243
380c082 andigutmans - Commit an initial version of a home made memory manager.
andigutmans authored
244 #include "zend_mm.h"
573b460 andigutmans Zend Library
andigutmans authored
245
246 struct _zend_alloc_globals {
c517633 Zeev Suraski namespace protection
zsuraski authored
247 zend_mem_header *head; /* standard list */
573b460 andigutmans Zend Library
andigutmans authored
248 void *cache[MAX_CACHED_MEMORY][MAX_CACHED_ENTRIES];
7f87a31 Stanislav Malyshev Make cache counters to be unsigned int
smalyshev authored
249 unsigned int cache_count[MAX_CACHED_MEMORY];
b7a5b3c Zeev Suraski - Generalize the fast cache mechanism
zsuraski authored
250 void *fast_cache_list_head[MAX_FAST_CACHE_TYPES];
573b460 andigutmans Zend Library
andigutmans authored
251
66d9314 Zeev Suraski Implement fast memory allocation and reduced fragmentation under Windows...
zsuraski authored
252 #ifdef ZEND_WIN32
253 HANDLE memory_heap;
254 #endif
255
ebd4445 Zeev Suraski Add cache statistics support
zsuraski authored
256 #if ZEND_DEBUG
257 /* for performance tuning */
258 int cache_stats[MAX_CACHED_MEMORY][2];
b7a5b3c Zeev Suraski - Generalize the fast cache mechanism
zsuraski authored
259 int fast_cache_stats[MAX_FAST_CACHE_TYPES][2];
ebd4445 Zeev Suraski Add cache statistics support
zsuraski authored
260 #endif
2e9886d Zeev Suraski Get rid of php3_ini in Zend
zsuraski authored
261 #if MEMORY_LIMIT
262 unsigned int memory_limit;
573b460 andigutmans Zend Library
andigutmans authored
263 unsigned int allocated_memory;
4c0d85b Zeev Suraski Commit missing fix
zsuraski authored
264 unsigned int allocated_memory_peak;
573b460 andigutmans Zend Library
andigutmans authored
265 unsigned char memory_exhausted;
266 #endif
9e35171 andigutmans - This was also supposed to be part of the previous ZEND_MM commit :)
andigutmans authored
267 #ifdef ZEND_MM
380c082 andigutmans - Commit an initial version of a home made memory manager.
andigutmans authored
268 zend_mm_heap mm_heap;
269 #endif
573b460 andigutmans Zend Library
andigutmans authored
270 };
271
609d58a Zeev Suraski Merge from branch - move to standard C scanners in thread safe mode
zsuraski authored
272 struct _zend_scanner_globals {
e52aac9 Wez Furlong Implement simple stream support in the ZE scanners.
wez authored
273 zend_file_handle *yy_in;
274 zend_file_handle *yy_out;
609d58a Zeev Suraski Merge from branch - move to standard C scanners in thread safe mode
zsuraski authored
275 int yy_leng;
276 char *yy_text;
277 struct yy_buffer_state *current_buffer;
278 char *c_buf_p;
279 int init;
280 int start;
fac8eaf MFZE1
Ilia Alshanetsky authored
281 int lineno;
1735281 Zeev Suraski MFZE1
zsuraski authored
282 char _yy_hold_char;
283 int yy_n_chars;
284 int _yy_did_buffer_switch_on_eof;
e42ab2c Zeev Suraski MFZE1
zsuraski authored
285 int _yy_last_accepting_state; /* Must be of the same type as yy_state_type,
286 * if for whatever reason it's no longer int!
287 */
1735281 Zeev Suraski MFZE1
zsuraski authored
288 char *_yy_last_accepting_cpos;
289 int _yy_more_flag;
290 int _yy_more_len;
0bb780b Zeev Suraski MFZE1
zsuraski authored
291 int yy_start_stack_ptr;
292 int yy_start_stack_depth;
293 int *yy_start_stack;
ab9dcec Masaki Fujimoto - added script encoding support to Zend Engine 2.
fujimoto authored
294
295 #ifdef ZEND_MULTIBYTE
296 /* original (unfiltered) script */
297 char *script_org;
298 int script_org_size;
299
300 /* filtered script */
301 char *script_filtered;
302 int script_filtered_size;
303
304 /* input/ouput filters */
305 zend_encoding_filter input_filter;
306 zend_encoding_filter output_filter;
307 zend_encoding *script_encoding;
308 zend_encoding *internal_encoding;
309 #endif /* ZEND_MULTIBYTE */
609d58a Zeev Suraski Merge from branch - move to standard C scanners in thread safe mode
zsuraski authored
310 };
311
a617217 Replace macros which begin with an underscore through an appropiately
Sascha Schumann authored
312 #endif /* ZEND_GLOBALS_H */
333406b - Added some missing CVS $Id$ tags, headers and footers.
foobar authored
313
314 /*
315 * Local variables:
316 * tab-width: 4
317 * c-basic-offset: 4
318 * indent-tabs-mode: t
319 * End:
320 */
Something went wrong with that request. Please try again.