Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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