Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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