Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 854 lines (652 sloc) 28.231 kb
573b460 andigutmans Zend Library
andigutmans authored
1 /*
2 +----------------------------------------------------------------------+
3 | Zend Engine |
4 +----------------------------------------------------------------------+
ccfc46b - Happy new year and PHP 5 for rest of the files too..
foobar authored
5 | Copyright (c) 1998-2004 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_COMPILE_H
23 #define ZEND_COMPILE_H
573b460 andigutmans Zend Library
andigutmans authored
24
25 #include "zend.h"
fa76f0c Zeev Suraski Compile fix
zsuraski authored
26
009025e * header file cleanup
Stig S. Bakken authored
27 #ifdef HAVE_STDARG_H
28 # include <stdarg.h>
fa76f0c Zeev Suraski Compile fix
zsuraski authored
29 #endif
30
573b460 andigutmans Zend Library
andigutmans authored
31 #include "zend_llist.h"
32
33 #define DEBUG_ZEND 0
fcaf734 andigutmans - Don't support interactive mode when thread safe.
andigutmans authored
34
573b460 andigutmans Zend Library
andigutmans authored
35 #define FREE_PNODE(znode) zval_dtor(&znode->u.constant);
d12679a andigutmans - Improve overall engine performance
andigutmans authored
36 #define FREE_OP(Ts, op, should_free) if (should_free) zval_dtor(should_free);
573b460 andigutmans Zend Library
andigutmans authored
37
1ccf940 andigutmans - Move SET_UNUSED() to header
andigutmans authored
38 #define SET_UNUSED(op) (op).op_type = IS_UNUSED
573b460 andigutmans Zend Library
andigutmans authored
39
85b4df5 Zeev Suraski Improved interactive mode - it is now available in all builds, without a...
zsuraski authored
40 #define INC_BPC(op_array) if (CG(interactive)) { ((op_array)->backpatch_count++); }
41 #define DEC_BPC(op_array) if (CG(interactive)) { ((op_array)->backpatch_count--); }
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
42 #define HANDLE_INTERACTIVE() if (CG(interactive)) { execute_new_code(TSRMLS_C); }
573b460 andigutmans Zend Library
andigutmans authored
43
bdd3b60 Implement a different way to catch documentation comments.
Andrei Zmievski authored
44 #define RESET_DOC_COMMENT() \
1885d00 Simplify.
Andrei Zmievski authored
45 { \
bdd3b60 Implement a different way to catch documentation comments.
Andrei Zmievski authored
46 CG(doc_comment) = NULL; \
47 CG(doc_comment_len) = 0; \
1885d00 Simplify.
Andrei Zmievski authored
48 }
bdd3b60 Implement a different way to catch documentation comments.
Andrei Zmievski authored
49
573b460 andigutmans Zend Library
andigutmans authored
50 typedef struct _zend_op_array zend_op_array;
8010931 andigutmans - Improve performance of part of the jmps. More to follow.
andigutmans authored
51 typedef struct _zend_op zend_op;
573b460 andigutmans Zend Library
andigutmans authored
52
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
53 typedef struct _znode {
573b460 andigutmans Zend Library
andigutmans authored
54 int op_type;
55 union {
56 zval constant;
57
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
58 zend_uint var;
232b904 Zeev Suraski Clean up last/size definitions
zsuraski authored
59 zend_uint opline_num; /* Needs to be signed */
573b460 andigutmans Zend Library
andigutmans authored
60 zend_op_array *op_array;
8010931 andigutmans - Improve performance of part of the jmps. More to follow.
andigutmans authored
61 zend_op *jmp_addr;
573b460 andigutmans Zend Library
andigutmans authored
62 struct {
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
63 zend_uint var; /* dummy */
64 zend_uint type;
573b460 andigutmans Zend Library
andigutmans authored
65 } EA;
66 } u;
67 } znode;
68
536d4d8 andigutmans - Improve opcode dispatching
andigutmans authored
69 typedef struct _zend_execute_data zend_execute_data;
70
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
71 #define ZEND_OPCODE_HANDLER_ARGS zend_execute_data *execute_data, zend_op *opline, zend_op_array *op_array TSRMLS_DC
72 #define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU execute_data, opline, op_array TSRMLS_CC
536d4d8 andigutmans - Improve opcode dispatching
andigutmans authored
73
74 typedef int (*opcode_handler_t) (ZEND_OPCODE_HANDLER_ARGS);
75
edb2113 Stanislav Malyshev add ZEND_API there too for opcode handlers
smalyshev authored
76 extern ZEND_API opcode_handler_t zend_opcode_handlers[512];
573b460 andigutmans Zend Library
andigutmans authored
77
8010931 andigutmans - Improve performance of part of the jmps. More to follow.
andigutmans authored
78 struct _zend_op {
6f9bfe5 andigutmans - Shift around zend_op members
andigutmans authored
79 opcode_handler_t handler;
573b460 andigutmans Zend Library
andigutmans authored
80 znode result;
81 znode op1;
82 znode op2;
39a7f4c Zeev Suraski This patch is a go. Not fully optimized yet, but working properly.
zsuraski authored
83 ulong extended_value;
573b460 andigutmans Zend Library
andigutmans authored
84 uint lineno;
6f9bfe5 andigutmans - Shift around zend_op members
andigutmans authored
85 zend_uchar opcode;
8010931 andigutmans - Improve performance of part of the jmps. More to follow.
andigutmans authored
86 };
573b460 andigutmans Zend Library
andigutmans authored
87
88
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
89 typedef struct _zend_brk_cont_element {
573b460 andigutmans Zend Library
andigutmans authored
90 int cont;
91 int brk;
92 int parent;
93 } zend_brk_cont_element;
94
95
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
96 typedef struct _zend_try_catch_element {
97 zend_uint try_op;
98 zend_uint catch_op; /* ketchup! */
99 } zend_try_catch_element;
100
101
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
102 /* method flags (types) */
0338111 Zeev Suraski Require abstract classes to be explicitly declared 'abstract', in order ...
zsuraski authored
103 #define ZEND_ACC_STATIC 0x01
104 #define ZEND_ACC_ABSTRACT 0x02
105 #define ZEND_ACC_FINAL 0x04
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
106 #define ZEND_ACC_IMPLEMENTED_ABSTRACT 0x08
6020ffd Simplify detection of methods that must be called dynamic (with object)
Marcus Boerger authored
107
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
108 /* class flags (types) */
109 /* ZEND_ACC_IMPLICIT_ABSTRACT_CLASS is used for abstract classes (since it is set by any abstract method even interfaces MAY have it set, too). */
110 /* ZEND_ACC_EXPLICIT_ABSTRACT_CLASS denotes that a class was explicitly defined as abstract by using the keyword. */
111 #define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS 0x10
112 #define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS 0x20
113 #define ZEND_ACC_FINAL_CLASS 0x40
114 #define ZEND_ACC_INTERFACE 0x80
e8214a3 andigutmans - Commit Marcus' cleanup of abstract and static inheritance and improve
andigutmans authored
115
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
116 /* method flags (visibility) */
32b100e Zeev Suraski - Allow variables to have both 'static' modifier and an access level.
zsuraski authored
117 /* The order of those must be kept - public < protected < private */
0338111 Zeev Suraski Require abstract classes to be explicitly declared 'abstract', in order ...
zsuraski authored
118 #define ZEND_ACC_PUBLIC 0x100
119 #define ZEND_ACC_PROTECTED 0x200
120 #define ZEND_ACC_PRIVATE 0x400
dc5c790 Zeev Suraski Treat the absence of an access type just as if 'public' was supplied
zsuraski authored
121 #define ZEND_ACC_PPP_MASK (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
122
0338111 Zeev Suraski Require abstract classes to be explicitly declared 'abstract', in order ...
zsuraski authored
123 #define ZEND_ACC_CHANGED 0x800
124 #define ZEND_ACC_IMPLICIT_PUBLIC 0x1000
77208ec Zeev Suraski Fix incorrect linkage of access-levels, when using private methods
zsuraski authored
125
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
126 /* method flags (special method detection) */
fbda310 - Flag ctor/dtor methods
Marcus Boerger authored
127 #define ZEND_ACC_CTOR 0x2000
7c2e02d Disallow static declaration of clone
Marcus Boerger authored
128 #define ZEND_ACC_DTOR 0x4000
129 #define ZEND_ACC_CLONE 0x8000
1c2512d - Add fn_flag ZEND_ACC_ALIAS
Marcus Boerger authored
130
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
131 /* method flag (bc only), any method that has this flag can be used statically and non statically. */
132 #define ZEND_ACC_ALLOW_STATIC 0x10000
133
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
134 char *zend_visibility_string(zend_uint fn_flags);
e8214a3 andigutmans - Commit Marcus' cleanup of abstract and static inheritance and improve
andigutmans authored
135
471947b Zeev Suraski Reimplement PPP properties
zsuraski authored
136
137 typedef struct _zend_property_info {
138 zend_uint flags;
139 char *name;
140 int name_length;
141 ulong h;
142 } zend_property_info;
143
144
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
145 typedef struct _zend_arg_info {
146 char *name;
147 zend_uint name_len;
148 char *class_name;
149 zend_uint class_name_len;
150 zend_bool allow_null;
151 zend_bool pass_by_reference;
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
152 zend_bool return_reference;
7086634 Zeev Suraski - Improve ARG_INFO() macros to support supplying required_num_args
zsuraski authored
153 int required_num_args;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
154 } zend_arg_info;
155
573b460 andigutmans Zend Library
andigutmans authored
156 struct _zend_op_array {
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
157 /* Common elements */
158 zend_uchar type;
159 char *function_name;
160 zend_class_entry *scope;
161 zend_uint fn_flags;
162 union _zend_function *prototype;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
163 zend_uint num_args;
36a7518 Zeev Suraski - Abstract methods cannot have defaults for arguments
zsuraski authored
164 zend_uint required_num_args;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
165 zend_arg_info *arg_info;
166 zend_bool pass_rest_by_reference;
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
167 unsigned char return_reference;
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
168 /* END of common elements */
573b460 andigutmans Zend Library
andigutmans authored
169
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
170 zend_uint *refcount;
573b460 andigutmans Zend Library
andigutmans authored
171
172 zend_op *opcodes;
232b904 Zeev Suraski Clean up last/size definitions
zsuraski authored
173 zend_uint last, size;
573b460 andigutmans Zend Library
andigutmans authored
174
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
175 zend_uint T;
573b460 andigutmans Zend Library
andigutmans authored
176
177 zend_brk_cont_element *brk_cont_array;
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
178 zend_uint last_brk_cont;
179 zend_uint current_brk_cont;
573b460 andigutmans Zend Library
andigutmans authored
180
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
181 zend_try_catch_element *try_catch_array;
182 int last_try_catch;
183
573b460 andigutmans Zend Library
andigutmans authored
184 /* static variables support */
185 HashTable *static_variables;
186
85b4df5 Zeev Suraski Improved interactive mode - it is now available in all builds, without a...
zsuraski authored
187 zend_op *start_op;
573b460 andigutmans Zend Library
andigutmans authored
188 int backpatch_count;
85b4df5 Zeev Suraski Improved interactive mode - it is now available in all builds, without a...
zsuraski authored
189
42d1529 Zeev Suraski Fix possible bug with extension dtors being called without the ctors bei...
zsuraski authored
190 zend_bool done_pass_two;
0ce019f andigutmans - Fix issues with $this when using it by itself without indirection such...
andigutmans authored
191 zend_bool uses_this;
573b460 andigutmans Zend Library
andigutmans authored
192
c06692e Zeev Suraski The patch we promised - redesigned the compilation/execution API:
zsuraski authored
193 char *filename;
5657b83 Multi-purpose patch:
Andrei Zmievski authored
194 zend_uint line_start;
195 zend_uint line_end;
196 char *doc_comment;
197 zend_uint doc_comment_len;
c06692e Zeev Suraski The patch we promised - redesigned the compilation/execution API:
zsuraski authored
198
b5f5e9a andigutmans - Optimize the execute stack a bit.
andigutmans authored
199 void *reserved[ZEND_MAX_RESERVED_RESOURCES];
573b460 andigutmans Zend Library
andigutmans authored
200 };
201
202
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
203 #define ZEND_RETURN_VALUE 0
204 #define ZEND_RETURN_REFERENCE 1
205 #define ZEND_RETURN_REFERENCE_AGNOSTIC 2
206
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
207 typedef struct _zend_internal_function {
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
208 /* Common elements */
209 zend_uchar type;
210 char *function_name;
211 zend_class_entry *scope;
212 zend_uint fn_flags;
213 union _zend_function *prototype;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
214 zend_uint num_args;
36a7518 Zeev Suraski - Abstract methods cannot have defaults for arguments
zsuraski authored
215 zend_uint required_num_args;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
216 zend_arg_info *arg_info;
217 zend_bool pass_rest_by_reference;
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
218 unsigned char return_reference;
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
219 /* END of common elements */
573b460 andigutmans Zend Library
andigutmans authored
220
221 void (*handler)(INTERNAL_FUNCTION_PARAMETERS);
222 } zend_internal_function;
223
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
224 #define ZEND_FN_SCOPE_NAME(function) ((function) && (function)->common.scope ? (function)->common.scope->name : "")
e8214a3 andigutmans - Commit Marcus' cleanup of abstract and static inheritance and improve
andigutmans authored
225
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
226 typedef union _zend_function {
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
227 zend_uchar type; /* MUST be the first element of this struct! */
d1eea3d andigutmans - Fix bug in nested try/catch's
andigutmans authored
228
573b460 andigutmans Zend Library
andigutmans authored
229 struct {
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
230 zend_uchar type; /* never used */
7f35cfd Zeev Suraski *** empty log message ***
zsuraski authored
231 char *function_name;
d1eea3d andigutmans - Fix bug in nested try/catch's
andigutmans authored
232 zend_class_entry *scope;
01e853c andigutmans - My personal cleanups
andigutmans authored
233 zend_uint fn_flags;
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
234 union _zend_function *prototype;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
235 zend_uint num_args;
36a7518 Zeev Suraski - Abstract methods cannot have defaults for arguments
zsuraski authored
236 zend_uint required_num_args;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
237 zend_arg_info *arg_info;
238 zend_bool pass_rest_by_reference;
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
239 unsigned char return_reference;
573b460 andigutmans Zend Library
andigutmans authored
240 } common;
241
242 zend_op_array op_array;
243 zend_internal_function internal_function;
244 } zend_function;
245
246
9cb2cf1 Zeev Suraski Optimize allocations into uninitialized_zval assignments
zsuraski authored
247 typedef struct _zend_function_state {
573b460 andigutmans Zend Library
andigutmans authored
248 HashTable *function_symbol_table;
249 zend_function *function;
b5f5e9a andigutmans - Optimize the execute stack a bit.
andigutmans authored
250 void *reserved[ZEND_MAX_RESERVED_RESOURCES];
573b460 andigutmans Zend Library
andigutmans authored
251 } zend_function_state;
252
253
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
254 typedef struct _zend_switch_entry {
573b460 andigutmans Zend Library
andigutmans authored
255 znode cond;
256 int default_case;
257 int control_var;
258 } zend_switch_entry;
259
260
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
261 typedef struct _list_llist_element {
573b460 andigutmans Zend Library
andigutmans authored
262 znode var;
263 zend_llist dimensions;
264 znode value;
265 } list_llist_element;
266
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
267 union _temp_variable;
268
1327480 andigutmans - Fix compile warning.
andigutmans authored
269 struct _zend_execute_data {
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
270 struct _zend_op *opline;
271 zend_function_state function_state;
272 zend_function *fbc; /* Function Being Called */
273 zend_function *fbc_constructor;
41e3f4f andigutmans - Fix problem with debug_backtrace() reported by Stig. We weren't report...
andigutmans authored
274 zend_op_array *op_array;
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
275 zval *object;
276 union _temp_variable *Ts;
277 zend_bool original_in_execution;
278 zend_class_entry *calling_scope;
279 struct _zend_execute_data *prev_execute_data;
1327480 andigutmans - Fix compile warning.
andigutmans authored
280 };
573b460 andigutmans Zend Library
andigutmans authored
281
b66c89c andigutmans - More debug backtrace work. It still doesn't work very well...
andigutmans authored
282 #define EX(element) execute_data.element
283
573b460 andigutmans Zend Library
andigutmans authored
284
285 #define IS_CONST (1<<0)
286 #define IS_TMP_VAR (1<<1)
287 #define IS_VAR (1<<2)
288 #define IS_UNUSED (1<<3) /* Unused variable */
289
290 #define EXT_TYPE_UNUSED (1<<0)
291
df74f1d Add optional support for C0x inline semantics.
Sascha Schumann authored
292 #include "zend_globals.h"
293
ad115d2 Zeev Suraski Fix require()
zsuraski authored
294 BEGIN_EXTERN_C()
295
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
296 void init_compiler(TSRMLS_D);
297 void shutdown_compiler(TSRMLS_D);
298 void zend_init_compiler_data_structures(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
299
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
300 extern ZEND_API zend_op_array *(*zend_compile_file)(zend_file_handle *file_handle, int type TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
301
1fd542f Export lex_scan(). Both the PHPDoc and tokenizer extension need this. I ...
Sebastian Bergmann authored
302 ZEND_API int lex_scan(zval *zendlval TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
303 void startup_scanner(TSRMLS_D);
304 void shutdown_scanner(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
305
4187439 Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
306 ZEND_API char *zend_set_compiled_filename(char *new_compiled_filename TSRMLS_DC);
307 ZEND_API void zend_restore_compiled_filename(char *original_compiled_filename TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
308 ZEND_API char *zend_get_compiled_filename(TSRMLS_D);
309 ZEND_API int zend_get_compiled_lineno(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
310
1aa2c5c Zeev Suraski Ok, call me crazy, because I probably am.
zsuraski authored
311 #ifdef ZTS
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
312 const char *zend_get_zendtext(TSRMLS_D);
313 int zend_get_zendleng(TSRMLS_D);
1aa2c5c Zeev Suraski Ok, call me crazy, because I probably am.
zsuraski authored
314 #endif
315
573b460 andigutmans Zend Library
andigutmans authored
316
317 /* parser-driven code generators */
51e797f some type cleanup work
Harald Radi authored
318 void zend_do_binary_op(zend_uchar op, znode *result, znode *op1, znode *op2 TSRMLS_DC);
319 void zend_do_unary_op(zend_uchar op, znode *result, znode *op1 TSRMLS_DC);
320 void zend_do_binary_assign_op(zend_uchar op, znode *result, znode *op1, znode *op2 TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
321 void zend_do_assign(znode *result, znode *variable, znode *value TSRMLS_DC);
322 void zend_do_assign_ref(znode *result, znode *lvar, znode *rvar TSRMLS_DC);
323 void fetch_simple_variable(znode *result, znode *varname, int bp TSRMLS_DC);
51e797f some type cleanup work
Harald Radi authored
324 void fetch_simple_variable_ex(znode *result, znode *varname, int bp, zend_uchar op TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
325 void zend_do_indirect_references(znode *result, znode *num_references, znode *variable TSRMLS_DC);
830c2e0 Stanislav Malyshev fix statics - make it behave like $this (fetch type "static")
smalyshev authored
326 void zend_do_fetch_static_variable(znode *varname, znode *static_assignment, int fetch_type TSRMLS_DC);
327 void zend_do_fetch_global_variable(znode *varname, znode *static_assignment, int fetch_type TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
328
329 void fetch_array_begin(znode *result, znode *varname, znode *first_dim TSRMLS_DC);
330 void fetch_array_dim(znode *result, znode *parent, znode *dim TSRMLS_DC);
331 void fetch_string_offset(znode *result, znode *parent, znode *offset TSRMLS_DC);
3a9eeea Stanislav Malyshev avoid using 'class' in exported functions - it annoys c++
smalyshev authored
332 void zend_do_fetch_static_member(znode *class_znode TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
333 void zend_do_print(znode *result, znode *arg TSRMLS_DC);
334 void zend_do_echo(znode *arg TSRMLS_DC);
8802964 * fix some casts
Sascha Schumann authored
335 typedef int (*unary_op_type)(zval *, zval *);
336 ZEND_API unary_op_type get_unary_op(int opcode);
573b460 andigutmans Zend Library
andigutmans authored
337 ZEND_API void *get_binary_op(int opcode);
338
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
339 void zend_do_while_cond(znode *expr, znode *close_bracket_token TSRMLS_DC);
340 void zend_do_while_end(znode *while_token, znode *close_bracket_token TSRMLS_DC);
341 void zend_do_do_while_begin(TSRMLS_D);
342 void zend_do_do_while_end(znode *do_token, znode *expr_open_bracket, znode *expr TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
343
344
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
345 void zend_do_if_cond(znode *cond, znode *closing_bracket_token TSRMLS_DC);
346 void zend_do_if_after_statement(znode *closing_bracket_token, unsigned char initialize TSRMLS_DC);
347 void zend_do_if_end(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
348
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
349 void zend_do_for_cond(znode *expr, znode *second_semicolon_token TSRMLS_DC);
350 void zend_do_for_before_statement(znode *cond_start, znode *second_semicolon_token TSRMLS_DC);
351 void zend_do_for_end(znode *second_semicolon_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
352
51e797f some type cleanup work
Harald Radi authored
353 void zend_do_pre_incdec(znode *result, znode *op1, zend_uchar op TSRMLS_DC);
354 void zend_do_post_incdec(znode *result, znode *op1, zend_uchar op TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
355
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
356 void zend_do_begin_variable_parse(TSRMLS_D);
357 void zend_do_end_variable_parse(int type, int arg_offset TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
358
ac7ed46 andigutmans - Start adding parsed variable checks.
andigutmans authored
359 void zend_check_writable_variable(znode *variable);
360
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
361 void zend_do_free(znode *op1 TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
362
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
363 void zend_do_init_string(znode *result TSRMLS_DC);
364 void zend_do_add_char(znode *result, znode *op1, znode *op2 TSRMLS_DC);
365 void zend_do_add_string(znode *result, znode *op1, znode *op2 TSRMLS_DC);
366 void zend_do_add_variable(znode *result, znode *op1, znode *op2 TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
367
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
368 int zend_do_verify_access_types(znode *current_access_type, znode *new_modifier);
26dd849 Zeev Suraski Add support for interfaces
zsuraski authored
369 void zend_do_begin_function_declaration(znode *function_token, znode *function_name, int is_method, int return_reference, znode *fn_flags_znode TSRMLS_DC);
e6255b0 Revert portions of the doc comment patch. There should be no parser
Andrei Zmievski authored
370 void zend_do_end_function_declaration(znode *function_token TSRMLS_DC);
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
371 void zend_do_receive_arg(zend_uchar op, znode *var, znode *offset, znode *initialization, znode *class_type, znode *varname, zend_bool pass_by_reference TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
372 int zend_do_begin_function_call(znode *function_name TSRMLS_DC);
2ce4b47 andigutmans - Initial support for _clone()
andigutmans authored
373 void zend_do_begin_method_call(znode *left_bracket TSRMLS_DC);
8e30d96 Zeev Suraski Redesign the clone() feature to fix some fundamental flaws in the previo...
zsuraski authored
374 void zend_do_clone(znode *result, znode *expr TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
375 void zend_do_begin_dynamic_function_call(znode *function_name TSRMLS_DC);
f7f5a5e Stanislav Malyshev MEGA-patch: namespaces are R.I.P.
smalyshev authored
376 void zend_do_fetch_class(znode *result, znode *class_name TSRMLS_DC);
d344648 andigutmans - Fix __autoload() to preserve class case.
andigutmans authored
377 void zend_do_fetch_class_name(znode *result, znode *class_entry, znode *class_name TSRMLS_DC);
8bc88d8 Zeev Suraski Fix parsing rules of namespaces/classes
zsuraski authored
378 void zend_do_begin_class_member_function_call(TSRMLS_D);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
379 void zend_do_end_function_call(znode *function_name, znode *result, znode *argument_list, int is_method, int is_dynamic_fcall TSRMLS_DC);
380 void zend_do_return(znode *expr, int do_end_vparse TSRMLS_DC);
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
381 void zend_do_handle_exception(TSRMLS_D);
29f5dbe andigutmans - Initial support for exceptions.
andigutmans authored
382
6197021 andigutmans - Make it compile in thread-safe mode.
andigutmans authored
383 void zend_do_try(znode *try_token TSRMLS_DC);
21b04ff andigutmans @ Allow a series of consecutive catch() statements (Andi, Zend Engine)
andigutmans authored
384 void zend_do_begin_catch(znode *try_token, znode *catch_class, znode *catch_var, zend_bool first_catch TSRMLS_DC);
6197021 andigutmans - Make it compile in thread-safe mode.
andigutmans authored
385 void zend_do_end_catch(znode *try_token TSRMLS_DC);
386 void zend_do_throw(znode *expr TSRMLS_DC);
29f5dbe andigutmans - Initial support for exceptions.
andigutmans authored
387
c5d8422 Zeev Suraski Reinstate early-binding for classes.
zsuraski authored
388 ZEND_API int do_bind_function(zend_op *opline, HashTable *function_table, zend_bool compile_time);
389 ZEND_API zend_class_entry *do_bind_class(zend_op *opline, HashTable *class_table, zend_bool compile_time TSRMLS_DC);
390 ZEND_API zend_class_entry *do_bind_inherited_class(zend_op *opline, HashTable *class_table, zend_class_entry *parent_ce, zend_bool compile_time TSRMLS_DC);
3c62b3b Expand Interface C API.
Marcus Boerger authored
391 ZEND_API void zend_do_inherit_interfaces(zend_class_entry *ce, zend_class_entry *iface TSRMLS_DC);
392 ZEND_API void zend_do_implement_interface(zend_class_entry *ce, zend_class_entry *iface TSRMLS_DC);
26dd849 Zeev Suraski Add support for interfaces
zsuraski authored
393 void zend_do_implements_interface(znode *interface_znode TSRMLS_DC);
f78fa50 andigutmans - Megapatch to try and support inheritance from sub-classes. Things migh...
andigutmans authored
394
3c62b3b Expand Interface C API.
Marcus Boerger authored
395 void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent_ce TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
396 void zend_do_early_binding(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
397
51e797f some type cleanup work
Harald Radi authored
398 void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
399
400
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
401 void zend_do_boolean_or_begin(znode *expr1, znode *op_token TSRMLS_DC);
402 void zend_do_boolean_or_end(znode *result, znode *expr1, znode *expr2, znode *op_token TSRMLS_DC);
333406b - Added some missing CVS $Id$ tags, headers and footers.
foobar authored
403 void zend_do_boolean_and_begin(znode *expr1, znode *op_token TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
404 void zend_do_boolean_and_end(znode *result, znode *expr1, znode *expr2, znode *op_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
405
51e797f some type cleanup work
Harald Radi authored
406 void zend_do_brk_cont(zend_uchar op, znode *expr TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
407
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
408 void zend_do_switch_cond(znode *cond TSRMLS_DC);
409 void zend_do_switch_end(znode *case_list TSRMLS_DC);
410 void zend_do_case_before_statement(znode *case_list, znode *case_token, znode *case_expr TSRMLS_DC);
411 void zend_do_case_after_statement(znode *result, znode *case_token TSRMLS_DC);
412 void zend_do_default_before_statement(znode *case_list, znode *default_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
413
74efc41 andigutmans - Make classes have scope and function/constant lookups default to the c...
andigutmans authored
414 void zend_do_begin_class_declaration(znode *class_token, znode *class_name, znode *parent_class_name TSRMLS_DC);
e6255b0 Revert portions of the doc comment patch. There should be no parser
Andrei Zmievski authored
415 void zend_do_end_class_declaration(znode *class_token, znode *parent_token TSRMLS_DC);
6317e26 Zeev Suraski - Treat $this->foo inside class X as an implicit 'public $foo' if X::$fo...
zsuraski authored
416 void zend_do_declare_property(znode *var_name, znode *value, zend_uint access_type TSRMLS_DC);
8d2a4e0 Zeev Suraski Fix bogus implicit declarations of properties (squash bug #23671)
zsuraski authored
417 void zend_do_declare_implicit_property(TSRMLS_D);
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
418 void zend_do_declare_class_constant(znode *var_name, znode *value TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
419
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
420 void zend_do_fetch_property(znode *result, znode *object, znode *property TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
421
422
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
423 void zend_do_push_object(znode *object TSRMLS_DC);
424 void zend_do_pop_object(znode *object TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
425
426
a332f82 andigutmans - Support instantiation of nested class. The following script now should
andigutmans authored
427 void zend_do_begin_new_object(znode *new_token, znode *class_type TSRMLS_DC);
428 void zend_do_end_new_object(znode *result, znode *new_token, znode *argument_list TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
429
e858d27 andigutmans - Initial support for class constants. There are still a few semantic
andigutmans authored
430 void zend_do_fetch_constant(znode *result, znode *constant_container, znode *constant_name, int mode TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
431
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
432 void zend_do_shell_exec(znode *result, znode *cmd TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
433
51e797f some type cleanup work
Harald Radi authored
434 void zend_do_init_array(znode *result, znode *expr, znode *offset, zend_bool is_ref TSRMLS_DC);
435 void zend_do_add_array_element(znode *result, znode *expr, znode *offset, zend_bool is_ref TSRMLS_DC);
f1a9920 Zeev Suraski Maintain consistency
zsuraski authored
436 void zend_do_add_static_array_element(znode *result, znode *offset, znode *expr);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
437 void zend_do_list_init(TSRMLS_D);
438 void zend_do_list_end(znode *result, znode *expr TSRMLS_DC);
439 void zend_do_add_list_element(znode *element TSRMLS_DC);
440 void zend_do_new_list_begin(TSRMLS_D);
441 void zend_do_new_list_end(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
442
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
443 void zend_do_cast(znode *result, znode *expr, int type TSRMLS_DC);
444 void zend_do_include_or_eval(int type, znode *result, znode *op1 TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
445
7b68f51 andigutmans - Nuke delete(). It was a big mistake to introduce it and I finally
andigutmans authored
446 void zend_do_unset(znode *variable TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
447 void zend_do_isset_or_isempty(int type, znode *result, znode *variable TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
448
c073b76 andigutmans - Change "is" to "instanceof" as it explains better what the operator me...
andigutmans authored
449 void zend_do_instanceof(znode *result, znode *expr, znode *class_znode, int type TSRMLS_DC);
82c72f2 @- Adding 'is' operator that can be used to check the type of a variable...
Andrei Zmievski authored
450
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
451 void zend_do_foreach_begin(znode *foreach_token, znode *array, znode *open_brackets_token, znode *as_token, int variable TSRMLS_DC);
03b6af0 Zeev Suraski Support references in foreach()
zsuraski authored
452 void zend_do_foreach_cont(znode *value, znode *key, znode *as_token, znode *foreach_token TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
453 void zend_do_foreach_end(znode *foreach_token, znode *open_brackets_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
454
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
455 void zend_do_declare_begin(TSRMLS_D);
456 void zend_do_declare_stmt(znode *var, znode *val TSRMLS_DC);
b806a8e MFZE1 (use token instead of global for opcode counting)
Jason Greene authored
457 void zend_do_declare_end(znode *declare_token TSRMLS_DC);
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
458
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
459 void zend_do_end_heredoc(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
460
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
461 void zend_do_exit(znode *result, znode *message TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
462
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
463 void zend_do_begin_silence(znode *strudel_token TSRMLS_DC);
464 void zend_do_end_silence(znode *strudel_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
465
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
466 void zend_do_begin_qm_op(znode *cond, znode *qm_token TSRMLS_DC);
467 void zend_do_qm_true(znode *true_value, znode *qm_token, znode *colon_token TSRMLS_DC);
468 void zend_do_qm_false(znode *result, znode *false_value, znode *qm_token, znode *colon_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
469
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
470 void zend_do_extended_info(TSRMLS_D);
471 void zend_do_extended_fcall_begin(TSRMLS_D);
472 void zend_do_extended_fcall_end(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
473
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
474 void zend_do_ticks(TSRMLS_D);
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
475
2814504 Zeev Suraski Improve parser handling of 'abstract'
zsuraski authored
476 void zend_do_abstract_method(znode *function_name, znode *modifiers, znode *body TSRMLS_DC);
227f783 andigutmans - Fix build (thanks Marcus)
andigutmans authored
477
727398b andigutmans Add to the API
andigutmans authored
478 ZEND_API void function_add_ref(zend_function *function);
0b7a9ce Zeev Suraski - Fix Win32 compilation (Use winsock2.h from now on)
zsuraski authored
479
7c4a083 Zeev Suraski Various thread safety fixes and DLL updates
zsuraski authored
480 #define INITIAL_OP_ARRAY_SIZE 64
481
573b460 andigutmans Zend Library
andigutmans authored
482
7b0d92d Zeev Suraski Unify the names of these last 3 files...
zsuraski authored
483 /* helper functions in zend_language_scanner.l */
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
484 ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSRMLS_DC);
485 ZEND_API zend_op_array *compile_string(zval *source_string, char *filename TSRMLS_DC);
486 ZEND_API zend_op_array *compile_filename(int type, zval *filename TSRMLS_DC);
819ea51 Zeev Suraski MFZE1
zsuraski authored
487 ZEND_API int zend_execute_scripts(int type TSRMLS_DC, zval **retval, int file_count, ...);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
488 ZEND_API int open_file_for_scanning(zend_file_handle *file_handle TSRMLS_DC);
51e797f some type cleanup work
Harald Radi authored
489 ZEND_API void init_op_array(zend_op_array *op_array, zend_uchar type, int initial_ops_size TSRMLS_DC);
3fc8528 Eliminate TSRMLS_FETCH() calls in destroy_op_array() and zend_get_class_...
Sebastian Bergmann authored
490 ZEND_API void destroy_op_array(zend_op_array *op_array TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
491 ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle TSRMLS_DC);
5090b1e Stanislav Malyshev Fix zend_fiel_handle handling. Should fix URL include
smalyshev authored
492 ZEND_API void zend_file_handle_dtor(zend_file_handle *fh);
03f88ac Stanislav Malyshev Add additional stage to post-session cleanup.
smalyshev authored
493 ZEND_API int zend_cleanup_class_data(zend_class_entry **pce TSRMLS_DC);
494 ZEND_API int zend_cleanup_function_data(zend_function *function TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
495
3fc8528 Eliminate TSRMLS_FETCH() calls in destroy_op_array() and zend_get_class_...
Sebastian Bergmann authored
496 ZEND_API void destroy_zend_function(zend_function *function TSRMLS_DC);
fb5cb59 Fixed Zend Function Destructor to use correct TSRM handle.
Stefan Esser authored
497 ZEND_API void zend_function_dtor(zend_function *function);
92dd5e6 Stanislav Malyshev - make class tables contain class_entry *, not class_entry
smalyshev authored
498 ZEND_API void destroy_zend_class(zend_class_entry **pce);
c8c629b andigutmans - Fix bug introduced with latest class hash table change.
andigutmans authored
499 void zend_class_add_ref(zend_class_entry **ce);
7c4a083 Zeev Suraski Various thread safety fixes and DLL updates
zsuraski authored
500
6923a16 - Fixed var_export() to show public, protected and private modifiers pro...
Derick Rethans authored
501 ZEND_API void zend_mangle_property_name(char **dest, int *dest_length, char *src1, int src1_length, char *src2, int src2_length, int internal);
502 ZEND_API void zend_unmangle_property_name(char *mangled_property, char **prop_name, char **class_name);
471947b Zeev Suraski Reimplement PPP properties
zsuraski authored
503
fb5cb59 Fixed Zend Function Destructor to use correct TSRM handle.
Stefan Esser authored
504 #define ZEND_FUNCTION_DTOR (void (*)(void *)) zend_function_dtor
62114c1 Zeev Suraski Destructors no longer return ints, the low level problem it was intended...
zsuraski authored
505 #define ZEND_CLASS_DTOR (void (*)(void *)) destroy_zend_class
81d901b Zeev Suraski Step 1 in nuking the garbage collector:
zsuraski authored
506
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
507 zend_op *get_next_op(zend_op_array *op_array TSRMLS_DC);
508 void init_op(zend_op *op TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
509 int get_next_op_number(zend_op_array *op_array);
d76cf1d Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
510 int print_class(zend_class_entry *class_entry TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
511 void print_op_array(zend_op_array *op_array, int optimizations);
d76cf1d Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
512 int pass_two(zend_op_array *op_array TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
513 zend_brk_cont_element *get_next_brk_cont_element(zend_op_array *op_array);
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
514 void zend_do_first_catch(znode *open_parentheses TSRMLS_DC);
515 void zend_initialize_try_catch_element(znode *try_token TSRMLS_DC);
516 void zend_do_mark_last_catch(znode *first_catch, znode *last_additional_catch TSRMLS_DC);
4187439 Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
517 ZEND_API zend_bool zend_is_compiling(TSRMLS_D);
b577038 Zeev Suraski Avoid TSRMLS_FETCH()'s (still lots of work left)
zsuraski authored
518 ZEND_API char *zend_make_compiled_string_description(char *name TSRMLS_DC);
9c909f4 Sync: Export externally used functions.
Sebastian Bergmann authored
519 ZEND_API void zend_initialize_class_data(zend_class_entry *ce, zend_bool nullify_handlers TSRMLS_DC);
9d7122f Zeev Suraski Generalize fetch_class
zsuraski authored
520 int zend_get_class_fetch_type(char *class_name, uint class_name_len);
c17c7a2 Zeev Suraski Centralize class initialization
zsuraski authored
521
f7b7800 Zeev Suraski Add infrastructure for JIT initialization of auto globals
zsuraski authored
522 typedef zend_bool (*zend_auto_global_callback)(char *name, uint name_len TSRMLS_DC);
523 typedef struct _zend_auto_global {
524 char *name;
525 uint name_len;
526 zend_auto_global_callback auto_global_callback;
527 zend_bool armed;
528 } zend_auto_global;
573b460 andigutmans Zend Library
andigutmans authored
529
f7b7800 Zeev Suraski Add infrastructure for JIT initialization of auto globals
zsuraski authored
530 void zend_auto_global_dtor(zend_auto_global *auto_global);
170de9b export functions needed by cli
Shane Caraveo authored
531 ZEND_API int zend_register_auto_global(char *name, uint name_len, zend_auto_global_callback auto_global_callback TSRMLS_DC);
532 ZEND_API zend_bool zend_is_auto_global(char *name, uint name_len TSRMLS_DC);
e2a5ebf Zeev Suraski Add ability to disable JIT for a particular auto global
zsuraski authored
533 ZEND_API int zend_auto_global_disable_jit(char *varname, zend_uint varname_length TSRMLS_DC);
9d11db1 andigutmans - Merge new $_GET, $_POST etc. patch from Engine 1 tree
andigutmans authored
534
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
535 int zendlex(znode *zendlval TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
536
5ae7fa4 add markers that make this file easy to parse for external sources
Sterling Hughes authored
537 /* BEGIN: OPCODES */
573b460 andigutmans Zend Library
andigutmans authored
538 #define ZEND_NOP 0
539
540 #define ZEND_ADD 1
541 #define ZEND_SUB 2
542 #define ZEND_MUL 3
543 #define ZEND_DIV 4
544 #define ZEND_MOD 5
545 #define ZEND_SL 6
546 #define ZEND_SR 7
547 #define ZEND_CONCAT 8
548 #define ZEND_BW_OR 9
549 #define ZEND_BW_AND 10
550 #define ZEND_BW_XOR 11
551 #define ZEND_BW_NOT 12
552 #define ZEND_BOOL_NOT 13
553 #define ZEND_BOOL_XOR 14
98f0254 andigutmans - Move IS_IDENTICAL next to IS_EQUAL
andigutmans authored
554 #define ZEND_IS_IDENTICAL 15
521c8af Added !== (is not identical) operator.
Torben Wilson authored
555 #define ZEND_IS_NOT_IDENTICAL 16
556 #define ZEND_IS_EQUAL 17
557 #define ZEND_IS_NOT_EQUAL 18
558 #define ZEND_IS_SMALLER 19
559 #define ZEND_IS_SMALLER_OR_EQUAL 20
560 #define ZEND_CAST 21
561 #define ZEND_QM_ASSIGN 22
562
563 #define ZEND_ASSIGN_ADD 23
564 #define ZEND_ASSIGN_SUB 24
565 #define ZEND_ASSIGN_MUL 25
566 #define ZEND_ASSIGN_DIV 26
567 #define ZEND_ASSIGN_MOD 27
568 #define ZEND_ASSIGN_SL 28
569 #define ZEND_ASSIGN_SR 29
570 #define ZEND_ASSIGN_CONCAT 30
571 #define ZEND_ASSIGN_BW_OR 31
572 #define ZEND_ASSIGN_BW_AND 32
573 #define ZEND_ASSIGN_BW_XOR 33
573b460 andigutmans Zend Library
andigutmans authored
574
521c8af Added !== (is not identical) operator.
Torben Wilson authored
575 #define ZEND_PRE_INC 34
576 #define ZEND_PRE_DEC 35
577 #define ZEND_POST_INC 36
578 #define ZEND_POST_DEC 37
579
580 #define ZEND_ASSIGN 38
581 #define ZEND_ASSIGN_REF 39
582
583 #define ZEND_ECHO 40
584 #define ZEND_PRINT 41
585
586 #define ZEND_JMP 42
587 #define ZEND_JMPZ 43
588 #define ZEND_JMPNZ 44
589 #define ZEND_JMPZNZ 45
590 #define ZEND_JMPZ_EX 46
591 #define ZEND_JMPNZ_EX 47
592 #define ZEND_CASE 48
593 #define ZEND_SWITCH_FREE 49
594 #define ZEND_BRK 50
595 #define ZEND_CONT 51
596 #define ZEND_BOOL 52
597
598 #define ZEND_INIT_STRING 53
599 #define ZEND_ADD_CHAR 54
600 #define ZEND_ADD_STRING 55
601 #define ZEND_ADD_VAR 56
602
603 #define ZEND_BEGIN_SILENCE 57
604 #define ZEND_END_SILENCE 58
605
606 #define ZEND_INIT_FCALL_BY_NAME 59
607 #define ZEND_DO_FCALL 60
608 #define ZEND_DO_FCALL_BY_NAME 61
609 #define ZEND_RETURN 62
610
611 #define ZEND_RECV 63
612 #define ZEND_RECV_INIT 64
573b460 andigutmans Zend Library
andigutmans authored
613
521c8af Added !== (is not identical) operator.
Torben Wilson authored
614 #define ZEND_SEND_VAL 65
615 #define ZEND_SEND_VAR 66
616 #define ZEND_SEND_REF 67
573b460 andigutmans Zend Library
andigutmans authored
617
521c8af Added !== (is not identical) operator.
Torben Wilson authored
618 #define ZEND_NEW 68
619 #define ZEND_JMP_NO_CTOR 69
620 #define ZEND_FREE 70
573b460 andigutmans Zend Library
andigutmans authored
621
521c8af Added !== (is not identical) operator.
Torben Wilson authored
622 #define ZEND_INIT_ARRAY 71
623 #define ZEND_ADD_ARRAY_ELEMENT 72
573b460 andigutmans Zend Library
andigutmans authored
624
521c8af Added !== (is not identical) operator.
Torben Wilson authored
625 #define ZEND_INCLUDE_OR_EVAL 73
573b460 andigutmans Zend Library
andigutmans authored
626
521c8af Added !== (is not identical) operator.
Torben Wilson authored
627 #define ZEND_UNSET_VAR 74
68fa4e5 Zeev Suraski Get rid of an opcode
zsuraski authored
628 #define ZEND_UNSET_DIM_OBJ 75
573b460 andigutmans Zend Library
andigutmans authored
629
521c8af Added !== (is not identical) operator.
Torben Wilson authored
630 #define ZEND_FE_RESET 77
631 #define ZEND_FE_FETCH 78
573b460 andigutmans Zend Library
andigutmans authored
632
521c8af Added !== (is not identical) operator.
Torben Wilson authored
633 #define ZEND_EXIT 79
573b460 andigutmans Zend Library
andigutmans authored
634
635
7fa17e8 andigutmans - Put in the infrastructure for the unset() fix. Right now it has the ol...
andigutmans authored
636 /* the following 18 opcodes are 6 groups of 3 opcodes each, and must
573b460 andigutmans Zend Library
andigutmans authored
637 * remain in that order!
638 */
521c8af Added !== (is not identical) operator.
Torben Wilson authored
639 #define ZEND_FETCH_R 80
640 #define ZEND_FETCH_DIM_R 81
641 #define ZEND_FETCH_OBJ_R 82
642 #define ZEND_FETCH_W 83
643 #define ZEND_FETCH_DIM_W 84
644 #define ZEND_FETCH_OBJ_W 85
645 #define ZEND_FETCH_RW 86
646 #define ZEND_FETCH_DIM_RW 87
647 #define ZEND_FETCH_OBJ_RW 88
648 #define ZEND_FETCH_IS 89
649 #define ZEND_FETCH_DIM_IS 90
650 #define ZEND_FETCH_OBJ_IS 91
651 #define ZEND_FETCH_FUNC_ARG 92
652 #define ZEND_FETCH_DIM_FUNC_ARG 93
653 #define ZEND_FETCH_OBJ_FUNC_ARG 94
654 #define ZEND_FETCH_UNSET 95
655 #define ZEND_FETCH_DIM_UNSET 96
656 #define ZEND_FETCH_OBJ_UNSET 97
657
658 #define ZEND_FETCH_DIM_TMP_VAR 98
659 #define ZEND_FETCH_CONSTANT 99
660
f78fa50 andigutmans - Megapatch to try and support inheritance from sub-classes. Things migh...
andigutmans authored
661 /* Hole - 100 */
521c8af Added !== (is not identical) operator.
Torben Wilson authored
662
663 #define ZEND_EXT_STMT 101
664 #define ZEND_EXT_FCALL_BEGIN 102
665 #define ZEND_EXT_FCALL_END 103
666 #define ZEND_EXT_NOP 104
667
668 #define ZEND_TICKS 105
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
669
d0fbddc Zeev Suraski Fix a corruption bug, when erroneously allowing to send non-variables by...
zsuraski authored
670 #define ZEND_SEND_VAR_NO_REF 106
671
29f5dbe andigutmans - Initial support for exceptions.
andigutmans authored
672 #define ZEND_CATCH 107
673 #define ZEND_THROW 108
674
b90d80b andigutmans - Initial patch to support importing from class scopes (for Stig).
andigutmans authored
675 #define ZEND_FETCH_CLASS 109
676
677 #define ZEND_CLONE 110
2ce4b47 andigutmans - Initial support for _clone()
andigutmans authored
678
b90d80b andigutmans - Initial patch to support importing from class scopes (for Stig).
andigutmans authored
679 #define ZEND_INIT_CTOR_CALL 111
680 #define ZEND_INIT_METHOD_CALL 112
681 #define ZEND_INIT_STATIC_METHOD_CALL 113
0ab9d11 andigutmans - Start splitting up different kinds of function calls into different
andigutmans authored
682
b90d80b andigutmans - Initial patch to support importing from class scopes (for Stig).
andigutmans authored
683 #define ZEND_ISSET_ISEMPTY_VAR 114
684 #define ZEND_ISSET_ISEMPTY_DIM_OBJ 115
6203a25 andigutmans - Separate other kinds of function calls too.
andigutmans authored
685
b90d80b andigutmans - Initial patch to support importing from class scopes (for Stig).
andigutmans authored
686 #define ZEND_IMPORT_FUNCTION 116
687 #define ZEND_IMPORT_CLASS 117
688 #define ZEND_IMPORT_CONST 118
04ed2b5 Stanislav Malyshev New stuff for objects API:
smalyshev authored
689
690 #define ZEND_PRE_INC_OBJ 132
691 #define ZEND_PRE_DEC_OBJ 133
692 #define ZEND_POST_INC_OBJ 134
693 #define ZEND_POST_DEC_OBJ 135
694
695 #define ZEND_ASSIGN_OBJ 136
3a4ace1 Stanislav Malyshev Replace MAKE_VAR opcode with special 'data' opcode
smalyshev authored
696 #define ZEND_OP_DATA 137
82c72f2 @- Adding 'is' operator that can be used to check the type of a variable...
Andrei Zmievski authored
697
c073b76 andigutmans - Change "is" to "instanceof" as it explains better what the operator me...
andigutmans authored
698 #define ZEND_INSTANCEOF 138
82c72f2 @- Adding 'is' operator that can be used to check the type of a variable...
Andrei Zmievski authored
699
f78fa50 andigutmans - Megapatch to try and support inheritance from sub-classes. Things migh...
andigutmans authored
700 #define ZEND_DECLARE_CLASS 139
701 #define ZEND_DECLARE_INHERITED_CLASS 140
702 #define ZEND_DECLARE_FUNCTION 141
703
227f783 andigutmans - Fix build (thanks Marcus)
andigutmans authored
704 #define ZEND_RAISE_ABSTRACT_ERROR 142
705
f7f5a5e Stanislav Malyshev MEGA-patch: namespaces are R.I.P.
smalyshev authored
706
a4c3b2c Stanislav Malyshev Namespace patch. Big changes:
smalyshev authored
707
26dd849 Zeev Suraski Add support for interfaces
zsuraski authored
708 #define ZEND_ADD_INTERFACE 144
0338111 Zeev Suraski Require abstract classes to be explicitly declared 'abstract', in order ...
zsuraski authored
709 #define ZEND_VERIFY_ABSTRACT_CLASS 146
26dd849 Zeev Suraski Add support for interfaces
zsuraski authored
710
938c0fb Zeev Suraski Initial support for overloading of array syntax for objects (very initia...
zsuraski authored
711 #define ZEND_ASSIGN_DIM 147
712
296529b Split isset/isempty for object property and object dimension hooking.
Marcus Boerger authored
713 #define ZEND_ISSET_ISEMPTY_PROP_OBJ 148
714
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
715 #define ZEND_HANDLE_EXCEPTION 149
716
573b460 andigutmans Zend Library
andigutmans authored
717 /* end of block */
5ae7fa4 add markers that make this file easy to parse for external sources
Sterling Hughes authored
718 /* END: OPCODES */
573b460 andigutmans Zend Library
andigutmans authored
719
720
721
722
723 /* global/local fetches */
d2da63f andigutmans - Support static members. The following script works:
andigutmans authored
724 #define ZEND_FETCH_GLOBAL 0
725 #define ZEND_FETCH_LOCAL 1
726 #define ZEND_FETCH_STATIC 2
727 #define ZEND_FETCH_STATIC_MEMBER 3
573b460 andigutmans Zend Library
andigutmans authored
728
68fa4e5 Zeev Suraski Get rid of an opcode
zsuraski authored
729
730 /* obj/dim unsets */
731 #define ZEND_UNSET_DIM 1
732 #define ZEND_UNSET_OBJ 2
733
74efc41 andigutmans - Make classes have scope and function/constant lookups default to the c...
andigutmans authored
734 /* class fetches */
735 #define ZEND_FETCH_CLASS_DEFAULT 0
736 #define ZEND_FETCH_CLASS_SELF 1
b3fd2fa andigutmans - Support parent:: again
andigutmans authored
737 #define ZEND_FETCH_CLASS_PARENT 2
738 #define ZEND_FETCH_CLASS_MAIN 3
a4c3b2c Stanislav Malyshev Namespace patch. Big changes:
smalyshev authored
739 #define ZEND_FETCH_CLASS_GLOBAL 4
9d7122f Zeev Suraski Generalize fetch_class
zsuraski authored
740 #define ZEND_FETCH_CLASS_AUTO 5
b3fd2fa andigutmans - Support parent:: again
andigutmans authored
741
74efc41 andigutmans - Make classes have scope and function/constant lookups default to the c...
andigutmans authored
742
880e7d8 andigutmans - Framework for knowing what kind of variable we just parsed.
andigutmans authored
743 /* variable parsing type (compile-time) */
03b6af0 Zeev Suraski Support references in foreach()
zsuraski authored
744 #define ZEND_PARSED_MEMBER (1<<0)
745 #define ZEND_PARSED_METHOD_CALL (1<<1)
746 #define ZEND_PARSED_STATIC_MEMBER (1<<2)
747 #define ZEND_PARSED_FUNCTION_CALL (1<<3)
748 #define ZEND_PARSED_VARIABLE (1<<4)
749 #define ZEND_PARSED_REFERENCE_VARIABLE (1<<5)
880e7d8 andigutmans - Framework for knowing what kind of variable we just parsed.
andigutmans authored
750
751
5af7770 andigutmans - Sync Engine2 CVS with latest Engine CVS
andigutmans authored
752 /* unset types */
753 #define ZEND_UNSET_REG 0
754
573b460 andigutmans Zend Library
andigutmans authored
755 /* var status for backpatching */
06d04d1 andigutmans - Fix SEND_VAR problem after fetch'ing a variable and not knowing the fe...
andigutmans authored
756 #define BP_VAR_R 0
757 #define BP_VAR_W 1
758 #define BP_VAR_RW 2
759 #define BP_VAR_IS 3
760 #define BP_VAR_NA 4 /* if not applicable */
761 #define BP_VAR_FUNC_ARG 5
7fa17e8 andigutmans - Put in the infrastructure for the unset() fix. Right now it has the ol...
andigutmans authored
762 #define BP_VAR_UNSET 6
573b460 andigutmans Zend Library
andigutmans authored
763
764
49c4866 Zeev Suraski - Improve tracking
zsuraski authored
765 #define ZEND_INTERNAL_FUNCTION 1
766 #define ZEND_USER_FUNCTION 2
767 #define ZEND_OVERLOADED_FUNCTION 3
768 #define ZEND_EVAL_CODE 4
769 #define ZEND_OVERLOADED_FUNCTION_TEMPORARY 5
573b460 andigutmans Zend Library
andigutmans authored
770
62f9eb8 Split ZEND_NAMESPACE into user and internal namespaces. Hope this is
Andrei Zmievski authored
771 #define ZEND_INTERNAL_CLASS 1
772 #define ZEND_USER_CLASS 2
573b460 andigutmans Zend Library
andigutmans authored
773
774 #define ZEND_EVAL (1<<0)
775 #define ZEND_INCLUDE (1<<1)
9cc7044 andigutmans - Cleanup old IMPORT stuff
andigutmans authored
776 #define ZEND_INCLUDE_ONCE (1<<2)
67b4b3a Zeev Suraski - require() of a dynamic expression now has the standard require() seman...
zsuraski authored
777 #define ZEND_REQUIRE (1<<3)
c06692e Zeev Suraski The patch we promised - redesigned the compilation/execution API:
zsuraski authored
778 #define ZEND_REQUIRE_ONCE (1<<4)
573b460 andigutmans Zend Library
andigutmans authored
779
780 #define ZEND_ISSET (1<<0)
781 #define ZEND_ISEMPTY (1<<1)
782
783 #define ZEND_CT (1<<0)
784 #define ZEND_RT (1<<1)
785
786
58153df Zeev Suraski - Improve the file handle closing code
zsuraski authored
787 #define ZEND_HANDLE_FILENAME 0
788 #define ZEND_HANDLE_FD 1
789 #define ZEND_HANDLE_FP 2
790 #define ZEND_HANDLE_STDIOSTREAM 3
791 #define ZEND_HANDLE_FSTREAM 4
e52aac9 Wez Furlong Implement simple stream support in the ZE scanners.
wez authored
792 #define ZEND_HANDLE_STREAM 5
573b460 andigutmans Zend Library
andigutmans authored
793
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
794 #define ZEND_FETCH_STANDARD 0
cccd244 Zeev Suraski Get rid of AiCount completely
zsuraski authored
795 #define ZEND_FETCH_ADD_LOCK 1
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
796
741b816 Zeev Suraski * Support getThis() for internal functions.
zsuraski authored
797 #define ZEND_MEMBER_FUNC_CALL 1<<0
798
8d90825 andigutmans - Allow passing references which are returned from functions and new
andigutmans authored
799 #define ZEND_ARG_SEND_BY_REF (1<<0)
800 #define ZEND_ARG_COMPILE_TIME_BOUND (1<<1)
6ec1acb Zeev Suraski Phase 3:
zsuraski authored
801
59d5462 andigutmans - Stop using the locking mechanism and start using refcount.
andigutmans authored
802 #define AI_USE_PTR(ai) \
803 if ((ai).ptr_ptr) { \
804 (ai).ptr = *((ai).ptr_ptr); \
805 (ai).ptr_ptr = &((ai).ptr); \
806 } else { \
807 (ai).ptr = NULL; \
808 }
809
6d988ec andigutmans - Add support for BYREF_FORCE_REST
andigutmans authored
810 /* Lost In Stupid Parentheses */
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
811 #define ARG_SHOULD_BE_SENT_BY_REF(zf, arg_num) \
812 ( \
813 zf \
814 && ((zend_function *) zf)->common.arg_info \
815 && \
816 ( \
817 ( \
818 arg_num<=((zend_function *) zf)->common.num_args \
819 && ((zend_function *) zf)->common.arg_info[arg_num-1].pass_by_reference \
820 ) \
821 || ( \
822 arg_num>((zend_function *) zf)->common.num_args \
823 && ((zend_function *) zf)->common.pass_rest_by_reference \
824 ) \
825 ) \
6d988ec andigutmans - Add support for BYREF_FORCE_REST
andigutmans authored
826 )
827
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
828
ced9cee Zeev Suraski - Implement return by reference:
zsuraski authored
829 #define ZEND_RETURN_VAL 0
830 #define ZEND_RETURN_REF 1
831
3a42bab Zeev Suraski Fix behavior of return-by-reference functions. Remove erroneous warning...
zsuraski authored
832
833 #define ZEND_RETURNS_FUNCTION 1<<0
834
ad115d2 Zeev Suraski Fix require()
zsuraski authored
835 END_EXTERN_C()
836
d8651c8 Stanislav Malyshev Support for __get, __set and __call in classes.
smalyshev authored
837 #define ZEND_CLONE_FUNC_NAME "__clone"
838 #define ZEND_CONSTRUCTOR_FUNC_NAME "__construct"
839 #define ZEND_DESTRUCTOR_FUNC_NAME "__destruct"
840 #define ZEND_GET_FUNC_NAME "__get"
841 #define ZEND_SET_FUNC_NAME "__set"
842 #define ZEND_CALL_FUNC_NAME "__call"
5f0433d MFB: Enforce protocol on magic methods/functions
Marcus Boerger authored
843 #define ZEND_AUTOLOAD_FUNC_NAME "__autoload"
d8651c8 Stanislav Malyshev Support for __get, __set and __call in classes.
smalyshev authored
844
a617217 Replace macros which begin with an underscore through an appropiately
Sascha Schumann authored
845 #endif /* ZEND_COMPILE_H */
333406b - Added some missing CVS $Id$ tags, headers and footers.
foobar authored
846
847 /*
848 * Local variables:
849 * tab-width: 4
850 * c-basic-offset: 4
851 * indent-tabs-mode: t
852 * End:
853 */
Something went wrong with that request. Please try again.