Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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