Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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