Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 784 lines (599 sloc) 28.685 kb
573b460 andigutmans Zend Library
andigutmans authored
1 /*
2 +----------------------------------------------------------------------+
3 | Zend Engine |
4 +----------------------------------------------------------------------+
d1dded8 MFH: Bump copyright year, 2 of 2.
Sebastian Bergmann authored
5 | Copyright (c) 1998-2008 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, |
493f39d - MFH: Fix bug #37212 (Access to protected property of common base class...
Marcus Boerger 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
0291ad5 Fixed bug #40236 (php -a function allocation eats memory)
Dmitry Stogov authored
39 #define INC_BPC(op_array) if (op_array->fn_flags & ZEND_ACC_INTERACTIVE) { ((op_array)->backpatch_count++); }
40 #define DEC_BPC(op_array) if (op_array->fn_flags & ZEND_ACC_INTERACTIVE) { ((op_array)->backpatch_count--); }
41 #define HANDLE_INTERACTIVE() if (CG(active_op_array)->fn_flags & ZEND_ACC_INTERACTIVE) { execute_new_code(TSRMLS_C); }
573b460 andigutmans Zend Library
andigutmans authored
42
58a0ee0 Fixed bug #26456 (Wrong results from Reflection-API getDocComment() when...
Dmitry Stogov authored
43 #define RESET_DOC_COMMENT() \
44 { \
45 if (CG(doc_comment)) { \
46 efree(CG(doc_comment)); \
47 CG(doc_comment) = NULL; \
48 } \
49 CG(doc_comment_len) = 0; \
1885d00 Simplify.
Andrei Zmievski authored
50 }
bdd3b60 Implement a different way to catch documentation comments.
Andrei Zmievski authored
51
573b460 andigutmans Zend Library
andigutmans authored
52 typedef struct _zend_op_array zend_op_array;
8010931 andigutmans - Improve performance of part of the jmps. More to follow.
andigutmans authored
53 typedef struct _zend_op zend_op;
573b460 andigutmans Zend Library
andigutmans authored
54
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
55 typedef struct _znode {
573b460 andigutmans Zend Library
andigutmans authored
56 int op_type;
57 union {
58 zval constant;
59
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
60 zend_uint var;
232b904 Zeev Suraski Clean up last/size definitions
zsuraski authored
61 zend_uint opline_num; /* Needs to be signed */
573b460 andigutmans Zend Library
andigutmans authored
62 zend_op_array *op_array;
8010931 andigutmans - Improve performance of part of the jmps. More to follow.
andigutmans authored
63 zend_op *jmp_addr;
573b460 andigutmans Zend Library
andigutmans authored
64 struct {
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
65 zend_uint var; /* dummy */
66 zend_uint type;
573b460 andigutmans Zend Library
andigutmans authored
67 } EA;
68 } u;
69 } znode;
70
536d4d8 andigutmans - Improve opcode dispatching
andigutmans authored
71 typedef struct _zend_execute_data zend_execute_data;
72
edb7c7d andigutmans - Stop using garbage. Please let me know if you find any bugs resulting
andigutmans authored
73 #define ZEND_OPCODE_HANDLER_ARGS zend_execute_data *execute_data TSRMLS_DC
74 #define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU execute_data TSRMLS_CC
536d4d8 andigutmans - Improve opcode dispatching
andigutmans authored
75
76a9a42 - Removed direct executor recursion.
Dmitry Stogov authored
76 typedef int (*user_opcode_handler_t) (ZEND_OPCODE_HANDLER_ARGS);
77 typedef int (ZEND_FASTCALL *opcode_handler_t) (ZEND_OPCODE_HANDLER_ARGS);
536d4d8 andigutmans - Improve opcode dispatching
andigutmans authored
78
f82ed13 andigutmans - Commit new VM architecture. This one allows people (aka Derick) to
andigutmans authored
79 extern ZEND_API opcode_handler_t *zend_opcode_handlers;
573b460 andigutmans Zend Library
andigutmans authored
80
8010931 andigutmans - Improve performance of part of the jmps. More to follow.
andigutmans authored
81 struct _zend_op {
6f9bfe5 andigutmans - Shift around zend_op members
andigutmans authored
82 opcode_handler_t handler;
573b460 andigutmans Zend Library
andigutmans authored
83 znode result;
84 znode op1;
85 znode op2;
39a7f4c Zeev Suraski This patch is a go. Not fully optimized yet, but working properly.
zsuraski authored
86 ulong extended_value;
573b460 andigutmans Zend Library
andigutmans authored
87 uint lineno;
6f9bfe5 andigutmans - Shift around zend_op members
andigutmans authored
88 zend_uchar opcode;
8010931 andigutmans - Improve performance of part of the jmps. More to follow.
andigutmans authored
89 };
573b460 andigutmans Zend Library
andigutmans authored
90
91
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
92 typedef struct _zend_brk_cont_element {
cd6537e Fixed bugs #34065 and #38623 (throw in foreach/switch causes memory leak...
Dmitry Stogov authored
93 int start;
573b460 andigutmans Zend Library
andigutmans authored
94 int cont;
95 int brk;
96 int parent;
97 } zend_brk_cont_element;
98
f66f55e Felipe Pena MFH: Implemented "jump label" operator (limited "goto")
felipensp authored
99 typedef struct _zend_label {
100 int brk_cont;
101 zend_uint opline_num;
102 } zend_label;
573b460 andigutmans Zend Library
andigutmans authored
103
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
104 typedef struct _zend_try_catch_element {
105 zend_uint try_op;
106 zend_uint catch_op; /* ketchup! */
107 } zend_try_catch_element;
108
109
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
110 /* method flags (types) */
0338111 Zeev Suraski Require abstract classes to be explicitly declared 'abstract', in order ...
zsuraski authored
111 #define ZEND_ACC_STATIC 0x01
112 #define ZEND_ACC_ABSTRACT 0x02
113 #define ZEND_ACC_FINAL 0x04
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
114 #define ZEND_ACC_IMPLEMENTED_ABSTRACT 0x08
6020ffd Simplify detection of methods that must be called dynamic (with object)
Marcus Boerger authored
115
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
116 /* class flags (types) */
117 /* 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). */
118 /* ZEND_ACC_EXPLICIT_ABSTRACT_CLASS denotes that a class was explicitly defined as abstract by using the keyword. */
119 #define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS 0x10
120 #define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS 0x20
121 #define ZEND_ACC_FINAL_CLASS 0x40
122 #define ZEND_ACC_INTERFACE 0x80
e8214a3 andigutmans - Commit Marcus' cleanup of abstract and static inheritance and improve
andigutmans authored
123
0291ad5 Fixed bug #40236 (php -a function allocation eats memory)
Dmitry Stogov authored
124 /* op_array flags */
125 #define ZEND_ACC_INTERACTIVE 0x10
126
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
127 /* method flags (visibility) */
32b100e Zeev Suraski - Allow variables to have both 'static' modifier and an access level.
zsuraski authored
128 /* 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
129 #define ZEND_ACC_PUBLIC 0x100
130 #define ZEND_ACC_PROTECTED 0x200
131 #define ZEND_ACC_PRIVATE 0x400
dc5c790 Zeev Suraski Treat the absence of an access type just as if 'public' was supplied
zsuraski authored
132 #define ZEND_ACC_PPP_MASK (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
133
0338111 Zeev Suraski Require abstract classes to be explicitly declared 'abstract', in order ...
zsuraski authored
134 #define ZEND_ACC_CHANGED 0x800
135 #define ZEND_ACC_IMPLICIT_PUBLIC 0x1000
77208ec Zeev Suraski Fix incorrect linkage of access-levels, when using private methods
zsuraski authored
136
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
137 /* method flags (special method detection) */
fbda310 - Flag ctor/dtor methods
Marcus Boerger authored
138 #define ZEND_ACC_CTOR 0x2000
7c2e02d Disallow static declaration of clone
Marcus Boerger authored
139 #define ZEND_ACC_DTOR 0x4000
140 #define ZEND_ACC_CLONE 0x8000
1c2512d - Add fn_flag ZEND_ACC_ALIAS
Marcus Boerger authored
141
50ee116 Clearify the different method/class flags (as discussed with Andi).
Marcus Boerger authored
142 /* method flag (bc only), any method that has this flag can be used statically and non statically. */
143 #define ZEND_ACC_ALLOW_STATIC 0x10000
144
2cb5215 Stanislav Malyshev MF50: fix #29689 and more private property problems
smalyshev authored
145 /* shadow of parent's private method/property */
146 #define ZEND_ACC_SHADOW 0x20000
147
941b065 - MFH: Function deprecation flag
Marcus Boerger authored
148 /* deprecation flag */
149 #define ZEND_ACC_DEPRECATED 0x40000
150
0f2247a Fixed bug #44414 (Incomplete reporting about abstract methods)
Dmitry Stogov authored
151 /* class implement interface(s) flag */
152 #define ZEND_ACC_IMPLEMENT_INTERFACES 0x80000
153
d5ef2f4 Added support for lambda functions and closures
Dmitry Stogov authored
154 #define ZEND_ACC_CLOSURE 0x100000
155
af05ce0 Fixed is_callable/call_user_func mess that had done different things for...
Dmitry Stogov authored
156 /* function flag for internal user call handlers __call, __callstatic */
157 #define ZEND_ACC_CALL_VIA_HANDLER 0x200000
0f2247a Fixed bug #44414 (Incomplete reporting about abstract methods)
Dmitry Stogov authored
158
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
159 char *zend_visibility_string(zend_uint fn_flags);
e8214a3 andigutmans - Commit Marcus' cleanup of abstract and static inheritance and improve
andigutmans authored
160
471947b Zeev Suraski Reimplement PPP properties
zsuraski authored
161
162 typedef struct _zend_property_info {
163 zend_uint flags;
164 char *name;
165 int name_length;
166 ulong h;
67a226d - Add ReflectionProperty::getDocComment()
Marcus Boerger authored
167 char *doc_comment;
168 int doc_comment_len;
493f39d - MFH: Fix bug #37212 (Access to protected property of common base class...
Marcus Boerger authored
169 zend_class_entry *ce;
471947b Zeev Suraski Reimplement PPP properties
zsuraski authored
170 } zend_property_info;
171
172
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
173 typedef struct _zend_arg_info {
6c810b0 Improved memory usage by movig constants to read only memory. (Dmitry, P...
Dmitry Stogov authored
174 const char *name;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
175 zend_uint name_len;
6c810b0 Improved memory usage by movig constants to read only memory. (Dmitry, P...
Dmitry Stogov authored
176 const char *class_name;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
177 zend_uint class_name_len;
1a72341 Added array type hinting. (This patch requires full re-make)
Dmitry Stogov authored
178 zend_bool array_type_hint;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
179 zend_bool allow_null;
180 zend_bool pass_by_reference;
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
181 zend_bool return_reference;
7086634 Zeev Suraski - Improve ARG_INFO() macros to support supplying required_num_args
zsuraski authored
182 int required_num_args;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
183 } zend_arg_info;
184
db507dd andigutmans - Commit the variable fetch optimization.
andigutmans authored
185 typedef struct _zend_compiled_variable {
186 char *name;
187 int name_len;
188 ulong hash_value;
189 } zend_compiled_variable;
190
573b460 andigutmans Zend Library
andigutmans authored
191 struct _zend_op_array {
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
192 /* Common elements */
193 zend_uchar type;
194 char *function_name;
195 zend_class_entry *scope;
196 zend_uint fn_flags;
197 union _zend_function *prototype;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
198 zend_uint num_args;
36a7518 Zeev Suraski - Abstract methods cannot have defaults for arguments
zsuraski authored
199 zend_uint required_num_args;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
200 zend_arg_info *arg_info;
201 zend_bool pass_rest_by_reference;
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
202 unsigned char return_reference;
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
203 /* END of common elements */
573b460 andigutmans Zend Library
andigutmans authored
204
5521912 Use IS_CV for dirrent access to $this variable
Dmitry Stogov authored
205 zend_bool done_pass_two;
206
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
207 zend_uint *refcount;
573b460 andigutmans Zend Library
andigutmans authored
208
209 zend_op *opcodes;
232b904 Zeev Suraski Clean up last/size definitions
zsuraski authored
210 zend_uint last, size;
573b460 andigutmans Zend Library
andigutmans authored
211
db507dd andigutmans - Commit the variable fetch optimization.
andigutmans authored
212 zend_compiled_variable *vars;
213 int last_var, size_var;
214
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
215 zend_uint T;
573b460 andigutmans Zend Library
andigutmans authored
216
217 zend_brk_cont_element *brk_cont_array;
f8f26de Felipe Pena Fix for segfault on 64bit platform
felipensp authored
218 int last_brk_cont;
219 int current_brk_cont;
573b460 andigutmans Zend Library
andigutmans authored
220
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
221 zend_try_catch_element *try_catch_array;
222 int last_try_catch;
223
573b460 andigutmans Zend Library
andigutmans authored
224 /* static variables support */
225 HashTable *static_variables;
226
85b4df5 Zeev Suraski Improved interactive mode - it is now available in all builds, without a...
zsuraski authored
227 zend_op *start_op;
573b460 andigutmans Zend Library
andigutmans authored
228 int backpatch_count;
85b4df5 Zeev Suraski Improved interactive mode - it is now available in all builds, without a...
zsuraski authored
229
5521912 Use IS_CV for dirrent access to $this variable
Dmitry Stogov authored
230 zend_uint this_var;
573b460 andigutmans Zend Library
andigutmans authored
231
c06692e Zeev Suraski The patch we promised - redesigned the compilation/execution API:
zsuraski authored
232 char *filename;
5657b83 Multi-purpose patch:
Andrei Zmievski authored
233 zend_uint line_start;
234 zend_uint line_end;
235 char *doc_comment;
236 zend_uint doc_comment_len;
8c885b8 Implemented concept of "delayed early binding" that allows opcode caches...
Dmitry Stogov authored
237 zend_uint early_binding; /* the linked list of delayed declarations */
c06692e Zeev Suraski The patch we promised - redesigned the compilation/execution API:
zsuraski authored
238
b5f5e9a andigutmans - Optimize the execute stack a bit.
andigutmans authored
239 void *reserved[ZEND_MAX_RESERVED_RESOURCES];
573b460 andigutmans Zend Library
andigutmans authored
240 };
241
242
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
243 #define ZEND_RETURN_VALUE 0
244 #define ZEND_RETURN_REFERENCE 1
245
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
246 typedef struct _zend_internal_function {
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
247 /* Common elements */
248 zend_uchar type;
637a404 - MFH as discussed
Marcus Boerger authored
249 char * function_name;
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
250 zend_class_entry *scope;
637a404 - MFH as discussed
Marcus Boerger authored
251 zend_uint fn_flags;
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
252 union _zend_function *prototype;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
253 zend_uint num_args;
36a7518 Zeev Suraski - Abstract methods cannot have defaults for arguments
zsuraski authored
254 zend_uint required_num_args;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
255 zend_arg_info *arg_info;
256 zend_bool pass_rest_by_reference;
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
257 unsigned char return_reference;
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
258 /* END of common elements */
573b460 andigutmans Zend Library
andigutmans authored
259
260 void (*handler)(INTERNAL_FUNCTION_PARAMETERS);
637a404 - MFH as discussed
Marcus Boerger authored
261 struct _zend_module_entry *module;
573b460 andigutmans Zend Library
andigutmans authored
262 } zend_internal_function;
263
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
264 #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
265
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
266 typedef union _zend_function {
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
267 zend_uchar type; /* MUST be the first element of this struct! */
d1eea3d andigutmans - Fix bug in nested try/catch's
andigutmans authored
268
573b460 andigutmans Zend Library
andigutmans authored
269 struct {
e92f6f1 andigutmans - define zend_uint and zend_uchar and use them in a few places
andigutmans authored
270 zend_uchar type; /* never used */
7f35cfd Zeev Suraski *** empty log message ***
zsuraski authored
271 char *function_name;
d1eea3d andigutmans - Fix bug in nested try/catch's
andigutmans authored
272 zend_class_entry *scope;
01e853c andigutmans - My personal cleanups
andigutmans authored
273 zend_uint fn_flags;
5097be3 Zeev Suraski Initial support for enforcing prototype of abstract/interface method imp...
zsuraski authored
274 union _zend_function *prototype;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
275 zend_uint num_args;
36a7518 Zeev Suraski - Abstract methods cannot have defaults for arguments
zsuraski authored
276 zend_uint required_num_args;
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
277 zend_arg_info *arg_info;
278 zend_bool pass_rest_by_reference;
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
279 unsigned char return_reference;
573b460 andigutmans Zend Library
andigutmans authored
280 } common;
637a404 - MFH as discussed
Marcus Boerger authored
281
573b460 andigutmans Zend Library
andigutmans authored
282 zend_op_array op_array;
283 zend_internal_function internal_function;
284 } zend_function;
285
286
9cb2cf1 Zeev Suraski Optimize allocations into uninitialized_zval assignments
zsuraski authored
287 typedef struct _zend_function_state {
573b460 andigutmans Zend Library
andigutmans authored
288 zend_function *function;
0b68251 Changed EG(argument_stack) implementation.
Dmitry Stogov authored
289 void **arguments;
573b460 andigutmans Zend Library
andigutmans authored
290 } zend_function_state;
291
292
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
293 typedef struct _zend_switch_entry {
573b460 andigutmans Zend Library
andigutmans authored
294 znode cond;
295 int default_case;
296 int control_var;
297 } zend_switch_entry;
298
299
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
300 typedef struct _list_llist_element {
573b460 andigutmans Zend Library
andigutmans authored
301 znode var;
302 zend_llist dimensions;
303 znode value;
304 } list_llist_element;
305
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
306 union _temp_variable;
307
1327480 andigutmans - Fix compile warning.
andigutmans authored
308 struct _zend_execute_data {
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
309 struct _zend_op *opline;
310 zend_function_state function_state;
311 zend_function *fbc; /* Function Being Called */
166266d Added support for Late Static Binding. (Dmitry, Etienne Kneuss)
Dmitry Stogov authored
312 zend_class_entry *called_scope;
41e3f4f andigutmans - Fix problem with debug_backtrace() reported by Stig. We weren't report...
andigutmans authored
313 zend_op_array *op_array;
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
314 zval *object;
315 union _temp_variable *Ts;
db507dd andigutmans - Commit the variable fetch optimization.
andigutmans authored
316 zval ***CVs;
317 HashTable *symbol_table;
7e5ec2d andigutmans Initial support for built-in backtracing.
andigutmans authored
318 struct _zend_execute_data *prev_execute_data;
f8e8c55 Antony Dovgal MFH: fix #33771 (error_reporting falls to 0 when @ was used inside try/c...
tony2001 authored
319 zval *old_error_reporting;
76a9a42 - Removed direct executor recursion.
Dmitry Stogov authored
320 zend_bool nested;
321 zval **original_return_value;
322 zend_class_entry *current_scope;
323 zend_class_entry *current_called_scope;
324 zval *current_this;
325 zval *current_object;
326 struct _zend_op *call_opline;
1327480 andigutmans - Fix compile warning.
andigutmans authored
327 };
573b460 andigutmans Zend Library
andigutmans authored
328
b66c89c andigutmans - More debug backtrace work. It still doesn't work very well...
andigutmans authored
329 #define EX(element) execute_data.element
330
573b460 andigutmans Zend Library
andigutmans authored
331
332 #define IS_CONST (1<<0)
333 #define IS_TMP_VAR (1<<1)
334 #define IS_VAR (1<<2)
335 #define IS_UNUSED (1<<3) /* Unused variable */
db507dd andigutmans - Commit the variable fetch optimization.
andigutmans authored
336 #define IS_CV (1<<4) /* Compiled variable */
573b460 andigutmans Zend Library
andigutmans authored
337
1b317f1 - Use ZEND_FREE() opcode instead of ZEND_SWITCH_FREE(IS_TMP_VAR)
Dmitry Stogov authored
338 #define EXT_TYPE_UNUSED (1<<0)
339 #define EXT_TYPE_FREE_ON_RETURN (2<<0)
573b460 andigutmans Zend Library
andigutmans authored
340
df74f1d Add optional support for C0x inline semantics.
Sascha Schumann authored
341 #include "zend_globals.h"
342
ad115d2 Zeev Suraski Fix require()
zsuraski authored
343 BEGIN_EXTERN_C()
344
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
345 void init_compiler(TSRMLS_D);
346 void shutdown_compiler(TSRMLS_D);
347 void zend_init_compiler_data_structures(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
348
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
349 extern ZEND_API zend_op_array *(*zend_compile_file)(zend_file_handle *file_handle, int type TSRMLS_DC);
7bbf353 MFH: Added hook for compile_string()
Stefan Esser authored
350 extern ZEND_API zend_op_array *(*zend_compile_string)(zval *source_string, char *filename TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
351
1fd542f Export lex_scan(). Both the PHPDoc and tokenizer extension need this. I ...
Sebastian Bergmann authored
352 ZEND_API int lex_scan(zval *zendlval TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
353 void startup_scanner(TSRMLS_D);
354 void shutdown_scanner(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
355
4187439 Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
356 ZEND_API char *zend_set_compiled_filename(char *new_compiled_filename TSRMLS_DC);
357 ZEND_API void zend_restore_compiled_filename(char *original_compiled_filename TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
358 ZEND_API char *zend_get_compiled_filename(TSRMLS_D);
359 ZEND_API int zend_get_compiled_lineno(TSRMLS_D);
a28497d - Fix __halt_compiler() weirdness with zend-mulibyte enabled
Moriyoshi Koizumi authored
360 ZEND_API size_t zend_get_scanned_file_offset(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
361
9e2894f Felipe Pena MFH:
felipensp authored
362 void zend_resolve_class_name(znode *class_name, ulong *fetch_type, int check_ns_name TSRMLS_DC);
8838c0f andigutmans - Two new API calls for Derick (retreive CV name and value) by Dmitry
andigutmans authored
363 ZEND_API char* zend_get_compiled_variable_name(zend_op_array *op_array, zend_uint var, int* name_len);
364
1aa2c5c Zeev Suraski Ok, call me crazy, because I probably am.
zsuraski authored
365 #ifdef ZTS
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
366 const char *zend_get_zendtext(TSRMLS_D);
367 int zend_get_zendleng(TSRMLS_D);
1aa2c5c Zeev Suraski Ok, call me crazy, because I probably am.
zsuraski authored
368 #endif
369
573b460 andigutmans Zend Library
andigutmans authored
370
371 /* parser-driven code generators */
51e797f some type cleanup work
Harald Radi authored
372 void zend_do_binary_op(zend_uchar op, znode *result, znode *op1, znode *op2 TSRMLS_DC);
373 void zend_do_unary_op(zend_uchar op, znode *result, znode *op1 TSRMLS_DC);
374 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
375 void zend_do_assign(znode *result, znode *variable, znode *value TSRMLS_DC);
376 void zend_do_assign_ref(znode *result, znode *lvar, znode *rvar TSRMLS_DC);
377 void fetch_simple_variable(znode *result, znode *varname, int bp TSRMLS_DC);
51e797f some type cleanup work
Harald Radi authored
378 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
379 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
380 void zend_do_fetch_static_variable(znode *varname, znode *static_assignment, int fetch_type TSRMLS_DC);
381 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
382
383 void fetch_array_begin(znode *result, znode *varname, znode *first_dim TSRMLS_DC);
384 void fetch_array_dim(znode *result, znode *parent, znode *dim TSRMLS_DC);
385 void fetch_string_offset(znode *result, znode *parent, znode *offset TSRMLS_DC);
db507dd andigutmans - Commit the variable fetch optimization.
andigutmans authored
386 void zend_do_fetch_static_member(znode *result, znode *class_znode TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
387 void zend_do_print(znode *result, znode *arg TSRMLS_DC);
388 void zend_do_echo(znode *arg TSRMLS_DC);
8802964 * fix some casts
Sascha Schumann authored
389 typedef int (*unary_op_type)(zval *, zval *);
390 ZEND_API unary_op_type get_unary_op(int opcode);
573b460 andigutmans Zend Library
andigutmans authored
391 ZEND_API void *get_binary_op(int opcode);
392
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
393 void zend_do_while_cond(znode *expr, znode *close_bracket_token TSRMLS_DC);
394 void zend_do_while_end(znode *while_token, znode *close_bracket_token TSRMLS_DC);
395 void zend_do_do_while_begin(TSRMLS_D);
396 void zend_do_do_while_end(znode *do_token, znode *expr_open_bracket, znode *expr TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
397
398
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
399 void zend_do_if_cond(znode *cond, znode *closing_bracket_token TSRMLS_DC);
400 void zend_do_if_after_statement(znode *closing_bracket_token, unsigned char initialize TSRMLS_DC);
401 void zend_do_if_end(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
402
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
403 void zend_do_for_cond(znode *expr, znode *second_semicolon_token TSRMLS_DC);
404 void zend_do_for_before_statement(znode *cond_start, znode *second_semicolon_token TSRMLS_DC);
405 void zend_do_for_end(znode *second_semicolon_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
406
51e797f some type cleanup work
Harald Radi authored
407 void zend_do_pre_incdec(znode *result, znode *op1, zend_uchar op TSRMLS_DC);
408 void zend_do_post_incdec(znode *result, znode *op1, zend_uchar op TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
409
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
410 void zend_do_begin_variable_parse(TSRMLS_D);
5521912 Use IS_CV for dirrent access to $this variable
Dmitry Stogov authored
411 void zend_do_end_variable_parse(znode *variable, int type, int arg_offset TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
412
ac7ed46 andigutmans - Start adding parsed variable checks.
andigutmans authored
413 void zend_check_writable_variable(znode *variable);
414
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
415 void zend_do_free(znode *op1 TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
416
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
417 void zend_do_add_string(znode *result, znode *op1, znode *op2 TSRMLS_DC);
418 void zend_do_add_variable(znode *result, znode *op1, znode *op2 TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
419
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
420 int zend_do_verify_access_types(znode *current_access_type, znode *new_modifier);
26dd849 Zeev Suraski Add support for interfaces
zsuraski authored
421 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
422 void zend_do_end_function_declaration(znode *function_token TSRMLS_DC);
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
423 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);
f32ffe9 Namespaces
Dmitry Stogov authored
424 int zend_do_begin_function_call(znode *function_name, zend_bool check_namespace TSRMLS_DC);
2ce4b47 andigutmans - Initial support for _clone()
andigutmans authored
425 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
426 void zend_do_clone(znode *result, znode *expr TSRMLS_DC);
f32ffe9 Namespaces
Dmitry Stogov authored
427 void zend_do_begin_dynamic_function_call(znode *function_name, int prefix_len TSRMLS_DC);
f7f5a5e Stanislav Malyshev MEGA-patch: namespaces are R.I.P.
smalyshev authored
428 void zend_do_fetch_class(znode *result, znode *class_name TSRMLS_DC);
9e2894f Felipe Pena MFH:
felipensp authored
429 void zend_do_build_full_name(znode *result, znode *prefix, znode *name TSRMLS_DC);
9f230a0 Added support for "namespace::" prefix that is resolved to current names...
Dmitry Stogov authored
430 int 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
431 void zend_do_end_function_call(znode *function_name, znode *result, znode *argument_list, int is_method, int is_dynamic_fcall TSRMLS_DC);
432 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
433 void zend_do_handle_exception(TSRMLS_D);
29f5dbe andigutmans - Initial support for exceptions.
andigutmans authored
434
d5ef2f4 Added support for lambda functions and closures
Dmitry Stogov authored
435 void zend_do_begin_lambda_function_declaration(znode *result, znode *function_token, int return_reference, int is_static TSRMLS_DC);
436 void zend_do_fetch_lexical_variable(znode *varname, zend_bool is_ref TSRMLS_DC);
437
6197021 andigutmans - Make it compile in thread-safe mode.
andigutmans authored
438 void zend_do_try(znode *try_token TSRMLS_DC);
f32ffe9 Namespaces
Dmitry Stogov authored
439 void zend_do_begin_catch(znode *try_token, znode *catch_class, znode *catch_var, znode *first_catch TSRMLS_DC);
6197021 andigutmans - Make it compile in thread-safe mode.
andigutmans authored
440 void zend_do_end_catch(znode *try_token TSRMLS_DC);
441 void zend_do_throw(znode *expr TSRMLS_DC);
29f5dbe andigutmans - Initial support for exceptions.
andigutmans authored
442
c5d8422 Zeev Suraski Reinstate early-binding for classes.
zsuraski authored
443 ZEND_API int do_bind_function(zend_op *opline, HashTable *function_table, zend_bool compile_time);
444 ZEND_API zend_class_entry *do_bind_class(zend_op *opline, HashTable *class_table, zend_bool compile_time TSRMLS_DC);
445 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
446 ZEND_API void zend_do_inherit_interfaces(zend_class_entry *ce, zend_class_entry *iface TSRMLS_DC);
447 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
448 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
449
4918b67 - Make zend_do_inheritance ZEND_API
Marcus Boerger authored
450 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
451 void zend_do_early_binding(TSRMLS_D);
8c885b8 Implemented concept of "delayed early binding" that allows opcode caches...
Dmitry Stogov authored
452 ZEND_API void zend_do_delayed_early_binding(zend_op_array *op_array TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
453
51e797f some type cleanup work
Harald Radi authored
454 void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
455
456
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
457 void zend_do_boolean_or_begin(znode *expr1, znode *op_token TSRMLS_DC);
458 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
459 void zend_do_boolean_and_begin(znode *expr1, znode *op_token TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
460 void zend_do_boolean_and_end(znode *result, znode *expr1, znode *expr2, znode *op_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
461
51e797f some type cleanup work
Harald Radi authored
462 void zend_do_brk_cont(zend_uchar op, znode *expr TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
463
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
464 void zend_do_switch_cond(znode *cond TSRMLS_DC);
465 void zend_do_switch_end(znode *case_list TSRMLS_DC);
466 void zend_do_case_before_statement(znode *case_list, znode *case_token, znode *case_expr TSRMLS_DC);
467 void zend_do_case_after_statement(znode *result, znode *case_token TSRMLS_DC);
468 void zend_do_default_before_statement(znode *case_list, znode *default_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
469
74efc41 andigutmans - Make classes have scope and function/constant lookups default to the c...
andigutmans authored
470 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
471 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
472 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
473 void zend_do_declare_implicit_property(TSRMLS_D);
e062dff Zeev Suraski - Implement public/protected/private methods.
zsuraski authored
474 void zend_do_declare_class_constant(znode *var_name, znode *value TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
475
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
476 void zend_do_fetch_property(znode *result, znode *object, znode *property TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
477
17c0c49 Addres limitation of __HALT_COMPILER() that allowed only one instance
Ilia Alshanetsky authored
478 void zend_do_halt_compiler_register(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
479
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
480 void zend_do_push_object(znode *object TSRMLS_DC);
481 void zend_do_pop_object(znode *object TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
482
483
a332f82 andigutmans - Support instantiation of nested class. The following script now should
andigutmans authored
484 void zend_do_begin_new_object(znode *new_token, znode *class_type TSRMLS_DC);
485 void zend_do_end_new_object(znode *result, znode *new_token, znode *argument_list TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
486
f32ffe9 Namespaces
Dmitry Stogov authored
487 void zend_do_fetch_constant(znode *result, znode *constant_container, znode *constant_name, int mode, zend_bool check_namespace TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
488
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
489 void zend_do_shell_exec(znode *result, znode *cmd TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
490
51e797f some type cleanup work
Harald Radi authored
491 void zend_do_init_array(znode *result, znode *expr, znode *offset, zend_bool is_ref TSRMLS_DC);
492 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
493 void zend_do_add_static_array_element(znode *result, znode *offset, znode *expr);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
494 void zend_do_list_init(TSRMLS_D);
495 void zend_do_list_end(znode *result, znode *expr TSRMLS_DC);
496 void zend_do_add_list_element(znode *element TSRMLS_DC);
497 void zend_do_new_list_begin(TSRMLS_D);
498 void zend_do_new_list_end(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
499
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
500 void zend_do_cast(znode *result, znode *expr, int type TSRMLS_DC);
501 void zend_do_include_or_eval(int type, znode *result, znode *op1 TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
502
7b68f51 andigutmans - Nuke delete(). It was a big mistake to introduce it and I finally
andigutmans authored
503 void zend_do_unset(znode *variable TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
504 void zend_do_isset_or_isempty(int type, znode *result, znode *variable TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
505
c073b76 andigutmans - Change "is" to "instanceof" as it explains better what the operator me...
andigutmans authored
506 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
507
e470e22 - Fixed bug #35106 (nested foreach fails when array variable has a refer...
Dmitry Stogov authored
508 void zend_do_foreach_begin(znode *foreach_token, znode *open_brackets_token, znode *array, znode *as_token, int variable TSRMLS_DC);
509 void zend_do_foreach_cont(znode *foreach_token, znode *open_brackets_token, znode *as_token, znode *value, znode *key TSRMLS_DC);
a29f539 - Cleanup foreach handling
Marcus Boerger authored
510 void zend_do_foreach_end(znode *foreach_token, znode *as_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
511
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
512 void zend_do_declare_begin(TSRMLS_D);
513 void zend_do_declare_stmt(znode *var, znode *val TSRMLS_DC);
b806a8e MFZE1 (use token instead of global for opcode counting)
Jason Greene authored
514 void zend_do_declare_end(znode *declare_token TSRMLS_DC);
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
515
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
516 void zend_do_exit(znode *result, znode *message TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
517
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
518 void zend_do_begin_silence(znode *strudel_token TSRMLS_DC);
519 void zend_do_end_silence(znode *strudel_token TSRMLS_DC);
45f6b4c Johannes Schlüter - MFH Improved version of ternary shortcut (Marcus)
johannes authored
520
521 void zend_do_jmp_set(znode *value, znode *jmp_token, znode *colon_token TSRMLS_DC);
522 void zend_do_jmp_set_else(znode *result, znode *false_value, znode *jmp_token, znode *colon_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
523
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
524 void zend_do_begin_qm_op(znode *cond, znode *qm_token TSRMLS_DC);
525 void zend_do_qm_true(znode *true_value, znode *qm_token, znode *colon_token TSRMLS_DC);
526 void zend_do_qm_false(znode *result, znode *false_value, znode *qm_token, znode *colon_token TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
527
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
528 void zend_do_extended_info(TSRMLS_D);
529 void zend_do_extended_fcall_begin(TSRMLS_D);
530 void zend_do_extended_fcall_end(TSRMLS_D);
573b460 andigutmans Zend Library
andigutmans authored
531
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
532 void zend_do_ticks(TSRMLS_D);
fafbf6d Zeev Suraski - Implement declare() with declarables framework
zsuraski authored
533
2814504 Zeev Suraski Improve parser handling of 'abstract'
zsuraski authored
534 void zend_do_abstract_method(znode *function_name, znode *modifiers, znode *body TSRMLS_DC);
227f783 andigutmans - Fix build (thanks Marcus)
andigutmans authored
535
f32ffe9 Namespaces
Dmitry Stogov authored
536 void zend_do_declare_constant(znode *name, znode *value TSRMLS_DC);
537 void zend_do_build_namespace_name(znode *result, znode *prefix, znode *name TSRMLS_DC);
538 void zend_do_namespace(znode *name TSRMLS_DC);
64e8f22 Allowed import of global classes "use ::GlobalClassName;"
Dmitry Stogov authored
539 void zend_do_use(znode *name, znode *new_name, int is_global TSRMLS_DC);
f32ffe9 Namespaces
Dmitry Stogov authored
540 void zend_do_end_compilation(TSRMLS_D);
541
f66f55e Felipe Pena MFH: Implemented "jump label" operator (limited "goto")
felipensp authored
542 void zend_do_label(znode *label TSRMLS_DC);
543 void zend_do_goto(znode *label TSRMLS_DC);
544 void zend_resolve_goto_label(zend_op_array *op_array, zend_op *opline, int pass2 TSRMLS_DC);
545 void zend_release_labels(TSRMLS_D);
546
727398b andigutmans Add to the API
andigutmans authored
547 ZEND_API void function_add_ref(zend_function *function);
0b7a9ce Zeev Suraski - Fix Win32 compilation (Use winsock2.h from now on)
zsuraski authored
548
7c4a083 Zeev Suraski Various thread safety fixes and DLL updates
zsuraski authored
549 #define INITIAL_OP_ARRAY_SIZE 64
550
573b460 andigutmans Zend Library
andigutmans authored
551
7b0d92d Zeev Suraski Unify the names of these last 3 files...
zsuraski authored
552 /* helper functions in zend_language_scanner.l */
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
553 ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSRMLS_DC);
637a404 - MFH as discussed
Marcus Boerger authored
554 ZEND_API zend_op_array *compile_string(zval *source_string, char *filename TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
555 ZEND_API zend_op_array *compile_filename(int type, zval *filename TSRMLS_DC);
819ea51 Zeev Suraski MFZE1
zsuraski authored
556 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
557 ZEND_API int open_file_for_scanning(zend_file_handle *file_handle TSRMLS_DC);
51e797f some type cleanup work
Harald Radi authored
558 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
559 ZEND_API void destroy_op_array(zend_op_array *op_array TSRMLS_DC);
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
560 ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle TSRMLS_DC);
03f88ac Stanislav Malyshev Add additional stage to post-session cleanup.
smalyshev authored
561 ZEND_API int zend_cleanup_class_data(zend_class_entry **pce TSRMLS_DC);
562 ZEND_API int zend_cleanup_function_data(zend_function *function TSRMLS_DC);
ad10a53 Optimized cleanup loops on request shutdown
Dmitry Stogov authored
563 ZEND_API int zend_cleanup_function_data_full(zend_function *function TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
564
3fc8528 Eliminate TSRMLS_FETCH() calls in destroy_op_array() and zend_get_class_...
Sebastian Bergmann authored
565 ZEND_API void destroy_zend_function(zend_function *function TSRMLS_DC);
fb5cb59 Fixed Zend Function Destructor to use correct TSRM handle.
Stefan Esser authored
566 ZEND_API void zend_function_dtor(zend_function *function);
92dd5e6 Stanislav Malyshev - make class tables contain class_entry *, not class_entry
smalyshev authored
567 ZEND_API void destroy_zend_class(zend_class_entry **pce);
c8c629b andigutmans - Fix bug introduced with latest class hash table change.
andigutmans authored
568 void zend_class_add_ref(zend_class_entry **ce);
7c4a083 Zeev Suraski Various thread safety fixes and DLL updates
zsuraski authored
569
6923a16 - Fixed var_export() to show public, protected and private modifiers pro...
Derick Rethans authored
570 ZEND_API void zend_mangle_property_name(char **dest, int *dest_length, char *src1, int src1_length, char *src2, int src2_length, int internal);
519ed8e - Better fix for #34505 and related, drop zend_unmangle_property_name_ex...
Marcus Boerger authored
571 ZEND_API int zend_unmangle_property_name(char *mangled_property, int mangled_property_len, char **prop_name, char **class_name);
471947b Zeev Suraski Reimplement PPP properties
zsuraski authored
572
fb5cb59 Fixed Zend Function Destructor to use correct TSRM handle.
Stefan Esser authored
573 #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
574 #define ZEND_CLASS_DTOR (void (*)(void *)) destroy_zend_class
81d901b Zeev Suraski Step 1 in nuking the garbage collector:
zsuraski authored
575
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
576 zend_op *get_next_op(zend_op_array *op_array TSRMLS_DC);
577 void init_op(zend_op *op TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
578 int get_next_op_number(zend_op_array *op_array);
d76cf1d Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
579 int print_class(zend_class_entry *class_entry TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
580 void print_op_array(zend_op_array *op_array, int optimizations);
d76cf1d Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
581 int pass_two(zend_op_array *op_array TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
582 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
583 void zend_do_first_catch(znode *open_parentheses TSRMLS_DC);
584 void zend_initialize_try_catch_element(znode *try_token TSRMLS_DC);
585 void zend_do_mark_last_catch(znode *first_catch, znode *last_additional_catch TSRMLS_DC);
4187439 Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
586 ZEND_API zend_bool zend_is_compiling(TSRMLS_D);
b577038 Zeev Suraski Avoid TSRMLS_FETCH()'s (still lots of work left)
zsuraski authored
587 ZEND_API char *zend_make_compiled_string_description(char *name TSRMLS_DC);
9c909f4 Sync: Export externally used functions.
Sebastian Bergmann authored
588 ZEND_API void zend_initialize_class_data(zend_class_entry *ce, zend_bool nullify_handlers TSRMLS_DC);
6c810b0 Improved memory usage by movig constants to read only memory. (Dmitry, P...
Dmitry Stogov authored
589 int zend_get_class_fetch_type(const char *class_name, uint class_name_len);
c17c7a2 Zeev Suraski Centralize class initialization
zsuraski authored
590
f7b7800 Zeev Suraski Add infrastructure for JIT initialization of auto globals
zsuraski authored
591 typedef zend_bool (*zend_auto_global_callback)(char *name, uint name_len TSRMLS_DC);
592 typedef struct _zend_auto_global {
593 char *name;
594 uint name_len;
595 zend_auto_global_callback auto_global_callback;
596 zend_bool armed;
597 } zend_auto_global;
573b460 andigutmans Zend Library
andigutmans authored
598
f7b7800 Zeev Suraski Add infrastructure for JIT initialization of auto globals
zsuraski authored
599 void zend_auto_global_dtor(zend_auto_global *auto_global);
170de9b export functions needed by cli
Shane Caraveo authored
600 ZEND_API int zend_register_auto_global(char *name, uint name_len, zend_auto_global_callback auto_global_callback TSRMLS_DC);
601 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
602 ZEND_API int zend_auto_global_disable_jit(char *varname, zend_uint varname_length TSRMLS_DC);
fd597dc Stanislav Malyshev [DOC] Add compile-time __DIR__ constant which implements dirname(__FILE_...
smalyshev authored
603 ZEND_API size_t zend_dirname(char *path, size_t len);
9d11db1 andigutmans - Merge new $_GET, $_POST etc. patch from Engine 1 tree
andigutmans authored
604
b4f3b9d Zeev Suraski Redesigned thread safety mechanism - nua nua
zsuraski authored
605 int zendlex(znode *zendlval TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
606
5ae7fa4 add markers that make this file easy to parse for external sources
Sterling Hughes authored
607 /* BEGIN: OPCODES */
f7f5a5e Stanislav Malyshev MEGA-patch: namespaces are R.I.P.
smalyshev authored
608
a904c1d andigutmans - Improve comments, docs, code...
andigutmans authored
609 #include "zend_vm_opcodes.h"
a4c3b2c Stanislav Malyshev Namespace patch. Big changes:
smalyshev authored
610
a904c1d andigutmans - Improve comments, docs, code...
andigutmans authored
611 #define ZEND_OP_DATA 137
9e60cb5 Zeev Suraski Rewrote exception support. Fixes a few limitations and bugs in the old
zsuraski authored
612
5ae7fa4 add markers that make this file easy to parse for external sources
Sterling Hughes authored
613 /* END: OPCODES */
573b460 andigutmans Zend Library
andigutmans authored
614
615
616
617
618 /* global/local fetches */
d2da63f andigutmans - Support static members. The following script works:
andigutmans authored
619 #define ZEND_FETCH_GLOBAL 0
620 #define ZEND_FETCH_LOCAL 1
621 #define ZEND_FETCH_STATIC 2
622 #define ZEND_FETCH_STATIC_MEMBER 3
d5ef2f4 Added support for lambda functions and closures
Dmitry Stogov authored
623 #define ZEND_FETCH_GLOBAL_LOCK 4
624 #define ZEND_FETCH_LEXICAL 5
573b460 andigutmans Zend Library
andigutmans authored
625
68fa4e5 Zeev Suraski Get rid of an opcode
zsuraski authored
626
74efc41 andigutmans - Make classes have scope and function/constant lookups default to the c...
andigutmans authored
627 /* class fetches */
628 #define ZEND_FETCH_CLASS_DEFAULT 0
629 #define ZEND_FETCH_CLASS_SELF 1
b3fd2fa andigutmans - Support parent:: again
andigutmans authored
630 #define ZEND_FETCH_CLASS_PARENT 2
631 #define ZEND_FETCH_CLASS_MAIN 3
a4c3b2c Stanislav Malyshev Namespace patch. Big changes:
smalyshev authored
632 #define ZEND_FETCH_CLASS_GLOBAL 4
9d7122f Zeev Suraski Generalize fetch_class
zsuraski authored
633 #define ZEND_FETCH_CLASS_AUTO 5
12b66c2 Fixed bug #30519 (Interface not existing says Class not found)
Dmitry Stogov authored
634 #define ZEND_FETCH_CLASS_INTERFACE 6
166266d Added support for Late Static Binding. (Dmitry, Etienne Kneuss)
Dmitry Stogov authored
635 #define ZEND_FETCH_CLASS_STATIC 7
eb0c56a Fixed bug #42820 (defined() on constant with namespace prefixes tries to...
Dmitry Stogov authored
636 #define ZEND_FETCH_CLASS_MASK 0x0f
f32ffe9 Namespaces
Dmitry Stogov authored
637 #define ZEND_FETCH_CLASS_RT_NS_CHECK 0x20
638 #define ZEND_FETCH_CLASS_RT_NS_NAME 0x40
9305339 Changed "instanceof" and "catch" operators, is_a() and is_subclass_of() ...
Dmitry Stogov authored
639 #define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
eb0c56a Fixed bug #42820 (defined() on constant with namespace prefixes tries to...
Dmitry Stogov authored
640 #define ZEND_FETCH_CLASS_SILENT 0x0100
74efc41 andigutmans - Make classes have scope and function/constant lookups default to the c...
andigutmans authored
641
880e7d8 andigutmans - Framework for knowing what kind of variable we just parsed.
andigutmans authored
642 /* variable parsing type (compile-time) */
03b6af0 Zeev Suraski Support references in foreach()
zsuraski authored
643 #define ZEND_PARSED_MEMBER (1<<0)
644 #define ZEND_PARSED_METHOD_CALL (1<<1)
645 #define ZEND_PARSED_STATIC_MEMBER (1<<2)
646 #define ZEND_PARSED_FUNCTION_CALL (1<<3)
647 #define ZEND_PARSED_VARIABLE (1<<4)
648 #define ZEND_PARSED_REFERENCE_VARIABLE (1<<5)
44325e6 Fixed bug #45178 (memory corruption on assignment result of "new" by ref...
Dmitry Stogov authored
649 #define ZEND_PARSED_NEW (1<<6)
880e7d8 andigutmans - Framework for knowing what kind of variable we just parsed.
andigutmans authored
650
651
5af7770 andigutmans - Sync Engine2 CVS with latest Engine CVS
andigutmans authored
652 /* unset types */
653 #define ZEND_UNSET_REG 0
654
573b460 andigutmans Zend Library
andigutmans authored
655 /* var status for backpatching */
06d04d1 andigutmans - Fix SEND_VAR problem after fetch'ing a variable and not knowing the fe...
andigutmans authored
656 #define BP_VAR_R 0
657 #define BP_VAR_W 1
658 #define BP_VAR_RW 2
659 #define BP_VAR_IS 3
660 #define BP_VAR_NA 4 /* if not applicable */
661 #define BP_VAR_FUNC_ARG 5
7fa17e8 andigutmans - Put in the infrastructure for the unset() fix. Right now it has the ol...
andigutmans authored
662 #define BP_VAR_UNSET 6
573b460 andigutmans Zend Library
andigutmans authored
663
664
49c4866 Zeev Suraski - Improve tracking
zsuraski authored
665 #define ZEND_INTERNAL_FUNCTION 1
666 #define ZEND_USER_FUNCTION 2
667 #define ZEND_OVERLOADED_FUNCTION 3
668 #define ZEND_EVAL_CODE 4
669 #define ZEND_OVERLOADED_FUNCTION_TEMPORARY 5
573b460 andigutmans Zend Library
andigutmans authored
670
62f9eb8 Split ZEND_NAMESPACE into user and internal namespaces. Hope this is
Andrei Zmievski authored
671 #define ZEND_INTERNAL_CLASS 1
672 #define ZEND_USER_CLASS 2
573b460 andigutmans Zend Library
andigutmans authored
673
674 #define ZEND_EVAL (1<<0)
675 #define ZEND_INCLUDE (1<<1)
9cc7044 andigutmans - Cleanup old IMPORT stuff
andigutmans authored
676 #define ZEND_INCLUDE_ONCE (1<<2)
67b4b3a Zeev Suraski - require() of a dynamic expression now has the standard require() seman...
zsuraski authored
677 #define ZEND_REQUIRE (1<<3)
c06692e Zeev Suraski The patch we promised - redesigned the compilation/execution API:
zsuraski authored
678 #define ZEND_REQUIRE_ONCE (1<<4)
573b460 andigutmans Zend Library
andigutmans authored
679
680 #define ZEND_ISSET (1<<0)
681 #define ZEND_ISEMPTY (1<<1)
af1ed80 Fixed bug #44952 (isset() does not checks correctly variable variable)
Dmitry Stogov authored
682 #define ZEND_ISSET_ISEMPTY_MASK (ZEND_ISSET | ZEND_ISEMPTY)
683 #define ZEND_QUICK_SET (1<<2)
573b460 andigutmans Zend Library
andigutmans authored
684
685 #define ZEND_CT (1<<0)
686 #define ZEND_RT (1<<1)
687
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
688 #define ZEND_FETCH_STANDARD 0
1530fe9 Fixed variations of bug #35163
Dmitry Stogov authored
689 #define ZEND_FETCH_ADD_LOCK (1<<0)
690 #define ZEND_FETCH_MAKE_REF (1<<1)
1250c43 Zeev Suraski * Add struct name to all typedef's so that they can be debugged with MSV...
zsuraski authored
691
993f70c andigutmans - Don't use magic numbers
andigutmans authored
692 #define ZEND_FE_FETCH_BYREF 1
693 #define ZEND_FE_FETCH_WITH_KEY 2
694
7a5240e - MFH missing bits and pieces of the partial sync with head
Marcus Boerger authored
695 #define ZEND_FE_RESET_VARIABLE 1
696 #define ZEND_FE_RESET_REFERENCE 2
697
741b816 Zeev Suraski * Support getThis() for internal functions.
zsuraski authored
698 #define ZEND_MEMBER_FUNC_CALL 1<<0
699
8d90825 andigutmans - Allow passing references which are returned from functions and new
andigutmans authored
700 #define ZEND_ARG_SEND_BY_REF (1<<0)
701 #define ZEND_ARG_COMPILE_TIME_BOUND (1<<1)
21e071b Fixed bug #33257 (array_splice() inconsistent when passed function inste...
Dmitry Stogov authored
702 #define ZEND_ARG_SEND_FUNCTION (1<<2)
6ec1acb Zeev Suraski Phase 3:
zsuraski authored
703
ebd4ab4 Fixed bug #25359 (array_multisort() doesn't work in a function if array ...
Dmitry Stogov authored
704 #define ZEND_SEND_BY_VAL 0
705 #define ZEND_SEND_BY_REF 1
706 #define ZEND_SEND_PREFER_REF 2
707
c3272ab Fixed bug #38808 ("maybe ref" issue for current() and others)
Dmitry Stogov authored
708 #define ARG_SEND_TYPE(zf, arg_num) \
709 ((zf) ? \
710 ((((zend_function*)(zf))->common.arg_info && \
711 arg_num<=((zend_function*)(zf))->common.num_args) ? \
712 ((zend_function *)(zf))->common.arg_info[arg_num-1].pass_by_reference : \
713 ((zend_function *)(zf))->common.pass_rest_by_reference) : \
714 ZEND_SEND_BY_VAL)
715
716 #define ARG_MUST_BE_SENT_BY_REF(zf, arg_num) \
717 (ARG_SEND_TYPE(zf, arg_num) == ZEND_SEND_BY_REF)
718
719 #define ARG_SHOULD_BE_SENT_BY_REF(zf, arg_num) \
720 (ARG_SEND_TYPE(zf, arg_num) & (ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF))
721
722 #define ARG_MAY_BE_SENT_BY_REF(zf, arg_num) \
723 (ARG_SEND_TYPE(zf, arg_num) == ZEND_SEND_PREFER_REF)
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
724
ced9cee Zeev Suraski - Implement return by reference:
zsuraski authored
725 #define ZEND_RETURN_VAL 0
726 #define ZEND_RETURN_REF 1
727
3a42bab Zeev Suraski Fix behavior of return-by-reference functions. Remove erroneous warning...
zsuraski authored
728
729 #define ZEND_RETURNS_FUNCTION 1<<0
44325e6 Fixed bug #45178 (memory corruption on assignment result of "new" by ref...
Dmitry Stogov authored
730 #define ZEND_RETURNS_NEW 1<<1
3a42bab Zeev Suraski Fix behavior of return-by-reference functions. Remove erroneous warning...
zsuraski authored
731
ad115d2 Zeev Suraski Fix require()
zsuraski authored
732 END_EXTERN_C()
733
d8651c8 Stanislav Malyshev Support for __get, __set and __call in classes.
smalyshev authored
734 #define ZEND_CLONE_FUNC_NAME "__clone"
735 #define ZEND_CONSTRUCTOR_FUNC_NAME "__construct"
736 #define ZEND_DESTRUCTOR_FUNC_NAME "__destruct"
737 #define ZEND_GET_FUNC_NAME "__get"
738 #define ZEND_SET_FUNC_NAME "__set"
637a404 - MFH as discussed
Marcus Boerger authored
739 #define ZEND_UNSET_FUNC_NAME "__unset"
740 #define ZEND_ISSET_FUNC_NAME "__isset"
d8651c8 Stanislav Malyshev Support for __get, __set and __call in classes.
smalyshev authored
741 #define ZEND_CALL_FUNC_NAME "__call"
b20ed0d Added support for __callstatic() magic method. (Sara)
Dmitry Stogov authored
742 #define ZEND_CALLSTATIC_FUNC_NAME "__callstatic"
637a404 - MFH as discussed
Marcus Boerger authored
743 #define ZEND_TOSTRING_FUNC_NAME "__tostring"
5f0433d MFB: Enforce protocol on magic methods/functions
Marcus Boerger authored
744 #define ZEND_AUTOLOAD_FUNC_NAME "__autoload"
d8651c8 Stanislav Malyshev Support for __get, __set and __call in classes.
smalyshev authored
745
8c885b8 Implemented concept of "delayed early binding" that allows opcode caches...
Dmitry Stogov authored
746 /* The following constants may be combined in CG(compiler_options)
747 * to change the default compiler behavior */
748
749 /* generate extended debug information */
750 #define ZEND_COMPILE_EXTENDED_INFO (1<<0)
751
752 /* call op_array handler of extendions */
753 #define ZEND_COMPILE_HANDLE_OP_ARRAY (1<<1)
754
755 /* generate ZEND_DO_FCALL_BY_NAME for internal functions instead of ZEND_DO_FCALL */
756 #define ZEND_COMPILE_IGNORE_INTERNAL_FUNCTIONS (1<<2)
757
758 /* don't perform early binding for classes inherited form internal ones;
759 * in namespaces assume that internal class that doesn't exist at compile-time
760 * may apper in run-time */
761 #define ZEND_COMPILE_IGNORE_INTERNAL_CLASSES (1<<3)
762
763 /* generate ZEND_DECLARE_INHERITED_CLASS_DELAYED opcode to delay early binding */
764 #define ZEND_COMPILE_DELAYED_BINDING (1<<4)
765
ed2d3e4 Substitute persistent constants by their values at compile time. (Matt)
Dmitry Stogov authored
766 /* disable constant substitution at compile-time */
767 #define ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION (1<<5)
768
8c885b8 Implemented concept of "delayed early binding" that allows opcode caches...
Dmitry Stogov authored
769 /* The default value for CG(compiler_options) */
770 #define ZEND_COMPILE_DEFAULT ZEND_COMPILE_HANDLE_OP_ARRAY
771
772 /* The default value for CG(compiler_options) during eval() */
773 #define ZEND_COMPILE_DEFAULT_FOR_EVAL 0
774
a617217 Replace macros which begin with an underscore through an appropiately
Sascha Schumann authored
775 #endif /* ZEND_COMPILE_H */
333406b - Added some missing CVS $Id$ tags, headers and footers.
foobar authored
776
777 /*
778 * Local variables:
779 * tab-width: 4
780 * c-basic-offset: 4
781 * indent-tabs-mode: t
782 * End:
783 */
Something went wrong with that request. Please try again.