Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 691 lines (525 sloc) 24.393 kb
573b460 andigutmans Zend Library
andigutmans authored
1 /*
2 +----------------------------------------------------------------------+
3 | Zend Engine |
4 +----------------------------------------------------------------------+
ccfc46b - Happy new year and PHP 5 for rest of the files too..
foobar authored
5 | Copyright (c) 1998-2004 Zend Technologies Ltd. (http://www.zend.com) |
573b460 andigutmans Zend Library
andigutmans authored
6 +----------------------------------------------------------------------+
d863d52 Update headers.
Sebastian Bergmann authored
7 | This source file is subject to version 2.00 of the Zend license, |
b5b1117 Zeev Suraski License update
zsuraski authored
8 | that is bundled with this package in the file LICENSE, and is |
f68c7ff updating license information in the headers.
James Cox authored
9 | available through the world-wide-web at the following url: |
d863d52 Update headers.
Sebastian Bergmann authored
10 | http://www.zend.com/license/2_00.txt. |
b5b1117 Zeev Suraski License update
zsuraski authored
11 | If you did not receive a copy of the Zend license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@zend.com so we can mail you a copy immediately. |
573b460 andigutmans Zend Library
andigutmans authored
14 +----------------------------------------------------------------------+
15 | Authors: Andi Gutmans <andi@zend.com> |
16 | Zeev Suraski <zeev@zend.com> |
17 +----------------------------------------------------------------------+
18 */
19
333406b - Added some missing CVS $Id$ tags, headers and footers.
foobar authored
20 /* $Id$ */
b5b1117 Zeev Suraski License update
zsuraski authored
21
a617217 Replace macros which begin with an underscore through an appropiately
Sascha Schumann authored
22 #ifndef ZEND_COMPILE_H
23 #define ZEND_COMPILE_H
573b460 andigutmans Zend Library
andigutmans authored
24
25 #include "zend.h"
fa76f0c Zeev Suraski Compile fix
zsuraski authored
26
009025e * header file cleanup
Stig S. Bakken authored
27 #ifdef HAVE_STDARG_H
28 # include <stdarg.h>
fa76f0c Zeev Suraski Compile fix
zsuraski authored
29 #endif
30
573b460 andigutmans Zend Library
andigutmans authored
31 #include "zend_llist.h"
32
33 #define DEBUG_ZEND 0
fcaf734 andigutmans - Don't support interactive mode when thread safe.
andigutmans authored
34
573b460 andigutmans Zend Library
andigutmans authored
35 #define FREE_PNODE(znode) zval_dtor(&znode->u.constant);
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
bdd3b60 Implement a different way to catch documentation comments.
Andrei Zmievski authored
43 #define RESET_DOC_COMMENT() \
1885d00 Simplify.
Andrei Zmievski authored
44 { \
bdd3b60 Implement a different way to catch documentation comments.
Andrei Zmievski authored
45 CG(doc_comment) = NULL; \
46 CG(doc_comment_len) = 0; \
1885d00 Simplify.
Andrei Zmievski authored
47 }
bdd3b60 Implement a different way to catch documentation comments.
Andrei Zmievski authored
48
573b460 andigutmans Zend Library
andigutmans authored
49 typedef struct _zend_op_array zend_op_array;
8010931 andigutmans - Improve performance of part of the jmps. More to follow.
andigutmans authored
50 typedef struct _zend_op zend_op;
573b460 andigutmans Zend Library
andigutmans authored
51
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
52 typedef struct _znode {
573b460 andigutmans Zend Library
andigutmans authored
53 int op_type;
54 union {
55 zval constant;
56
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
57 zend_uint var;
232b904 Zeev Suraski Clean up last/size definitions
zsuraski authored
58 zend_uint opline_num; /* Needs to be signed */
573b460 andigutmans Zend Library
andigutmans authored
59 zend_op_array *op_array;
8010931 andigutmans - Improve performance of part of the jmps. More to follow.
andigutmans authored
60 zend_op *jmp_addr;
573b460 andigutmans Zend Library
andigutmans authored
61 struct {
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
62 zend_uint var; /* dummy */
63 zend_uint type;
573b460 andigutmans Zend Library
andigutmans authored
64 } EA;
65 } u;
66 } znode;
67
536d4d8 andigutmans - Improve opcode dispatching
andigutmans authored
68 typedef struct _zend_execute_data zend_execute_data;
69
edb7c7d andigutmans - Stop using garbage. Please let me know if you find any bugs resulting
andigutmans authored
70 #define ZEND_OPCODE_HANDLER_ARGS zend_execute_data *execute_data TSRMLS_DC
71 #define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU execute_data TSRMLS_CC
536d4d8 andigutmans - Improve opcode dispatching
andigutmans authored
72
73 typedef int (*opcode_handler_t) (ZEND_OPCODE_HANDLER_ARGS);
74
f82ed13 andigutmans - Commit new VM architecture. This one allows people (aka Derick) to
andigutmans authored
75 extern ZEND_API opcode_handler_t *zend_opcode_handlers;
573b460 andigutmans Zend Library
andigutmans authored
76
8010931 andigutmans - Improve performance of part of the jmps. More to follow.
andigutmans authored
77 struct _zend_op {
6f9bfe5 andigutmans - Shift around zend_op members
andigutmans authored
78 opcode_handler_t handler;
573b460 andigutmans Zend Library
andigutmans authored
79 znode result;
80 znode op1;
81 znode op2;
39a7f4c Zeev Suraski This patch is a go. Not fully optimized yet, but working properly.
zsuraski authored
82 ulong extended_value;
573b460 andigutmans Zend Library
andigutmans authored
83 uint lineno;
6f9bfe5 andigutmans - Shift around zend_op members
andigutmans authored
84 zend_uchar opcode;
8010931 andigutmans - Improve performance of part of the jmps. More to follow.
andigutmans authored
85 };
573b460 andigutmans Zend Library
andigutmans authored
86
87
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
88 typedef struct _zend_brk_cont_element {
573b460 andigutmans Zend Library
andigutmans authored
89 int cont;
90 int brk;
91 int parent;
92 } zend_brk_cont_element;
93
94
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
95 typedef struct _zend_try_catch_element {
96 zend_uint try_op;
97 zend_uint catch_op; /* ketchup! */
98 } zend_try_catch_element;
99
100
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
101 /* method flags (types) */
0338111 Zeev Suraski Require abstract classes to be explicitly declared 'abstract', in order ...
zsuraski authored
102 #define ZEND_ACC_STATIC 0x01
103 #define ZEND_ACC_ABSTRACT 0x02
104 #define ZEND_ACC_FINAL 0x04
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
105 #define ZEND_ACC_IMPLEMENTED_ABSTRACT 0x08
6020ffd Simplify detection of methods that must be called dynamic (with object)
Marcus Boerger authored
106
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
107 /* class flags (types) */
108 /* ZEND_ACC_IMPLICIT_ABSTRACT_CLASS is used for abstract classes (since it is set by any abstract method even interfaces MAY have it set, too). */
109 /* ZEND_ACC_EXPLICIT_ABSTRACT_CLASS denotes that a class was explicitly defined as abstract by using the keyword. */
110 #define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS 0x10
111 #define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS 0x20
112 #define ZEND_ACC_FINAL_CLASS 0x40
113 #define ZEND_ACC_INTERFACE 0x80
e8214a3 andigutmans - Commit Marcus' cleanup of abstract and static inheritance and improve
andigutmans authored
114
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
115 /* method flags (visibility) */
32b100e Zeev Suraski - Allow variables to have both 'static' modifier and an access level.
zsuraski authored
116 /* The order of those must be kept - public < protected < private */
0338111 Zeev Suraski Require abstract classes to be explicitly declared 'abstract', in order ...
zsuraski authored
117 #define ZEND_ACC_PUBLIC 0x100
118 #define ZEND_ACC_PROTECTED 0x200
119 #define ZEND_ACC_PRIVATE 0x400
dc5c790 Zeev Suraski Treat the absence of an access type just as if 'public' was supplied
zsuraski authored
120 #define ZEND_ACC_PPP_MASK (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
121
0338111 Zeev Suraski Require abstract classes to be explicitly declared 'abstract', in order ...
zsuraski authored
122 #define ZEND_ACC_CHANGED 0x800
123 #define ZEND_ACC_IMPLICIT_PUBLIC 0x1000
77208ec Zeev Suraski Fix incorrect linkage of access-levels, when using private methods
zsuraski authored
124
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
125 /* method flags (special method detection) */
fbda310 - Flag ctor/dtor methods
Marcus Boerger authored
126 #define ZEND_ACC_CTOR 0x2000
7c2e02d Disallow static declaration of clone
Marcus Boerger authored
127 #define ZEND_ACC_DTOR 0x4000
128 #define ZEND_ACC_CLONE 0x8000
1c2512d - Add fn_flag ZEND_ACC_ALIAS
Marcus Boerger authored
129
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
130 /* method flag (bc only), any method that has this flag can be used statically and non statically. */
131 #define ZEND_ACC_ALLOW_STATIC 0x10000
132
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
133 char *zend_visibility_string(zend_uint fn_flags);
e8214a3 andigutmans - Commit Marcus' cleanup of abstract and static inheritance and improve
andigutmans authored
134
471947b Zeev Suraski Reimplement PPP properties
zsuraski authored
135
136 typedef struct _zend_property_info {
137 zend_uint flags;
138 char *name;
139 int name_length;
140 ulong h;
67a226d - Add ReflectionProperty::getDocComment()
Marcus Boerger authored
141 char *doc_comment;
142 int doc_comment_len;
471947b Zeev Suraski Reimplement PPP properties
zsuraski authored
143 } zend_property_info;
144
145
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
146 typedef struct _zend_arg_info {
147 char *name;
148 zend_uint name_len;
149 char *class_name;
150 zend_uint class_name_len;
1a72341 Added array type hinting. (This patch requires full re-make)
Dmitry Stogov authored
151 zend_bool array_type_hint;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
152 zend_bool allow_null;
153 zend_bool pass_by_reference;
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
154 zend_bool return_reference;
7086634 Zeev Suraski - Improve ARG_INFO() macros to support supplying required_num_args
zsuraski authored
155 int required_num_args;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
156 } zend_arg_info;
157
db507dd andigutmans - Commit the variable fetch optimization.
andigutmans authored
158 typedef struct _zend_compiled_variable {
159 char *name;
160 int name_len;
161 ulong hash_value;
162 } zend_compiled_variable;
163
573b460 andigutmans Zend Library
andigutmans authored
164 struct _zend_op_array {
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
165 /* Common elements */
166 zend_uchar type;
167 char *function_name;
168 zend_class_entry *scope;
169 zend_uint fn_flags;
170 union _zend_function *prototype;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
171 zend_uint num_args;
36a7518 Zeev Suraski - Abstract methods cannot have defaults for arguments
zsuraski authored
172 zend_uint required_num_args;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
173 zend_arg_info *arg_info;
174 zend_bool pass_rest_by_reference;
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
175 unsigned char return_reference;
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
176 /* END of common elements */
573b460 andigutmans Zend Library
andigutmans authored
177
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
178 zend_uint *refcount;
573b460 andigutmans Zend Library
andigutmans authored
179
180 zend_op *opcodes;
232b904 Zeev Suraski Clean up last/size definitions
zsuraski authored
181 zend_uint last, size;
573b460 andigutmans Zend Library
andigutmans authored
182
db507dd andigutmans - Commit the variable fetch optimization.
andigutmans authored
183 zend_compiled_variable *vars;
184 int last_var, size_var;
185
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
186 zend_uint T;
573b460 andigutmans Zend Library
andigutmans authored
187
188 zend_brk_cont_element *brk_cont_array;
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
189 zend_uint last_brk_cont;
190 zend_uint current_brk_cont;
573b460 andigutmans Zend Library
andigutmans authored
191
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
192 zend_try_catch_element *try_catch_array;
193 int last_try_catch;
194
573b460 andigutmans Zend Library
andigutmans authored
195 /* static variables support */
196 HashTable *static_variables;
197
85b4df5 Zeev Suraski Improved interactive mode - it is now available in all builds, without a...
zsuraski authored
198 zend_op *start_op;
573b460 andigutmans Zend Library
andigutmans authored
199 int backpatch_count;
85b4df5 Zeev Suraski Improved interactive mode - it is now available in all builds, without a...
zsuraski authored
200
42d1529 Zeev Suraski Fix possible bug with extension dtors being called without the ctors bei...
zsuraski authored
201 zend_bool done_pass_two;
0ce019f andigutmans - Fix issues with $this when using it by itself without indirection such...
andigutmans authored
202 zend_bool uses_this;
573b460 andigutmans Zend Library
andigutmans authored
203
c06692e Zeev Suraski The patch we promised - redesigned the compilation/execution API:
zsuraski authored
204 char *filename;
5657b83 Multi-purpose patch:
Andrei Zmievski authored
205 zend_uint line_start;
206 zend_uint line_end;
207 char *doc_comment;
208 zend_uint doc_comment_len;
c06692e Zeev Suraski The patch we promised - redesigned the compilation/execution API:
zsuraski authored
209
b5f5e9a andigutmans - Optimize the execute stack a bit.
andigutmans authored
210 void *reserved[ZEND_MAX_RESERVED_RESOURCES];
573b460 andigutmans Zend Library
andigutmans authored
211 };
212
213
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
214 #define ZEND_RETURN_VALUE 0
215 #define ZEND_RETURN_REFERENCE 1
216 #define ZEND_RETURN_REFERENCE_AGNOSTIC 2
217
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
218 typedef struct _zend_internal_function {
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
219 /* Common elements */
220 zend_uchar type;
221 char *function_name;
222 zend_class_entry *scope;
223 zend_uint fn_flags;
224 union _zend_function *prototype;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
225 zend_uint num_args;
36a7518 Zeev Suraski - Abstract methods cannot have defaults for arguments
zsuraski authored
226 zend_uint required_num_args;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
227 zend_arg_info *arg_info;
228 zend_bool pass_rest_by_reference;
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
229 unsigned char return_reference;
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
230 /* END of common elements */
573b460 andigutmans Zend Library
andigutmans authored
231
232 void (*handler)(INTERNAL_FUNCTION_PARAMETERS);
233 } zend_internal_function;
234
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
235 #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
236
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
237 typedef union _zend_function {
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
238 zend_uchar type; /* MUST be the first element of this struct! */
d1eea3d andigutmans - Fix bug in nested try/catch's
andigutmans authored
239
573b460 andigutmans Zend Library
andigutmans authored
240 struct {
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
241 zend_uchar type; /* never used */
7f35cfd Zeev Suraski *** empty log message ***
zsuraski authored
242 char *function_name;
d1eea3d andigutmans - Fix bug in nested try/catch's
andigutmans authored
243 zend_class_entry *scope;
01e853c andigutmans - My personal cleanups
andigutmans authored
244 zend_uint fn_flags;
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
245 union _zend_function *prototype;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
246 zend_uint num_args;
36a7518 Zeev Suraski - Abstract methods cannot have defaults for arguments
zsuraski authored
247 zend_uint required_num_args;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
248 zend_arg_info *arg_info;
249 zend_bool pass_rest_by_reference;
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
250 unsigned char return_reference;
573b460 andigutmans Zend Library
andigutmans authored
251 } common;
252
253 zend_op_array op_array;
254 zend_internal_function internal_function;
255 } zend_function;
256
257
9cb2cf1 Zeev Suraski Optimize allocations into uninitialized_zval assignments
zsuraski authored
258 typedef struct _zend_function_state {
573b460 andigutmans Zend Library
andigutmans authored
259 HashTable *function_symbol_table;
260 zend_function *function;
b5f5e9a andigutmans - Optimize the execute stack a bit.
andigutmans authored
261 void *reserved[ZEND_MAX_RESERVED_RESOURCES];
573b460 andigutmans Zend Library
andigutmans authored
262 } zend_function_state;
263
264
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
265 typedef struct _zend_switch_entry {
573b460 andigutmans Zend Library
andigutmans authored
266 znode cond;
267 int default_case;
268 int control_var;
269 } zend_switch_entry;
270
271
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
272 typedef struct _list_llist_element {
573b460 andigutmans Zend Library
andigutmans authored
273 znode var;
274 zend_llist dimensions;
275 znode value;
276 } list_llist_element;
277
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
278 union _temp_variable;
279
1327480 andigutmans - Fix compile warning.
andigutmans authored
280 struct _zend_execute_data {
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
281 struct _zend_op *opline;
282 zend_function_state function_state;
283 zend_function *fbc; /* Function Being Called */
284 zend_function *fbc_constructor;
41e3f4f andigutmans - Fix problem with debug_backtrace() reported by Stig. We weren't report...
andigutmans authored
285 zend_op_array *op_array;
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
286 zval *object;
287 union _temp_variable *Ts;
db507dd andigutmans - Commit the variable fetch optimization.
andigutmans authored
288 zval ***CVs;
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
289 zend_bool original_in_execution;
290 zend_class_entry *calling_scope;
db507dd andigutmans - Commit the variable fetch optimization.
andigutmans authored
291 HashTable *symbol_table;
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
292 struct _zend_execute_data *prev_execute_data;
1327480 andigutmans - Fix compile warning.
andigutmans authored
293 };
573b460 andigutmans Zend Library
andigutmans authored
294
b66c89c andigutmans - More debug backtrace work. It still doesn't work very well...
andigutmans authored
295 #define EX(element) execute_data.element
296
573b460 andigutmans Zend Library
andigutmans authored
297
298 #define IS_CONST (1<<0)
299 #define IS_TMP_VAR (1<<1)
300 #define IS_VAR (1<<2)
301 #define IS_UNUSED (1<<3) /* Unused variable */
db507dd andigutmans - Commit the variable fetch optimization.
andigutmans authored
302 #define IS_CV (1<<4) /* Compiled variable */
573b460 andigutmans Zend Library
andigutmans authored
303
304 #define EXT_TYPE_UNUSED (1<<0)
305
df74f1d Add optional support for C0x inline semantics.
Sascha Schumann authored
306 #include "zend_globals.h"
307
ad115d2 Zeev Suraski Fix require()
zsuraski authored
308 BEGIN_EXTERN_C()
309
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
310 void init_compiler(TSRMLS_D);
311 void shutdown_compiler(TSRMLS_D);
312 void zend_init_compiler_data_structures(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
313
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
314 extern ZEND_API zend_op_array *(*zend_compile_file)(zend_file_handle *file_handle, int type TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
315
1fd542f Export lex_scan(). Both the PHPDoc and tokenizer extension need this. I ...
Sebastian Bergmann authored
316 ZEND_API int lex_scan(zval *zendlval TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
317 void startup_scanner(TSRMLS_D);
318 void shutdown_scanner(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
319
4187439 Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
320 ZEND_API char *zend_set_compiled_filename(char *new_compiled_filename TSRMLS_DC);
321 ZEND_API void zend_restore_compiled_filename(char *original_compiled_filename TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
322 ZEND_API char *zend_get_compiled_filename(TSRMLS_D);
323 ZEND_API int zend_get_compiled_lineno(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
324
8838c0f andigutmans - Two new API calls for Derick (retreive CV name and value) by Dmitry
andigutmans authored
325 ZEND_API char* zend_get_compiled_variable_name(zend_op_array *op_array, zend_uint var, int* name_len);
326
1aa2c5c Zeev Suraski Ok, call me crazy, because I probably am.
zsuraski authored
327 #ifdef ZTS
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
328 const char *zend_get_zendtext(TSRMLS_D);
329 int zend_get_zendleng(TSRMLS_D);
1aa2c5c Zeev Suraski Ok, call me crazy, because I probably am.
zsuraski authored
330 #endif
331
573b460 andigutmans Zend Library
andigutmans authored
332
333 /* parser-driven code generators */
51e797f some type cleanup work
Harald Radi authored
334 void zend_do_binary_op(zend_uchar op, znode *result, znode *op1, znode *op2 TSRMLS_DC);
335 void zend_do_unary_op(zend_uchar op, znode *result, znode *op1 TSRMLS_DC);
336 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
337 void zend_do_assign(znode *result, znode *variable, znode *value TSRMLS_DC);
338 void zend_do_assign_ref(znode *result, znode *lvar, znode *rvar TSRMLS_DC);
339 void fetch_simple_variable(znode *result, znode *varname, int bp TSRMLS_DC);
51e797f some type cleanup work
Harald Radi authored
340 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
341 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
342 void zend_do_fetch_static_variable(znode *varname, znode *static_assignment, int fetch_type TSRMLS_DC);
343 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
344
345 void fetch_array_begin(znode *result, znode *varname, znode *first_dim TSRMLS_DC);
346 void fetch_array_dim(znode *result, znode *parent, znode *dim TSRMLS_DC);
347 void fetch_string_offset(znode *result, znode *parent, znode *offset TSRMLS_DC);
db507dd andigutmans - Commit the variable fetch optimization.
andigutmans authored
348 void zend_do_fetch_static_member(znode *result, znode *class_znode TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
349 void zend_do_print(znode *result, znode *arg TSRMLS_DC);
350 void zend_do_echo(znode *arg TSRMLS_DC);
8802964 * fix some casts
Sascha Schumann authored
351 typedef int (*unary_op_type)(zval *, zval *);
352 ZEND_API unary_op_type get_unary_op(int opcode);
573b460 andigutmans Zend Library
andigutmans authored
353 ZEND_API void *get_binary_op(int opcode);
354
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
355 void zend_do_while_cond(znode *expr, znode *close_bracket_token TSRMLS_DC);
356 void zend_do_while_end(znode *while_token, znode *close_bracket_token TSRMLS_DC);
357 void zend_do_do_while_begin(TSRMLS_D);
358 void zend_do_do_while_end(znode *do_token, znode *expr_open_bracket, znode *expr TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
359
360
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
361 void zend_do_if_cond(znode *cond, znode *closing_bracket_token TSRMLS_DC);
362 void zend_do_if_after_statement(znode *closing_bracket_token, unsigned char initialize TSRMLS_DC);
363 void zend_do_if_end(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
364
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
365 void zend_do_for_cond(znode *expr, znode *second_semicolon_token TSRMLS_DC);
366 void zend_do_for_before_statement(znode *cond_start, znode *second_semicolon_token TSRMLS_DC);
367 void zend_do_for_end(znode *second_semicolon_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
368
51e797f some type cleanup work
Harald Radi authored
369 void zend_do_pre_incdec(znode *result, znode *op1, zend_uchar op TSRMLS_DC);
370 void zend_do_post_incdec(znode *result, znode *op1, zend_uchar op TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
371
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
372 void zend_do_begin_variable_parse(TSRMLS_D);
373 void zend_do_end_variable_parse(int type, int arg_offset TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
374
ac7ed46 andigutmans - Start adding parsed variable checks.
andigutmans authored
375 void zend_check_writable_variable(znode *variable);
376
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
377 void zend_do_free(znode *op1 TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
378
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
379 void zend_do_init_string(znode *result TSRMLS_DC);
380 void zend_do_add_char(znode *result, znode *op1, znode *op2 TSRMLS_DC);
381 void zend_do_add_string(znode *result, znode *op1, znode *op2 TSRMLS_DC);
382 void zend_do_add_variable(znode *result, znode *op1, znode *op2 TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
383
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
384 int zend_do_verify_access_types(znode *current_access_type, znode *new_modifier);
26dd849 Zeev Suraski Add support for interfaces
zsuraski authored
385 void zend_do_begin_function_declaration(znode *function_token, znode *function_name, int is_method, int return_reference, znode *fn_flags_znode TSRMLS_DC);
e6255b0 Revert portions of the doc comment patch. There should be no parser
Andrei Zmievski authored
386 void zend_do_end_function_declaration(znode *function_token TSRMLS_DC);
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
387 void zend_do_receive_arg(zend_uchar op, znode *var, znode *offset, znode *initialization, znode *class_type, znode *varname, zend_bool pass_by_reference TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
388 int zend_do_begin_function_call(znode *function_name TSRMLS_DC);
2ce4b47 andigutmans - Initial support for _clone()
andigutmans authored
389 void zend_do_begin_method_call(znode *left_bracket TSRMLS_DC);
8e30d96 Zeev Suraski Redesign the clone() feature to fix some fundamental flaws in the previo...
zsuraski authored
390 void zend_do_clone(znode *result, znode *expr TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
391 void zend_do_begin_dynamic_function_call(znode *function_name TSRMLS_DC);
f7f5a5e Stanislav Malyshev MEGA-patch: namespaces are R.I.P.
smalyshev authored
392 void zend_do_fetch_class(znode *result, znode *class_name TSRMLS_DC);
d344648 andigutmans - Fix __autoload() to preserve class case.
andigutmans authored
393 void zend_do_fetch_class_name(znode *result, znode *class_entry, znode *class_name TSRMLS_DC);
d8efe62 andigutmans - Fix bug #27669 (Dmitry).
andigutmans authored
394 void zend_do_begin_class_member_function_call(znode *class_name, znode *method_name TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
395 void zend_do_end_function_call(znode *function_name, znode *result, znode *argument_list, int is_method, int is_dynamic_fcall TSRMLS_DC);
396 void zend_do_return(znode *expr, int do_end_vparse TSRMLS_DC);
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
397 void zend_do_handle_exception(TSRMLS_D);
29f5dbe andigutmans - Initial support for exceptions.
andigutmans authored
398
6197021 andigutmans - Make it compile in thread-safe mode.
andigutmans authored
399 void zend_do_try(znode *try_token TSRMLS_DC);
21b04ff andigutmans @ Allow a series of consecutive catch() statements (Andi, Zend Engine)
andigutmans authored
400 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
401 void zend_do_end_catch(znode *try_token TSRMLS_DC);
402 void zend_do_throw(znode *expr TSRMLS_DC);
29f5dbe andigutmans - Initial support for exceptions.
andigutmans authored
403
c5d8422 Zeev Suraski Reinstate early-binding for classes.
zsuraski authored
404 ZEND_API int do_bind_function(zend_op *opline, HashTable *function_table, zend_bool compile_time);
405 ZEND_API zend_class_entry *do_bind_class(zend_op *opline, HashTable *class_table, zend_bool compile_time TSRMLS_DC);
406 ZEND_API zend_class_entry *do_bind_inherited_class(zend_op *opline, HashTable *class_table, zend_class_entry *parent_ce, zend_bool compile_time TSRMLS_DC);
3c62b3b Expand Interface C API.
Marcus Boerger authored
407 ZEND_API void zend_do_inherit_interfaces(zend_class_entry *ce, zend_class_entry *iface TSRMLS_DC);
408 ZEND_API void zend_do_implement_interface(zend_class_entry *ce, zend_class_entry *iface TSRMLS_DC);
26dd849 Zeev Suraski Add support for interfaces
zsuraski authored
409 void zend_do_implements_interface(znode *interface_znode TSRMLS_DC);
f78fa50 andigutmans - Megapatch to try and support inheritance from sub-classes. Things migh...
andigutmans authored
410
4918b67 - Make zend_do_inheritance ZEND_API
Marcus Boerger authored
411 ZEND_API void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent_ce TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
412 void zend_do_early_binding(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
413
51e797f some type cleanup work
Harald Radi authored
414 void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
415
416
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
417 void zend_do_boolean_or_begin(znode *expr1, znode *op_token TSRMLS_DC);
418 void zend_do_boolean_or_end(znode *result, znode *expr1, znode *expr2, znode *op_token TSRMLS_DC);
333406b - Added some missing CVS $Id$ tags, headers and footers.
foobar authored
419 void zend_do_boolean_and_begin(znode *expr1, znode *op_token TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
420 void zend_do_boolean_and_end(znode *result, znode *expr1, znode *expr2, znode *op_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
421
51e797f some type cleanup work
Harald Radi authored
422 void zend_do_brk_cont(zend_uchar op, znode *expr TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
423
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
424 void zend_do_switch_cond(znode *cond TSRMLS_DC);
425 void zend_do_switch_end(znode *case_list TSRMLS_DC);
426 void zend_do_case_before_statement(znode *case_list, znode *case_token, znode *case_expr TSRMLS_DC);
427 void zend_do_case_after_statement(znode *result, znode *case_token TSRMLS_DC);
428 void zend_do_default_before_statement(znode *case_list, znode *default_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
429
74efc41 andigutmans - Make classes have scope and function/constant lookups default to the c...
andigutmans authored
430 void zend_do_begin_class_declaration(znode *class_token, znode *class_name, znode *parent_class_name TSRMLS_DC);
e6255b0 Revert portions of the doc comment patch. There should be no parser
Andrei Zmievski authored
431 void zend_do_end_class_declaration(znode *class_token, znode *parent_token TSRMLS_DC);
6317e26 Zeev Suraski - Treat $this->foo inside class X as an implicit 'public $foo' if X::$fo...
zsuraski authored
432 void zend_do_declare_property(znode *var_name, znode *value, zend_uint access_type TSRMLS_DC);
8d2a4e0 Zeev Suraski Fix bogus implicit declarations of properties (squash bug #23671)
zsuraski authored
433 void zend_do_declare_implicit_property(TSRMLS_D);
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
434 void zend_do_declare_class_constant(znode *var_name, znode *value TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
435
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
436 void zend_do_fetch_property(znode *result, znode *object, znode *property TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
437
438
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
439 void zend_do_push_object(znode *object TSRMLS_DC);
440 void zend_do_pop_object(znode *object TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
441
442
a332f82 andigutmans - Support instantiation of nested class. The following script now should
andigutmans authored
443 void zend_do_begin_new_object(znode *new_token, znode *class_type TSRMLS_DC);
444 void zend_do_end_new_object(znode *result, znode *new_token, znode *argument_list TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
445
e858d27 andigutmans - Initial support for class constants. There are still a few semantic
andigutmans authored
446 void zend_do_fetch_constant(znode *result, znode *constant_container, znode *constant_name, int mode TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
447
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
448 void zend_do_shell_exec(znode *result, znode *cmd TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
449
51e797f some type cleanup work
Harald Radi authored
450 void zend_do_init_array(znode *result, znode *expr, znode *offset, zend_bool is_ref TSRMLS_DC);
451 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
452 void zend_do_add_static_array_element(znode *result, znode *offset, znode *expr);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
453 void zend_do_list_init(TSRMLS_D);
454 void zend_do_list_end(znode *result, znode *expr TSRMLS_DC);
455 void zend_do_add_list_element(znode *element TSRMLS_DC);
456 void zend_do_new_list_begin(TSRMLS_D);
457 void zend_do_new_list_end(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
458
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
459 void zend_do_cast(znode *result, znode *expr, int type TSRMLS_DC);
460 void zend_do_include_or_eval(int type, znode *result, znode *op1 TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
461
7b68f51 andigutmans - Nuke delete(). It was a big mistake to introduce it and I finally
andigutmans authored
462 void zend_do_unset(znode *variable TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
463 void zend_do_isset_or_isempty(int type, znode *result, znode *variable TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
464
c073b76 andigutmans - Change "is" to "instanceof" as it explains better what the operator me...
andigutmans authored
465 void zend_do_instanceof(znode *result, znode *expr, znode *class_znode, int type TSRMLS_DC);
82c72f2 @- Adding 'is' operator that can be used to check the type of a variable...
Andrei Zmievski authored
466
a29f539 - Cleanup foreach handling
Marcus Boerger authored
467 void zend_do_foreach_begin(znode *foreach_token, znode *open_brackets_token, znode *array, int variable TSRMLS_DC);
468 void zend_do_foreach_fetch(znode *foreach_token, znode *open_brackets_token, znode *as_token TSRMLS_DC);
469 void zend_do_foreach_cont(znode *foreach_token, znode *as_token, znode *value, znode *key TSRMLS_DC);
470 void zend_do_foreach_end(znode *foreach_token, znode *as_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
471
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
472 void zend_do_declare_begin(TSRMLS_D);
473 void zend_do_declare_stmt(znode *var, znode *val TSRMLS_DC);
b806a8e MFZE1 (use token instead of global for opcode counting)
Jason Greene authored
474 void zend_do_declare_end(znode *declare_token TSRMLS_DC);
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
475
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
476 void zend_do_end_heredoc(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
477
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
478 void zend_do_exit(znode *result, znode *message TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
479
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
480 void zend_do_begin_silence(znode *strudel_token TSRMLS_DC);
481 void zend_do_end_silence(znode *strudel_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
482
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
483 void zend_do_begin_qm_op(znode *cond, znode *qm_token TSRMLS_DC);
484 void zend_do_qm_true(znode *true_value, znode *qm_token, znode *colon_token TSRMLS_DC);
485 void zend_do_qm_false(znode *result, znode *false_value, znode *qm_token, znode *colon_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
486
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
487 void zend_do_extended_info(TSRMLS_D);
488 void zend_do_extended_fcall_begin(TSRMLS_D);
489 void zend_do_extended_fcall_end(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
490
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
491 void zend_do_ticks(TSRMLS_D);
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
492
2814504 Zeev Suraski Improve parser handling of 'abstract'
zsuraski authored
493 void zend_do_abstract_method(znode *function_name, znode *modifiers, znode *body TSRMLS_DC);
227f783 andigutmans - Fix build (thanks Marcus)
andigutmans authored
494
727398b andigutmans Add to the API
andigutmans authored
495 ZEND_API void function_add_ref(zend_function *function);
0b7a9ce Zeev Suraski - Fix Win32 compilation (Use winsock2.h from now on)
zsuraski authored
496
7c4a083 Zeev Suraski Various thread safety fixes and DLL updates
zsuraski authored
497 #define INITIAL_OP_ARRAY_SIZE 64
498
573b460 andigutmans Zend Library
andigutmans authored
499
7b0d92d Zeev Suraski Unify the names of these last 3 files...
zsuraski authored
500 /* helper functions in zend_language_scanner.l */
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
501 ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSRMLS_DC);
502 ZEND_API zend_op_array *compile_string(zval *source_string, char *filename TSRMLS_DC);
503 ZEND_API zend_op_array *compile_filename(int type, zval *filename TSRMLS_DC);
819ea51 Zeev Suraski MFZE1
zsuraski authored
504 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
505 ZEND_API int open_file_for_scanning(zend_file_handle *file_handle TSRMLS_DC);
51e797f some type cleanup work
Harald Radi authored
506 ZEND_API void init_op_array(zend_op_array *op_array, zend_uchar type, int initial_ops_size TSRMLS_DC);
3fc8528 Eliminate TSRMLS_FETCH() calls in destroy_op_array() and zend_get_class_...
Sebastian Bergmann authored
507 ZEND_API void destroy_op_array(zend_op_array *op_array TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
508 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
509 ZEND_API void zend_file_handle_dtor(zend_file_handle *fh);
03f88ac Stanislav Malyshev Add additional stage to post-session cleanup.
smalyshev authored
510 ZEND_API int zend_cleanup_class_data(zend_class_entry **pce TSRMLS_DC);
511 ZEND_API int zend_cleanup_function_data(zend_function *function TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
512
3fc8528 Eliminate TSRMLS_FETCH() calls in destroy_op_array() and zend_get_class_...
Sebastian Bergmann authored
513 ZEND_API void destroy_zend_function(zend_function *function TSRMLS_DC);
fb5cb59 Fixed Zend Function Destructor to use correct TSRM handle.
Stefan Esser authored
514 ZEND_API void zend_function_dtor(zend_function *function);
92dd5e6 Stanislav Malyshev - make class tables contain class_entry *, not class_entry
smalyshev authored
515 ZEND_API void destroy_zend_class(zend_class_entry **pce);
c8c629b andigutmans - Fix bug introduced with latest class hash table change.
andigutmans authored
516 void zend_class_add_ref(zend_class_entry **ce);
7c4a083 Zeev Suraski Various thread safety fixes and DLL updates
zsuraski authored
517
6923a16 - Fixed var_export() to show public, protected and private modifiers pro...
Derick Rethans authored
518 ZEND_API void zend_mangle_property_name(char **dest, int *dest_length, char *src1, int src1_length, char *src2, int src2_length, int internal);
519 ZEND_API void zend_unmangle_property_name(char *mangled_property, char **prop_name, char **class_name);
471947b Zeev Suraski Reimplement PPP properties
zsuraski authored
520
fb5cb59 Fixed Zend Function Destructor to use correct TSRM handle.
Stefan Esser authored
521 #define ZEND_FUNCTION_DTOR (void (*)(void *)) zend_function_dtor
62114c1 Zeev Suraski Destructors no longer return ints, the low level problem it was intended...
zsuraski authored
522 #define ZEND_CLASS_DTOR (void (*)(void *)) destroy_zend_class
81d901b Zeev Suraski Step 1 in nuking the garbage collector:
zsuraski authored
523
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
524 zend_op *get_next_op(zend_op_array *op_array TSRMLS_DC);
525 void init_op(zend_op *op TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
526 int get_next_op_number(zend_op_array *op_array);
d76cf1d Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
527 int print_class(zend_class_entry *class_entry TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
528 void print_op_array(zend_op_array *op_array, int optimizations);
d76cf1d Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
529 int pass_two(zend_op_array *op_array TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
530 zend_brk_cont_element *get_next_brk_cont_element(zend_op_array *op_array);
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
531 void zend_do_first_catch(znode *open_parentheses TSRMLS_DC);
532 void zend_initialize_try_catch_element(znode *try_token TSRMLS_DC);
533 void zend_do_mark_last_catch(znode *first_catch, znode *last_additional_catch TSRMLS_DC);
4187439 Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
534 ZEND_API zend_bool zend_is_compiling(TSRMLS_D);
b577038 Zeev Suraski Avoid TSRMLS_FETCH()'s (still lots of work left)
zsuraski authored
535 ZEND_API char *zend_make_compiled_string_description(char *name TSRMLS_DC);
9c909f4 Sync: Export externally used functions.
Sebastian Bergmann authored
536 ZEND_API void zend_initialize_class_data(zend_class_entry *ce, zend_bool nullify_handlers TSRMLS_DC);
9d7122f Zeev Suraski Generalize fetch_class
zsuraski authored
537 int zend_get_class_fetch_type(char *class_name, uint class_name_len);
c17c7a2 Zeev Suraski Centralize class initialization
zsuraski authored
538
f7b7800 Zeev Suraski Add infrastructure for JIT initialization of auto globals
zsuraski authored
539 typedef zend_bool (*zend_auto_global_callback)(char *name, uint name_len TSRMLS_DC);
540 typedef struct _zend_auto_global {
541 char *name;
542 uint name_len;
543 zend_auto_global_callback auto_global_callback;
544 zend_bool armed;
545 } zend_auto_global;
573b460 andigutmans Zend Library
andigutmans authored
546
f7b7800 Zeev Suraski Add infrastructure for JIT initialization of auto globals
zsuraski authored
547 void zend_auto_global_dtor(zend_auto_global *auto_global);
170de9b export functions needed by cli
Shane Caraveo authored
548 ZEND_API int zend_register_auto_global(char *name, uint name_len, zend_auto_global_callback auto_global_callback TSRMLS_DC);
549 ZEND_API zend_bool zend_is_auto_global(char *name, uint name_len TSRMLS_DC);
e2a5ebf Zeev Suraski Add ability to disable JIT for a particular auto global
zsuraski authored
550 ZEND_API int zend_auto_global_disable_jit(char *varname, zend_uint varname_length TSRMLS_DC);
9d11db1 andigutmans - Merge new $_GET, $_POST etc. patch from Engine 1 tree
andigutmans authored
551
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
552 int zendlex(znode *zendlval TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
553
5ae7fa4 add markers that make this file easy to parse for external sources
Sterling Hughes authored
554 /* BEGIN: OPCODES */
f7f5a5e Stanislav Malyshev MEGA-patch: namespaces are R.I.P.
smalyshev authored
555
a904c1d andigutmans - Improve comments, docs, code...
andigutmans authored
556 #include "zend_vm_opcodes.h"
a4c3b2c Stanislav Malyshev Namespace patch. Big changes:
smalyshev authored
557
a904c1d andigutmans - Improve comments, docs, code...
andigutmans authored
558 #define ZEND_OP_DATA 137
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
559
5ae7fa4 add markers that make this file easy to parse for external sources
Sterling Hughes authored
560 /* END: OPCODES */
573b460 andigutmans Zend Library
andigutmans authored
561
562
563
564
565 /* global/local fetches */
d2da63f andigutmans - Support static members. The following script works:
andigutmans authored
566 #define ZEND_FETCH_GLOBAL 0
567 #define ZEND_FETCH_LOCAL 1
568 #define ZEND_FETCH_STATIC 2
569 #define ZEND_FETCH_STATIC_MEMBER 3
573b460 andigutmans Zend Library
andigutmans authored
570
68fa4e5 Zeev Suraski Get rid of an opcode
zsuraski authored
571
572 /* obj/dim unsets */
573 #define ZEND_UNSET_DIM 1
574 #define ZEND_UNSET_OBJ 2
575
74efc41 andigutmans - Make classes have scope and function/constant lookups default to the c...
andigutmans authored
576 /* class fetches */
577 #define ZEND_FETCH_CLASS_DEFAULT 0
578 #define ZEND_FETCH_CLASS_SELF 1
b3fd2fa andigutmans - Support parent:: again
andigutmans authored
579 #define ZEND_FETCH_CLASS_PARENT 2
580 #define ZEND_FETCH_CLASS_MAIN 3
a4c3b2c Stanislav Malyshev Namespace patch. Big changes:
smalyshev authored
581 #define ZEND_FETCH_CLASS_GLOBAL 4
9d7122f Zeev Suraski Generalize fetch_class
zsuraski authored
582 #define ZEND_FETCH_CLASS_AUTO 5
b3fd2fa andigutmans - Support parent:: again
andigutmans authored
583
74efc41 andigutmans - Make classes have scope and function/constant lookups default to the c...
andigutmans authored
584
880e7d8 andigutmans - Framework for knowing what kind of variable we just parsed.
andigutmans authored
585 /* variable parsing type (compile-time) */
03b6af0 Zeev Suraski Support references in foreach()
zsuraski authored
586 #define ZEND_PARSED_MEMBER (1<<0)
587 #define ZEND_PARSED_METHOD_CALL (1<<1)
588 #define ZEND_PARSED_STATIC_MEMBER (1<<2)
589 #define ZEND_PARSED_FUNCTION_CALL (1<<3)
590 #define ZEND_PARSED_VARIABLE (1<<4)
591 #define ZEND_PARSED_REFERENCE_VARIABLE (1<<5)
880e7d8 andigutmans - Framework for knowing what kind of variable we just parsed.
andigutmans authored
592
593
5af7770 andigutmans - Sync Engine2 CVS with latest Engine CVS
andigutmans authored
594 /* unset types */
595 #define ZEND_UNSET_REG 0
596
573b460 andigutmans Zend Library
andigutmans authored
597 /* var status for backpatching */
06d04d1 andigutmans - Fix SEND_VAR problem after fetch'ing a variable and not knowing the fe...
andigutmans authored
598 #define BP_VAR_R 0
599 #define BP_VAR_W 1
600 #define BP_VAR_RW 2
601 #define BP_VAR_IS 3
602 #define BP_VAR_NA 4 /* if not applicable */
603 #define BP_VAR_FUNC_ARG 5
7fa17e8 andigutmans - Put in the infrastructure for the unset() fix. Right now it has the ol...
andigutmans authored
604 #define BP_VAR_UNSET 6
573b460 andigutmans Zend Library
andigutmans authored
605
606
49c4866 Zeev Suraski - Improve tracking
zsuraski authored
607 #define ZEND_INTERNAL_FUNCTION 1
608 #define ZEND_USER_FUNCTION 2
609 #define ZEND_OVERLOADED_FUNCTION 3
610 #define ZEND_EVAL_CODE 4
611 #define ZEND_OVERLOADED_FUNCTION_TEMPORARY 5
573b460 andigutmans Zend Library
andigutmans authored
612
62f9eb8 Split ZEND_NAMESPACE into user and internal namespaces. Hope this is
Andrei Zmievski authored
613 #define ZEND_INTERNAL_CLASS 1
614 #define ZEND_USER_CLASS 2
573b460 andigutmans Zend Library
andigutmans authored
615
616 #define ZEND_EVAL (1<<0)
617 #define ZEND_INCLUDE (1<<1)
9cc7044 andigutmans - Cleanup old IMPORT stuff
andigutmans authored
618 #define ZEND_INCLUDE_ONCE (1<<2)
67b4b3a Zeev Suraski - require() of a dynamic expression now has the standard require() seman...
zsuraski authored
619 #define ZEND_REQUIRE (1<<3)
c06692e Zeev Suraski The patch we promised - redesigned the compilation/execution API:
zsuraski authored
620 #define ZEND_REQUIRE_ONCE (1<<4)
573b460 andigutmans Zend Library
andigutmans authored
621
622 #define ZEND_ISSET (1<<0)
623 #define ZEND_ISEMPTY (1<<1)
624
625 #define ZEND_CT (1<<0)
626 #define ZEND_RT (1<<1)
627
628
58153df Zeev Suraski - Improve the file handle closing code
zsuraski authored
629 #define ZEND_HANDLE_FILENAME 0
630 #define ZEND_HANDLE_FD 1
631 #define ZEND_HANDLE_FP 2
632 #define ZEND_HANDLE_STDIOSTREAM 3
633 #define ZEND_HANDLE_FSTREAM 4
e52aac9 Wez Furlong Implement simple stream support in the ZE scanners.
wez authored
634 #define ZEND_HANDLE_STREAM 5
573b460 andigutmans Zend Library
andigutmans authored
635
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
636 #define ZEND_FETCH_STANDARD 0
cccd244 Zeev Suraski Get rid of AiCount completely
zsuraski authored
637 #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
638
993f70c andigutmans - Don't use magic numbers
andigutmans authored
639 #define ZEND_FE_FETCH_BYREF 1
640 #define ZEND_FE_FETCH_WITH_KEY 2
641
741b816 Zeev Suraski * Support getThis() for internal functions.
zsuraski authored
642 #define ZEND_MEMBER_FUNC_CALL 1<<0
643
8d90825 andigutmans - Allow passing references which are returned from functions and new
andigutmans authored
644 #define ZEND_ARG_SEND_BY_REF (1<<0)
645 #define ZEND_ARG_COMPILE_TIME_BOUND (1<<1)
6ec1acb Zeev Suraski Phase 3:
zsuraski authored
646
6d988ec andigutmans - Add support for BYREF_FORCE_REST
andigutmans authored
647 /* Lost In Stupid Parentheses */
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
648 #define ARG_SHOULD_BE_SENT_BY_REF(zf, arg_num) \
649 ( \
650 zf \
651 && ((zend_function *) zf)->common.arg_info \
652 && \
653 ( \
654 ( \
655 arg_num<=((zend_function *) zf)->common.num_args \
f71644b - Revert automatic pass arg_info
Marcus Boerger authored
656 && ((zend_function *) zf)->common.arg_info[arg_num-1].pass_by_reference \
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
657 ) \
658 || ( \
659 arg_num>((zend_function *) zf)->common.num_args \
f71644b - Revert automatic pass arg_info
Marcus Boerger authored
660 && ((zend_function *) zf)->common.pass_rest_by_reference \
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
661 ) \
662 ) \
6d988ec andigutmans - Add support for BYREF_FORCE_REST
andigutmans authored
663 )
664
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
665
ced9cee Zeev Suraski - Implement return by reference:
zsuraski authored
666 #define ZEND_RETURN_VAL 0
667 #define ZEND_RETURN_REF 1
668
3a42bab Zeev Suraski Fix behavior of return-by-reference functions. Remove erroneous warning...
zsuraski authored
669
670 #define ZEND_RETURNS_FUNCTION 1<<0
671
ad115d2 Zeev Suraski Fix require()
zsuraski authored
672 END_EXTERN_C()
673
d8651c8 Stanislav Malyshev Support for __get, __set and __call in classes.
smalyshev authored
674 #define ZEND_CLONE_FUNC_NAME "__clone"
675 #define ZEND_CONSTRUCTOR_FUNC_NAME "__construct"
676 #define ZEND_DESTRUCTOR_FUNC_NAME "__destruct"
677 #define ZEND_GET_FUNC_NAME "__get"
678 #define ZEND_SET_FUNC_NAME "__set"
679 #define ZEND_CALL_FUNC_NAME "__call"
5f0433d MFB: Enforce protocol on magic methods/functions
Marcus Boerger authored
680 #define ZEND_AUTOLOAD_FUNC_NAME "__autoload"
d8651c8 Stanislav Malyshev Support for __get, __set and __call in classes.
smalyshev authored
681
a617217 Replace macros which begin with an underscore through an appropiately
Sascha Schumann authored
682 #endif /* ZEND_COMPILE_H */
333406b - Added some missing CVS $Id$ tags, headers and footers.
foobar authored
683
684 /*
685 * Local variables:
686 * tab-width: 4
687 * c-basic-offset: 4
688 * indent-tabs-mode: t
689 * End:
690 */
Something went wrong with that request. Please try again.