Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 714 lines (536 sloc) 23.103 kb
573b460 andigutmans Zend Library
andigutmans authored
1 /*
2 +----------------------------------------------------------------------+
3 | Zend Engine |
4 +----------------------------------------------------------------------+
62dc854 Happy New Year.
Sebastian Bergmann authored
5 | Copyright (c) 1998-2002 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 |
9 | available at through the world-wide-web at |
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
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_COMPILE_H
22 #define ZEND_COMPILE_H
573b460 andigutmans Zend Library
andigutmans authored
23
24 #include "zend.h"
fa76f0c Zeev Suraski Compile fix
zsuraski authored
25
009025e * header file cleanup
Stig S. Bakken authored
26 #ifdef HAVE_STDARG_H
27 # include <stdarg.h>
fa76f0c Zeev Suraski Compile fix
zsuraski authored
28 #endif
29
573b460 andigutmans Zend Library
andigutmans authored
30 #include "zend_llist.h"
31
32 #define DEBUG_ZEND 0
fcaf734 andigutmans - Don't support interactive mode when thread safe.
andigutmans authored
33
573b460 andigutmans Zend Library
andigutmans authored
34 #define FREE_PNODE(znode) zval_dtor(&znode->u.constant);
2eabb14 andigutmans - Merge the NAMESPACES_BRANCH. It wasn't a good idea to have a branch wh...
andigutmans authored
35 #define FREE_OP(Ts, op, should_free) if (should_free) zval_dtor(&Ts[(op)->u.var].tmp_var);
573b460 andigutmans Zend Library
andigutmans authored
36
1ccf940 andigutmans - Move SET_UNUSED() to header
andigutmans authored
37 #define SET_UNUSED(op) (op).op_type = IS_UNUSED
573b460 andigutmans Zend Library
andigutmans authored
38
85b4df5 Zeev Suraski Improved interactive mode - it is now available in all builds, without a...
zsuraski authored
39 #define INC_BPC(op_array) if (CG(interactive)) { ((op_array)->backpatch_count++); }
40 #define DEC_BPC(op_array) if (CG(interactive)) { ((op_array)->backpatch_count--); }
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
41 #define HANDLE_INTERACTIVE() if (CG(interactive)) { execute_new_code(TSRMLS_C); }
573b460 andigutmans Zend Library
andigutmans authored
42
43 typedef struct _zend_op_array zend_op_array;
44
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
45 typedef struct _znode {
573b460 andigutmans Zend Library
andigutmans authored
46 int op_type;
560606d andigutmans - Get rid of warning and C++ comments
andigutmans authored
47 zend_llist *throw_list; /* Try and save this space later on */
573b460 andigutmans Zend Library
andigutmans authored
48 union {
49 zval constant;
50
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
51 zend_uint var;
232b904 Zeev Suraski Clean up last/size definitions
zsuraski authored
52 zend_uint opline_num; /* Needs to be signed */
573b460 andigutmans Zend Library
andigutmans authored
53 zend_op_array *op_array;
26578c3 andigutmans - Initial support for nested class definitions
andigutmans authored
54 zend_class_entry *previously_active_class_entry; /* Used at compile-time */
573b460 andigutmans Zend Library
andigutmans authored
55 struct {
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
56 zend_uint var; /* dummy */
57 zend_uint type;
573b460 andigutmans Zend Library
andigutmans authored
58 } EA;
59 } u;
60 } znode;
61
62
63 typedef struct _zend_op {
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
64 zend_uchar opcode;
573b460 andigutmans Zend Library
andigutmans authored
65 znode result;
66 znode op1;
67 znode op2;
39a7f4c Zeev Suraski This patch is a go. Not fully optimized yet, but working properly.
zsuraski authored
68 ulong extended_value;
573b460 andigutmans Zend Library
andigutmans authored
69 uint lineno;
70 } zend_op;
71
72
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
73 typedef struct _zend_brk_cont_element {
573b460 andigutmans Zend Library
andigutmans authored
74 int cont;
75 int brk;
76 int parent;
77 } zend_brk_cont_element;
78
79
80 struct _zend_op_array {
d1eea3d andigutmans - Fix bug in nested try/catch's
andigutmans authored
81 zend_uchar type; /* MUST be the first element of this struct! */
573b460 andigutmans Zend Library
andigutmans authored
82
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
83 zend_uchar *arg_types; /* MUST be the second element of this struct! */
d1eea3d andigutmans - Fix bug in nested try/catch's
andigutmans authored
84 char *function_name; /* MUST be the third element of this struct! */
85 zend_class_entry *scope; /* MUST be the fourth element of this struct! */
573b460 andigutmans Zend Library
andigutmans authored
86
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
87 zend_uint *refcount;
573b460 andigutmans Zend Library
andigutmans authored
88
89 zend_op *opcodes;
232b904 Zeev Suraski Clean up last/size definitions
zsuraski authored
90 zend_uint last, size;
573b460 andigutmans Zend Library
andigutmans authored
91
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
92 zend_uint T;
573b460 andigutmans Zend Library
andigutmans authored
93
94 zend_brk_cont_element *brk_cont_array;
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
95 zend_uint last_brk_cont;
96 zend_uint current_brk_cont;
573b460 andigutmans Zend Library
andigutmans authored
97
98 /* static variables support */
99 HashTable *static_variables;
100
85b4df5 Zeev Suraski Improved interactive mode - it is now available in all builds, without a...
zsuraski authored
101 zend_op *start_op;
573b460 andigutmans Zend Library
andigutmans authored
102 int backpatch_count;
85b4df5 Zeev Suraski Improved interactive mode - it is now available in all builds, without a...
zsuraski authored
103
ced9cee Zeev Suraski - Implement return by reference:
zsuraski authored
104 zend_bool return_reference;
42d1529 Zeev Suraski Fix possible bug with extension dtors being called without the ctors bei...
zsuraski authored
105 zend_bool done_pass_two;
0ce019f andigutmans - Fix issues with $this when using it by itself without indirection such...
andigutmans authored
106 zend_bool uses_this;
573b460 andigutmans Zend Library
andigutmans authored
107
c06692e Zeev Suraski The patch we promised - redesigned the compilation/execution API:
zsuraski authored
108 char *filename;
109
b5f5e9a andigutmans - Optimize the execute stack a bit.
andigutmans authored
110 void *reserved[ZEND_MAX_RESERVED_RESOURCES];
573b460 andigutmans Zend Library
andigutmans authored
111 };
112
113
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
114 typedef struct _zend_internal_function {
d1eea3d andigutmans - Fix bug in nested try/catch's
andigutmans authored
115 zend_uchar type; /* MUST be the first element of this struct! */
573b460 andigutmans Zend Library
andigutmans authored
116
d1eea3d andigutmans - Fix bug in nested try/catch's
andigutmans authored
117 zend_uchar *arg_types; /* MUST be the second element of this struct! */
118 char *function_name; /* MUST be the third element of this struct! */
119 zend_class_entry *scope; /* MUST be the fourth element of this struct! */
573b460 andigutmans Zend Library
andigutmans authored
120
121 void (*handler)(INTERNAL_FUNCTION_PARAMETERS);
122 } zend_internal_function;
123
124
e663d85 Zeev Suraski Fix object overloading support
zsuraski authored
125 typedef struct _zend_overloaded_function {
d1eea3d andigutmans - Fix bug in nested try/catch's
andigutmans authored
126 zend_uchar type; /* MUST be the first element of this struct! */
e663d85 Zeev Suraski Fix object overloading support
zsuraski authored
127
d1eea3d andigutmans - Fix bug in nested try/catch's
andigutmans authored
128 zend_uchar *arg_types; /* MUST be the second element of this struct! */
129 char *function_name; /* MUST be the third element of this struct! */
130 zend_class_entry *scope; /* MUST be the fourth element of this struct! */
e663d85 Zeev Suraski Fix object overloading support
zsuraski authored
131
132 zend_uint var;
133 } zend_overloaded_function;
134
135
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
136 typedef union _zend_function {
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
137 zend_uchar type; /* MUST be the first element of this struct! */
d1eea3d andigutmans - Fix bug in nested try/catch's
andigutmans authored
138
573b460 andigutmans Zend Library
andigutmans authored
139 struct {
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
140 zend_uchar type; /* never used */
141 zend_uchar *arg_types;
7f35cfd Zeev Suraski *** empty log message ***
zsuraski authored
142 char *function_name;
d1eea3d andigutmans - Fix bug in nested try/catch's
andigutmans authored
143 zend_class_entry *scope;
573b460 andigutmans Zend Library
andigutmans authored
144 } common;
145
146 zend_op_array op_array;
147 zend_internal_function internal_function;
e663d85 Zeev Suraski Fix object overloading support
zsuraski authored
148 zend_overloaded_function overloaded_function;
573b460 andigutmans Zend Library
andigutmans authored
149 } zend_function;
150
151
9cb2cf1 Zeev Suraski Optimize allocations into uninitialized_zval assignments
zsuraski authored
152 typedef struct _zend_function_state {
573b460 andigutmans Zend Library
andigutmans authored
153 HashTable *function_symbol_table;
154 zend_function *function;
b5f5e9a andigutmans - Optimize the execute stack a bit.
andigutmans authored
155 void *reserved[ZEND_MAX_RESERVED_RESOURCES];
573b460 andigutmans Zend Library
andigutmans authored
156 } zend_function_state;
157
158
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
159 typedef struct _zend_switch_entry {
573b460 andigutmans Zend Library
andigutmans authored
160 znode cond;
161 int default_case;
162 int control_var;
163 } zend_switch_entry;
164
165
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
166 typedef struct _list_llist_element {
573b460 andigutmans Zend Library
andigutmans authored
167 znode var;
168 zend_llist dimensions;
169 znode value;
170 } list_llist_element;
171
172
39f9487 andigutmans -Tiny patches
andigutmans authored
173 typedef struct _zend_file_handle {
61379fe andigutmans - Another zend_uchar
andigutmans authored
174 zend_uchar type;
573b460 andigutmans Zend Library
andigutmans authored
175 char *filename;
5463dd5 andigutmans - Add use support (behaves like require, but will not use the same file ...
andigutmans authored
176 char *opened_path;
573b460 andigutmans Zend Library
andigutmans authored
177 union {
178 int fd;
179 FILE *fp;
180 } handle;
9baad80 Zeev Suraski - Break the zend->PHP dependency introduced by the .php extension for us...
zsuraski authored
181 zend_bool free_filename;
573b460 andigutmans Zend Library
andigutmans authored
182 } zend_file_handle;
183
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
184 union _temp_variable;
185
186 typedef struct _zend_execute_data {
187 struct _zend_op *opline;
188 zend_function_state function_state;
189 zend_function *fbc; /* Function Being Called */
190 zend_function *fbc_constructor;
41e3f4f andigutmans - Fix problem with debug_backtrace() reported by Stig. We weren't report...
andigutmans authored
191 zend_op_array *op_array;
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
192 zval *object;
193 union _temp_variable *Ts;
194 zend_bool original_in_execution;
195 zend_class_entry *calling_scope;
196 struct _zend_execute_data *prev_execute_data;
197 } zend_execute_data;
573b460 andigutmans Zend Library
andigutmans authored
198
b66c89c andigutmans - More debug backtrace work. It still doesn't work very well...
andigutmans authored
199 #define EX(element) execute_data.element
200
573b460 andigutmans Zend Library
andigutmans authored
201
202 #define IS_CONST (1<<0)
203 #define IS_TMP_VAR (1<<1)
204 #define IS_VAR (1<<2)
205 #define IS_UNUSED (1<<3) /* Unused variable */
206
207
208 #define EXT_TYPE_UNUSED (1<<0)
209
df74f1d Add optional support for C0x inline semantics.
Sascha Schumann authored
210 #include "zend_globals.h"
211
ad115d2 Zeev Suraski Fix require()
zsuraski authored
212 BEGIN_EXTERN_C()
213
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
214 void init_compiler(TSRMLS_D);
215 void shutdown_compiler(TSRMLS_D);
216 void zend_init_compiler_data_structures(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
217
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
218 extern ZEND_API zend_op_array *(*zend_compile_file)(zend_file_handle *file_handle, int type TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
219
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
220 void zend_activate(TSRMLS_D);
221 void zend_deactivate(TSRMLS_D);
d76cf1d Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
222 void zend_activate_modules(TSRMLS_D);
b577038 Zeev Suraski Avoid TSRMLS_FETCH()'s (still lots of work left)
zsuraski authored
223 void zend_deactivate_modules(TSRMLS_D);
dc0e663 Zeev Suraski Allow module startup to be separate from the compiler/executor startup
zsuraski authored
224
ed06a70 Zeev Suraski * Centralized shutdown
zsuraski authored
225
1fd542f Export lex_scan(). Both the PHPDoc and tokenizer extension need this. I ...
Sebastian Bergmann authored
226 ZEND_API int lex_scan(zval *zendlval TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
227 void startup_scanner(TSRMLS_D);
228 void shutdown_scanner(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
229
4187439 Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
230 ZEND_API char *zend_set_compiled_filename(char *new_compiled_filename TSRMLS_DC);
231 ZEND_API void zend_restore_compiled_filename(char *original_compiled_filename TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
232 ZEND_API char *zend_get_compiled_filename(TSRMLS_D);
233 ZEND_API int zend_get_compiled_lineno(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
234
1aa2c5c Zeev Suraski Ok, call me crazy, because I probably am.
zsuraski authored
235 #ifdef ZTS
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
236 const char *zend_get_zendtext(TSRMLS_D);
237 int zend_get_zendleng(TSRMLS_D);
1aa2c5c Zeev Suraski Ok, call me crazy, because I probably am.
zsuraski authored
238 #endif
239
573b460 andigutmans Zend Library
andigutmans authored
240
241 /* parser-driven code generators */
51e797f some type cleanup work
Harald Radi authored
242 void zend_do_binary_op(zend_uchar op, znode *result, znode *op1, znode *op2 TSRMLS_DC);
243 void zend_do_unary_op(zend_uchar op, znode *result, znode *op1 TSRMLS_DC);
244 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
245 void zend_do_assign(znode *result, znode *variable, znode *value TSRMLS_DC);
246 void zend_do_assign_ref(znode *result, znode *lvar, znode *rvar TSRMLS_DC);
247 void fetch_simple_variable(znode *result, znode *varname, int bp TSRMLS_DC);
51e797f some type cleanup work
Harald Radi authored
248 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
249 void zend_do_indirect_references(znode *result, znode *num_references, znode *variable TSRMLS_DC);
250 void zend_do_fetch_global_or_static_variable(znode *varname, znode *static_assignment, int fetch_type TSRMLS_DC);
251
252 void fetch_array_begin(znode *result, znode *varname, znode *first_dim TSRMLS_DC);
253 void fetch_array_dim(znode *result, znode *parent, znode *dim TSRMLS_DC);
254 void fetch_string_offset(znode *result, znode *parent, znode *offset TSRMLS_DC);
d2da63f andigutmans - Support static members. The following script works:
andigutmans authored
255 void zend_do_fetch_static_member(znode *class TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
256 void zend_do_print(znode *result, znode *arg TSRMLS_DC);
257 void zend_do_echo(znode *arg TSRMLS_DC);
8802964 * fix some casts
Sascha Schumann authored
258 typedef int (*unary_op_type)(zval *, zval *);
259 ZEND_API unary_op_type get_unary_op(int opcode);
573b460 andigutmans Zend Library
andigutmans authored
260 ZEND_API void *get_binary_op(int opcode);
261
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
262 void zend_do_while_cond(znode *expr, znode *close_bracket_token TSRMLS_DC);
263 void zend_do_while_end(znode *while_token, znode *close_bracket_token TSRMLS_DC);
264 void zend_do_do_while_begin(TSRMLS_D);
265 void zend_do_do_while_end(znode *do_token, znode *expr_open_bracket, znode *expr TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
266
267
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
268 void zend_do_if_cond(znode *cond, znode *closing_bracket_token TSRMLS_DC);
269 void zend_do_if_after_statement(znode *closing_bracket_token, unsigned char initialize TSRMLS_DC);
270 void zend_do_if_end(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
271
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
272 void zend_do_for_cond(znode *expr, znode *second_semicolon_token TSRMLS_DC);
273 void zend_do_for_before_statement(znode *cond_start, znode *second_semicolon_token TSRMLS_DC);
274 void zend_do_for_end(znode *second_semicolon_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
275
51e797f some type cleanup work
Harald Radi authored
276 void zend_do_pre_incdec(znode *result, znode *op1, zend_uchar op TSRMLS_DC);
277 void zend_do_post_incdec(znode *result, znode *op1, zend_uchar op TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
278
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
279 void zend_do_begin_variable_parse(TSRMLS_D);
280 void zend_do_end_variable_parse(int type, int arg_offset TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
281
ac7ed46 andigutmans - Start adding parsed variable checks.
andigutmans authored
282 void zend_check_writable_variable(znode *variable);
283
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
284 void zend_do_free(znode *op1 TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
285
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
286 void zend_do_init_string(znode *result TSRMLS_DC);
287 void zend_do_add_char(znode *result, znode *op1, znode *op2 TSRMLS_DC);
288 void zend_do_add_string(znode *result, znode *op1, znode *op2 TSRMLS_DC);
289 void zend_do_add_variable(znode *result, znode *op1, znode *op2 TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
290
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
291 void zend_do_begin_function_declaration(znode *function_token, znode *function_name, int is_method, int return_reference TSRMLS_DC);
292 void zend_do_end_function_declaration(znode *function_token TSRMLS_DC);
51e797f some type cleanup work
Harald Radi authored
293 void zend_do_receive_arg(zend_uchar op, znode *var, znode *offset, znode *initialization, zend_uchar pass_type TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
294 int zend_do_begin_function_call(znode *function_name TSRMLS_DC);
2ce4b47 andigutmans - Initial support for _clone()
andigutmans authored
295 void zend_do_begin_method_call(znode *left_bracket TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
296 void zend_do_begin_dynamic_function_call(znode *function_name TSRMLS_DC);
26578c3 andigutmans - Initial support for nested class definitions
andigutmans authored
297 void do_fetch_class(znode *result, znode *class_entry, znode *class_name TSRMLS_DC);
ae1a702 andigutmans - Fix some case insensitivity stuff in respect to classes
andigutmans authored
298 void do_fetch_class_name(znode *result, znode *class_entry, znode *class_name, zend_bool case_sensitive TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
299 void zend_do_begin_class_member_function_call(znode *class_name, znode *function_name TSRMLS_DC);
300 void zend_do_end_function_call(znode *function_name, znode *result, znode *argument_list, int is_method, int is_dynamic_fcall TSRMLS_DC);
301 void zend_do_return(znode *expr, int do_end_vparse TSRMLS_DC);
29f5dbe andigutmans - Initial support for exceptions.
andigutmans authored
302
6197021 andigutmans - Make it compile in thread-safe mode.
andigutmans authored
303 void zend_do_try(znode *try_token TSRMLS_DC);
21b04ff andigutmans @ Allow a series of consecutive catch() statements (Andi, Zend Engine)
andigutmans authored
304 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
305 void zend_do_end_catch(znode *try_token TSRMLS_DC);
306 void zend_do_throw(znode *expr TSRMLS_DC);
29f5dbe andigutmans - Initial support for exceptions.
andigutmans authored
307
ef5b7e2 Zeev Suraski Generate better warnings for class/function redefinitions
zsuraski authored
308 ZEND_API int do_bind_function_or_class(zend_op *opline, HashTable *function_table, HashTable *class_table, int compile_time);
f1a9920 Zeev Suraski Maintain consistency
zsuraski authored
309 void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent_ce);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
310 void zend_do_early_binding(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
311
51e797f some type cleanup work
Harald Radi authored
312 void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
313
314
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
315 void zend_do_boolean_or_begin(znode *expr1, znode *op_token TSRMLS_DC);
316 void zend_do_boolean_or_end(znode *result, znode *expr1, znode *expr2, znode *op_token TSRMLS_DC);
317 void zend_do_boolean_and_begin(znode *expr1, znode *op_token TSRMLS_DC);
318 void zend_do_boolean_and_end(znode *result, znode *expr1, znode *expr2, znode *op_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
319
51e797f some type cleanup work
Harald Radi authored
320 void zend_do_brk_cont(zend_uchar op, znode *expr TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
321
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
322 void zend_do_switch_cond(znode *cond TSRMLS_DC);
323 void zend_do_switch_end(znode *case_list TSRMLS_DC);
324 void zend_do_case_before_statement(znode *case_list, znode *case_token, znode *case_expr TSRMLS_DC);
325 void zend_do_case_after_statement(znode *result, znode *case_token TSRMLS_DC);
326 void zend_do_default_before_statement(znode *case_list, znode *default_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
327
74efc41 andigutmans - Make classes have scope and function/constant lookups default to the c...
andigutmans authored
328 void zend_do_begin_class_declaration(znode *class_token, znode *class_name, znode *parent_class_name TSRMLS_DC);
26578c3 andigutmans - Initial support for nested class definitions
andigutmans authored
329 void zend_do_end_class_declaration(znode *class_token TSRMLS_DC);
7cd6ccc andigutmans - Support static $var = 0; style initialization of static class
andigutmans authored
330 void zend_do_declare_property(znode *var_name, znode *value, int declaration_type TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
331
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
332 void zend_do_fetch_property(znode *result, znode *object, znode *property TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
333
334
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
335 void zend_do_push_object(znode *object TSRMLS_DC);
336 void zend_do_pop_object(znode *object TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
337
338
a332f82 andigutmans - Support instantiation of nested class. The following script now should
andigutmans authored
339 void zend_do_begin_new_object(znode *new_token, znode *class_type TSRMLS_DC);
340 void zend_do_end_new_object(znode *result, znode *new_token, znode *argument_list TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
341
e858d27 andigutmans - Initial support for class constants. There are still a few semantic
andigutmans authored
342 void zend_do_fetch_constant(znode *result, znode *constant_container, znode *constant_name, int mode TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
343
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
344 void zend_do_shell_exec(znode *result, znode *cmd TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
345
51e797f some type cleanup work
Harald Radi authored
346 void zend_do_init_array(znode *result, znode *expr, znode *offset, zend_bool is_ref TSRMLS_DC);
347 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
348 void zend_do_add_static_array_element(znode *result, znode *offset, znode *expr);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
349 void zend_do_list_init(TSRMLS_D);
350 void zend_do_list_end(znode *result, znode *expr TSRMLS_DC);
351 void zend_do_add_list_element(znode *element TSRMLS_DC);
352 void zend_do_new_list_begin(TSRMLS_D);
353 void zend_do_new_list_end(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
354
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
355 void zend_do_cast(znode *result, znode *expr, int type TSRMLS_DC);
356 void zend_do_include_or_eval(int type, znode *result, znode *op1 TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
357
7b68f51 andigutmans - Nuke delete(). It was a big mistake to introduce it and I finally
andigutmans authored
358 void zend_do_unset(znode *variable TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
359 void zend_do_isset_or_isempty(int type, znode *result, znode *variable TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
360
82c72f2 @- Adding 'is' operator that can be used to check the type of a variable...
Andrei Zmievski authored
361 void zend_do_is_type(znode *result, znode *expr, znode *class, int type TSRMLS_DC);
362
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
363 void zend_do_foreach_begin(znode *foreach_token, znode *array, znode *open_brackets_token, znode *as_token, int variable TSRMLS_DC);
364 void zend_do_foreach_cont(znode *value, znode *key, znode *as_token TSRMLS_DC);
365 void zend_do_foreach_end(znode *foreach_token, znode *open_brackets_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
366
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
367 void zend_do_declare_begin(TSRMLS_D);
368 void zend_do_declare_stmt(znode *var, znode *val TSRMLS_DC);
369 void zend_do_declare_end(TSRMLS_D);
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
370
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
371 void zend_do_end_heredoc(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
372
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
373 void zend_do_exit(znode *result, znode *message TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
374
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
375 void zend_do_begin_silence(znode *strudel_token TSRMLS_DC);
376 void zend_do_end_silence(znode *strudel_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
377
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
378 void zend_do_begin_qm_op(znode *cond, znode *qm_token TSRMLS_DC);
379 void zend_do_qm_true(znode *true_value, znode *qm_token, znode *colon_token TSRMLS_DC);
380 void zend_do_qm_false(znode *result, znode *false_value, znode *qm_token, znode *colon_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
381
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
382 void zend_do_extended_info(TSRMLS_D);
383 void zend_do_extended_fcall_begin(TSRMLS_D);
384 void zend_do_extended_fcall_end(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
385
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
386 void zend_do_ticks(TSRMLS_D);
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
387
b90d80b andigutmans - Initial patch to support importing from class scopes (for Stig).
andigutmans authored
388 void zend_do_begin_import(TSRMLS_D);
389 void zend_do_import(int type, znode *what TSRMLS_DC);
390 void zend_do_end_import(znode *import_from TSRMLS_DC);
391
727398b andigutmans Add to the API
andigutmans authored
392 ZEND_API void function_add_ref(zend_function *function);
0b7a9ce Zeev Suraski - Fix Win32 compilation (Use winsock2.h from now on)
zsuraski authored
393
7c4a083 Zeev Suraski Various thread safety fixes and DLL updates
zsuraski authored
394 #define INITIAL_OP_ARRAY_SIZE 64
395
573b460 andigutmans Zend Library
andigutmans authored
396
7b0d92d Zeev Suraski Unify the names of these last 3 files...
zsuraski authored
397 /* helper functions in zend_language_scanner.l */
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
398 ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSRMLS_DC);
399 ZEND_API zend_op_array *compile_string(zval *source_string, char *filename TSRMLS_DC);
400 ZEND_API zend_op_array *compile_filename(int type, zval *filename TSRMLS_DC);
819ea51 Zeev Suraski MFZE1
zsuraski authored
401 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
402 ZEND_API int open_file_for_scanning(zend_file_handle *file_handle TSRMLS_DC);
51e797f some type cleanup work
Harald Radi authored
403 ZEND_API void init_op_array(zend_op_array *op_array, zend_uchar type, int initial_ops_size TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
404 ZEND_API void destroy_op_array(zend_op_array *op_array);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
405 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
406 ZEND_API void zend_file_handle_dtor(zend_file_handle *fh);
573b460 andigutmans Zend Library
andigutmans authored
407
62114c1 Zeev Suraski Destructors no longer return ints, the low level problem it was intended...
zsuraski authored
408 ZEND_API void destroy_zend_function(zend_function *function);
92dd5e6 Stanislav Malyshev - make class tables contain class_entry *, not class_entry
smalyshev authored
409 ZEND_API void destroy_zend_class(zend_class_entry **pce);
c8c629b andigutmans - Fix bug introduced with latest class hash table change.
andigutmans authored
410 void zend_class_add_ref(zend_class_entry **ce);
7c4a083 Zeev Suraski Various thread safety fixes and DLL updates
zsuraski authored
411
62114c1 Zeev Suraski Destructors no longer return ints, the low level problem it was intended...
zsuraski authored
412 #define ZEND_FUNCTION_DTOR (void (*)(void *)) destroy_zend_function
413 #define ZEND_CLASS_DTOR (void (*)(void *)) destroy_zend_class
81d901b Zeev Suraski Step 1 in nuking the garbage collector:
zsuraski authored
414
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
415 zend_op *get_next_op(zend_op_array *op_array TSRMLS_DC);
416 void init_op(zend_op *op TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
417 int get_next_op_number(zend_op_array *op_array);
d76cf1d Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
418 int print_class(zend_class_entry *class_entry TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
419 void print_op_array(zend_op_array *op_array, int optimizations);
d76cf1d Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
420 int pass_two(zend_op_array *op_array TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
421 zend_brk_cont_element *get_next_brk_cont_element(zend_op_array *op_array);
4187439 Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
422 ZEND_API zend_bool zend_is_compiling(TSRMLS_D);
b577038 Zeev Suraski Avoid TSRMLS_FETCH()'s (still lots of work left)
zsuraski authored
423 ZEND_API char *zend_make_compiled_string_description(char *name TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
424
9d11db1 andigutmans - Merge new $_GET, $_POST etc. patch from Engine 1 tree
andigutmans authored
425 int zend_register_auto_global(char *name, uint name_len TSRMLS_DC);
426
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
427 int zendlex(znode *zendlval TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
428
429 #define ZEND_NOP 0
430
431 #define ZEND_ADD 1
432 #define ZEND_SUB 2
433 #define ZEND_MUL 3
434 #define ZEND_DIV 4
435 #define ZEND_MOD 5
436 #define ZEND_SL 6
437 #define ZEND_SR 7
438 #define ZEND_CONCAT 8
439 #define ZEND_BW_OR 9
440 #define ZEND_BW_AND 10
441 #define ZEND_BW_XOR 11
442 #define ZEND_BW_NOT 12
443 #define ZEND_BOOL_NOT 13
444 #define ZEND_BOOL_XOR 14
98f0254 andigutmans - Move IS_IDENTICAL next to IS_EQUAL
andigutmans authored
445 #define ZEND_IS_IDENTICAL 15
521c8af Added !== (is not identical) operator.
Torben Wilson authored
446 #define ZEND_IS_NOT_IDENTICAL 16
447 #define ZEND_IS_EQUAL 17
448 #define ZEND_IS_NOT_EQUAL 18
449 #define ZEND_IS_SMALLER 19
450 #define ZEND_IS_SMALLER_OR_EQUAL 20
451 #define ZEND_CAST 21
452 #define ZEND_QM_ASSIGN 22
453
454 #define ZEND_ASSIGN_ADD 23
455 #define ZEND_ASSIGN_SUB 24
456 #define ZEND_ASSIGN_MUL 25
457 #define ZEND_ASSIGN_DIV 26
458 #define ZEND_ASSIGN_MOD 27
459 #define ZEND_ASSIGN_SL 28
460 #define ZEND_ASSIGN_SR 29
461 #define ZEND_ASSIGN_CONCAT 30
462 #define ZEND_ASSIGN_BW_OR 31
463 #define ZEND_ASSIGN_BW_AND 32
464 #define ZEND_ASSIGN_BW_XOR 33
573b460 andigutmans Zend Library
andigutmans authored
465
521c8af Added !== (is not identical) operator.
Torben Wilson authored
466 #define ZEND_PRE_INC 34
467 #define ZEND_PRE_DEC 35
468 #define ZEND_POST_INC 36
469 #define ZEND_POST_DEC 37
470
471 #define ZEND_ASSIGN 38
472 #define ZEND_ASSIGN_REF 39
473
474 #define ZEND_ECHO 40
475 #define ZEND_PRINT 41
476
477 #define ZEND_JMP 42
478 #define ZEND_JMPZ 43
479 #define ZEND_JMPNZ 44
480 #define ZEND_JMPZNZ 45
481 #define ZEND_JMPZ_EX 46
482 #define ZEND_JMPNZ_EX 47
483 #define ZEND_CASE 48
484 #define ZEND_SWITCH_FREE 49
485 #define ZEND_BRK 50
486 #define ZEND_CONT 51
487 #define ZEND_BOOL 52
488
489 #define ZEND_INIT_STRING 53
490 #define ZEND_ADD_CHAR 54
491 #define ZEND_ADD_STRING 55
492 #define ZEND_ADD_VAR 56
493
494 #define ZEND_BEGIN_SILENCE 57
495 #define ZEND_END_SILENCE 58
496
497 #define ZEND_INIT_FCALL_BY_NAME 59
498 #define ZEND_DO_FCALL 60
499 #define ZEND_DO_FCALL_BY_NAME 61
500 #define ZEND_RETURN 62
501
502 #define ZEND_RECV 63
503 #define ZEND_RECV_INIT 64
573b460 andigutmans Zend Library
andigutmans authored
504
521c8af Added !== (is not identical) operator.
Torben Wilson authored
505 #define ZEND_SEND_VAL 65
506 #define ZEND_SEND_VAR 66
507 #define ZEND_SEND_REF 67
573b460 andigutmans Zend Library
andigutmans authored
508
521c8af Added !== (is not identical) operator.
Torben Wilson authored
509 #define ZEND_NEW 68
510 #define ZEND_JMP_NO_CTOR 69
511 #define ZEND_FREE 70
573b460 andigutmans Zend Library
andigutmans authored
512
521c8af Added !== (is not identical) operator.
Torben Wilson authored
513 #define ZEND_INIT_ARRAY 71
514 #define ZEND_ADD_ARRAY_ELEMENT 72
573b460 andigutmans Zend Library
andigutmans authored
515
521c8af Added !== (is not identical) operator.
Torben Wilson authored
516 #define ZEND_INCLUDE_OR_EVAL 73
573b460 andigutmans Zend Library
andigutmans authored
517
521c8af Added !== (is not identical) operator.
Torben Wilson authored
518 #define ZEND_UNSET_VAR 74
519 #define ZEND_UNSET_DIM_OBJ 75
573b460 andigutmans Zend Library
andigutmans authored
520
521c8af Added !== (is not identical) operator.
Torben Wilson authored
521 #define ZEND_FE_RESET 77
522 #define ZEND_FE_FETCH 78
573b460 andigutmans Zend Library
andigutmans authored
523
521c8af Added !== (is not identical) operator.
Torben Wilson authored
524 #define ZEND_EXIT 79
573b460 andigutmans Zend Library
andigutmans authored
525
526
7fa17e8 andigutmans - Put in the infrastructure for the unset() fix. Right now it has the ol...
andigutmans authored
527 /* the following 18 opcodes are 6 groups of 3 opcodes each, and must
573b460 andigutmans Zend Library
andigutmans authored
528 * remain in that order!
529 */
521c8af Added !== (is not identical) operator.
Torben Wilson authored
530 #define ZEND_FETCH_R 80
531 #define ZEND_FETCH_DIM_R 81
532 #define ZEND_FETCH_OBJ_R 82
533 #define ZEND_FETCH_W 83
534 #define ZEND_FETCH_DIM_W 84
535 #define ZEND_FETCH_OBJ_W 85
536 #define ZEND_FETCH_RW 86
537 #define ZEND_FETCH_DIM_RW 87
538 #define ZEND_FETCH_OBJ_RW 88
539 #define ZEND_FETCH_IS 89
540 #define ZEND_FETCH_DIM_IS 90
541 #define ZEND_FETCH_OBJ_IS 91
542 #define ZEND_FETCH_FUNC_ARG 92
543 #define ZEND_FETCH_DIM_FUNC_ARG 93
544 #define ZEND_FETCH_OBJ_FUNC_ARG 94
545 #define ZEND_FETCH_UNSET 95
546 #define ZEND_FETCH_DIM_UNSET 96
547 #define ZEND_FETCH_OBJ_UNSET 97
548
549 #define ZEND_FETCH_DIM_TMP_VAR 98
550 #define ZEND_FETCH_CONSTANT 99
551
552 #define ZEND_DECLARE_FUNCTION_OR_CLASS 100
553
554 #define ZEND_EXT_STMT 101
555 #define ZEND_EXT_FCALL_BEGIN 102
556 #define ZEND_EXT_FCALL_END 103
557 #define ZEND_EXT_NOP 104
558
559 #define ZEND_TICKS 105
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
560
d0fbddc Zeev Suraski Fix a corruption bug, when erroneously allowing to send non-variables by...
zsuraski authored
561 #define ZEND_SEND_VAR_NO_REF 106
562
29f5dbe andigutmans - Initial support for exceptions.
andigutmans authored
563 #define ZEND_CATCH 107
564 #define ZEND_THROW 108
565
b90d80b andigutmans - Initial patch to support importing from class scopes (for Stig).
andigutmans authored
566 #define ZEND_FETCH_CLASS 109
567
568 #define ZEND_CLONE 110
2ce4b47 andigutmans - Initial support for _clone()
andigutmans authored
569
b90d80b andigutmans - Initial patch to support importing from class scopes (for Stig).
andigutmans authored
570 #define ZEND_INIT_CTOR_CALL 111
571 #define ZEND_INIT_METHOD_CALL 112
572 #define ZEND_INIT_STATIC_METHOD_CALL 113
0ab9d11 andigutmans - Start splitting up different kinds of function calls into different
andigutmans authored
573
b90d80b andigutmans - Initial patch to support importing from class scopes (for Stig).
andigutmans authored
574 #define ZEND_ISSET_ISEMPTY_VAR 114
575 #define ZEND_ISSET_ISEMPTY_DIM_OBJ 115
6203a25 andigutmans - Separate other kinds of function calls too.
andigutmans authored
576
b90d80b andigutmans - Initial patch to support importing from class scopes (for Stig).
andigutmans authored
577 #define ZEND_IMPORT_FUNCTION 116
578 #define ZEND_IMPORT_CLASS 117
579 #define ZEND_IMPORT_CONST 118
e366f5d andigutmans - Fix problem with the objects_destructor called during shutdown. It was
andigutmans authored
580
04ed2b5 Stanislav Malyshev New stuff for objects API:
smalyshev authored
581 #define ZEND_ASSIGN_ADD_OBJ 121
582 #define ZEND_ASSIGN_SUB_OBJ 122
583 #define ZEND_ASSIGN_MUL_OBJ 123
584 #define ZEND_ASSIGN_DIV_OBJ 124
585 #define ZEND_ASSIGN_MOD_OBJ 125
586 #define ZEND_ASSIGN_SL_OBJ 126
587 #define ZEND_ASSIGN_SR_OBJ 127
588 #define ZEND_ASSIGN_CONCAT_OBJ 128
589 #define ZEND_ASSIGN_BW_OR_OBJ 129
590 #define ZEND_ASSIGN_BW_AND_OBJ 130
591 #define ZEND_ASSIGN_BW_XOR_OBJ 131
592
593 #define ZEND_PRE_INC_OBJ 132
594 #define ZEND_PRE_DEC_OBJ 133
595 #define ZEND_POST_INC_OBJ 134
596 #define ZEND_POST_DEC_OBJ 135
597
598 #define ZEND_ASSIGN_OBJ 136
599 #define ZEND_MAKE_VAR 137
82c72f2 @- Adding 'is' operator that can be used to check the type of a variable...
Andrei Zmievski authored
600
601 #define ZEND_IS_TYPE 138
602
573b460 andigutmans Zend Library
andigutmans authored
603 /* end of block */
604
605
606
607
608 /* global/local fetches */
d2da63f andigutmans - Support static members. The following script works:
andigutmans authored
609 #define ZEND_FETCH_GLOBAL 0
610 #define ZEND_FETCH_LOCAL 1
611 #define ZEND_FETCH_STATIC 2
612 #define ZEND_FETCH_STATIC_MEMBER 3
e56fb16 andigutmans - Allow passing of $this as function arguments.
andigutmans authored
613 #define ZEND_FETCH_FROM_THIS 4
573b460 andigutmans Zend Library
andigutmans authored
614
74efc41 andigutmans - Make classes have scope and function/constant lookups default to the c...
andigutmans authored
615 /* class fetches */
616 #define ZEND_FETCH_CLASS_DEFAULT 0
617 #define ZEND_FETCH_CLASS_SELF 1
b3fd2fa andigutmans - Support parent:: again
andigutmans authored
618 #define ZEND_FETCH_CLASS_PARENT 2
619 #define ZEND_FETCH_CLASS_MAIN 3
620
74efc41 andigutmans - Make classes have scope and function/constant lookups default to the c...
andigutmans authored
621
880e7d8 andigutmans - Framework for knowing what kind of variable we just parsed.
andigutmans authored
622 /* variable parsing type (compile-time) */
623 #define ZEND_PARSED_MEMBER (1<<0)
624 #define ZEND_PARSED_METHOD_CALL (1<<1)
625 #define ZEND_PARSED_STATIC_MEMBER (1<<2)
626 #define ZEND_PARSED_FUNCTION_CALL (1<<3)
627 #define ZEND_PARSED_VARIABLE (1<<4)
628
629
5af7770 andigutmans - Sync Engine2 CVS with latest Engine CVS
andigutmans authored
630 /* unset types */
631 #define ZEND_UNSET_REG 0
632
573b460 andigutmans Zend Library
andigutmans authored
633 /* var status for backpatching */
06d04d1 andigutmans - Fix SEND_VAR problem after fetch'ing a variable and not knowing the fe...
andigutmans authored
634 #define BP_VAR_R 0
635 #define BP_VAR_W 1
636 #define BP_VAR_RW 2
637 #define BP_VAR_IS 3
638 #define BP_VAR_NA 4 /* if not applicable */
639 #define BP_VAR_FUNC_ARG 5
7fa17e8 andigutmans - Put in the infrastructure for the unset() fix. Right now it has the ol...
andigutmans authored
640 #define BP_VAR_UNSET 6
573b460 andigutmans Zend Library
andigutmans authored
641
642
643 #define ZEND_INTERNAL_FUNCTION 1
644 #define ZEND_USER_FUNCTION 2
645 #define ZEND_OVERLOADED_FUNCTION 3
2493f68 Zeev Suraski * Fix debugger+interactive mode bug
zsuraski authored
646 #define ZEND_EVAL_CODE 4
573b460 andigutmans Zend Library
andigutmans authored
647
648 #define ZEND_INTERNAL_CLASS 1
649 #define ZEND_USER_CLASS 2
650
651 #define ZEND_EVAL (1<<0)
652 #define ZEND_INCLUDE (1<<1)
9cc7044 andigutmans - Cleanup old IMPORT stuff
andigutmans authored
653 #define ZEND_INCLUDE_ONCE (1<<2)
67b4b3a Zeev Suraski - require() of a dynamic expression now has the standard require() seman...
zsuraski authored
654 #define ZEND_REQUIRE (1<<3)
c06692e Zeev Suraski The patch we promised - redesigned the compilation/execution API:
zsuraski authored
655 #define ZEND_REQUIRE_ONCE (1<<4)
573b460 andigutmans Zend Library
andigutmans authored
656
657 #define ZEND_ISSET (1<<0)
658 #define ZEND_ISEMPTY (1<<1)
659
660 #define ZEND_CT (1<<0)
661 #define ZEND_RT (1<<1)
662
663
58153df Zeev Suraski - Improve the file handle closing code
zsuraski authored
664 #define ZEND_HANDLE_FILENAME 0
665 #define ZEND_HANDLE_FD 1
666 #define ZEND_HANDLE_FP 2
667 #define ZEND_HANDLE_STDIOSTREAM 3
668 #define ZEND_HANDLE_FSTREAM 4
573b460 andigutmans Zend Library
andigutmans authored
669
d894cf4 Zeev Suraski Support definition of classes that are derived from classes that are def...
zsuraski authored
670 #define ZEND_DECLARE_CLASS 1
671 #define ZEND_DECLARE_FUNCTION 2
672 #define ZEND_DECLARE_INHERITED_CLASS 3
b0bfa45 Zeev Suraski * Fix all hash checks that checked Bucket.arKey for NULL, when it was ch...
zsuraski authored
673
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
674 #define ZEND_FETCH_STANDARD 0
cccd244 Zeev Suraski Get rid of AiCount completely
zsuraski authored
675 #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
676
741b816 Zeev Suraski * Support getThis() for internal functions.
zsuraski authored
677 #define ZEND_MEMBER_FUNC_CALL 1<<0
678
8d90825 andigutmans - Allow passing references which are returned from functions and new
andigutmans authored
679 #define ZEND_ARG_SEND_BY_REF (1<<0)
680 #define ZEND_ARG_COMPILE_TIME_BOUND (1<<1)
6ec1acb Zeev Suraski Phase 3:
zsuraski authored
681
59d5462 andigutmans - Stop using the locking mechanism and start using refcount.
andigutmans authored
682 #define AI_USE_PTR(ai) \
683 if ((ai).ptr_ptr) { \
684 (ai).ptr = *((ai).ptr_ptr); \
685 (ai).ptr_ptr = &((ai).ptr); \
686 } else { \
687 (ai).ptr = NULL; \
688 }
689
6d988ec andigutmans - Add support for BYREF_FORCE_REST
andigutmans authored
690 /* Lost In Stupid Parentheses */
691 #define ARG_SHOULD_BE_SENT_BY_REF(offset, conduct_check, arg_types) \
692 ( \
693 conduct_check \
694 && arg_types \
695 && \
696 ( \
697 ( \
698 offset<=arg_types[0] \
699 && arg_types[offset]==BYREF_FORCE \
700 ) \
701 || ( \
702 offset>=arg_types[0] \
703 && arg_types[arg_types[0]]==BYREF_FORCE_REST \
704 ) \
705 ) \
706 )
707
ced9cee Zeev Suraski - Implement return by reference:
zsuraski authored
708 #define ZEND_RETURN_VAL 0
709 #define ZEND_RETURN_REF 1
710
ad115d2 Zeev Suraski Fix require()
zsuraski authored
711 END_EXTERN_C()
712
a617217 Replace macros which begin with an underscore through an appropiately
Sascha Schumann authored
713 #endif /* ZEND_COMPILE_H */
Something went wrong with that request. Please try again.