/src/php-src/Zend/zend_compile.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | +----------------------------------------------------------------------+ |
3 | | | Zend Engine | |
4 | | +----------------------------------------------------------------------+ |
5 | | | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | |
6 | | +----------------------------------------------------------------------+ |
7 | | | This source file is subject to version 2.00 of the Zend license, | |
8 | | | that is bundled with this package in the file LICENSE, and is | |
9 | | | available through the world-wide-web at the following url: | |
10 | | | http://www.zend.com/license/2_00.txt. | |
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. | |
14 | | +----------------------------------------------------------------------+ |
15 | | | Authors: Andi Gutmans <andi@php.net> | |
16 | | | Zeev Suraski <zeev@php.net> | |
17 | | +----------------------------------------------------------------------+ |
18 | | */ |
19 | | |
20 | | #ifndef ZEND_COMPILE_H |
21 | | #define ZEND_COMPILE_H |
22 | | |
23 | | #include "zend_ast.h" |
24 | | #include "zend_types.h" |
25 | | #include "zend_map_ptr.h" |
26 | | #include "zend_alloc.h" |
27 | | |
28 | | #include <stdarg.h> |
29 | | #include <stdint.h> |
30 | | |
31 | | #include "zend_llist.h" |
32 | | #include "zend_frameless_function.h" |
33 | | #include "zend_property_hooks.h" |
34 | | |
35 | 21.7M | #define SET_UNUSED(op) do { \ |
36 | 21.7M | op ## _type = IS_UNUSED; \ |
37 | 21.7M | op.num = (uint32_t) -1; \ |
38 | 21.7M | } while (0) |
39 | | |
40 | 7.08M | #define MAKE_NOP(opline) do { \ |
41 | 7.08M | (opline)->opcode = ZEND_NOP; \ |
42 | 7.08M | SET_UNUSED((opline)->op1); \ |
43 | 7.08M | SET_UNUSED((opline)->op2); \ |
44 | 7.08M | SET_UNUSED((opline)->result); \ |
45 | 7.08M | } while (0) |
46 | | |
47 | 1.26M | #define RESET_DOC_COMMENT() do { \ |
48 | 1.26M | if (CG(doc_comment)) { \ |
49 | 8.50k | zend_string_release_ex(CG(doc_comment), 0); \ |
50 | 8.50k | CG(doc_comment) = NULL; \ |
51 | 8.50k | } \ |
52 | 1.26M | } while (0) |
53 | | |
54 | | typedef struct _zend_op_array zend_op_array; |
55 | | typedef struct _zend_op zend_op; |
56 | | |
57 | | /* On 64-bit systems less optimal, but more compact VM code leads to better |
58 | | * performance. So on 32-bit systems we use absolute addresses for jump |
59 | | * targets and constants, but on 64-bit systems relative 32-bit offsets */ |
60 | | #if SIZEOF_SIZE_T == 4 |
61 | | # define ZEND_USE_ABS_JMP_ADDR 1 |
62 | | # define ZEND_USE_ABS_CONST_ADDR 1 |
63 | | #else |
64 | | # define ZEND_USE_ABS_JMP_ADDR 0 |
65 | 153k | # define ZEND_USE_ABS_CONST_ADDR 0 |
66 | | #endif |
67 | | |
68 | | typedef union _znode_op { |
69 | | uint32_t constant; |
70 | | uint32_t var; |
71 | | uint32_t num; |
72 | | uint32_t opline_num; /* Needs to be signed */ |
73 | | #if ZEND_USE_ABS_JMP_ADDR |
74 | | zend_op *jmp_addr; |
75 | | #else |
76 | | uint32_t jmp_offset; |
77 | | #endif |
78 | | #if ZEND_USE_ABS_CONST_ADDR |
79 | | zval *zv; |
80 | | #endif |
81 | | } znode_op; |
82 | | |
83 | | typedef struct _znode { /* used only during compilation */ |
84 | | uint8_t op_type; |
85 | | uint8_t flag; |
86 | | union { |
87 | | znode_op op; |
88 | | zval constant; /* replaced by literal/zv */ |
89 | | } u; |
90 | | } znode; |
91 | | |
92 | | typedef struct _zend_ast_znode { |
93 | | zend_ast_kind kind; |
94 | | zend_ast_attr attr; |
95 | | uint32_t lineno; |
96 | | znode node; |
97 | | } zend_ast_znode; |
98 | | |
99 | | ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_znode(znode *node); |
100 | | |
101 | 15.7k | static zend_always_inline znode *zend_ast_get_znode(zend_ast *ast) { |
102 | 15.7k | return &((zend_ast_znode *) ast)->node; |
103 | 15.7k | } Unexecuted instantiation: php_date.c:zend_ast_get_znode Unexecuted instantiation: php_pcre.c:zend_ast_get_znode Unexecuted instantiation: exif.c:zend_ast_get_znode Unexecuted instantiation: hash_adler32.c:zend_ast_get_znode Unexecuted instantiation: hash_crc32.c:zend_ast_get_znode Unexecuted instantiation: hash_fnv.c:zend_ast_get_znode Unexecuted instantiation: hash_gost.c:zend_ast_get_znode Unexecuted instantiation: hash_haval.c:zend_ast_get_znode Unexecuted instantiation: hash_joaat.c:zend_ast_get_znode Unexecuted instantiation: hash_md.c:zend_ast_get_znode Unexecuted instantiation: hash_murmur.c:zend_ast_get_znode Unexecuted instantiation: hash_ripemd.c:zend_ast_get_znode Unexecuted instantiation: hash_sha_ni.c:zend_ast_get_znode Unexecuted instantiation: hash_sha_sse2.c:zend_ast_get_znode Unexecuted instantiation: hash_sha.c:zend_ast_get_znode Unexecuted instantiation: hash_sha3.c:zend_ast_get_znode Unexecuted instantiation: hash_snefru.c:zend_ast_get_znode Unexecuted instantiation: hash_tiger.c:zend_ast_get_znode Unexecuted instantiation: hash_whirlpool.c:zend_ast_get_znode Unexecuted instantiation: hash_xxhash.c:zend_ast_get_znode Unexecuted instantiation: hash.c:zend_ast_get_znode Unexecuted instantiation: json_encoder.c:zend_ast_get_znode Unexecuted instantiation: json_parser.tab.c:zend_ast_get_znode Unexecuted instantiation: json_scanner.c:zend_ast_get_znode Unexecuted instantiation: json.c:zend_ast_get_znode Unexecuted instantiation: php_lexbor.c:zend_ast_get_znode Unexecuted instantiation: csprng.c:zend_ast_get_znode Unexecuted instantiation: engine_mt19937.c:zend_ast_get_znode Unexecuted instantiation: engine_pcgoneseq128xslrr64.c:zend_ast_get_znode Unexecuted instantiation: engine_secure.c:zend_ast_get_znode Unexecuted instantiation: engine_user.c:zend_ast_get_znode Unexecuted instantiation: engine_xoshiro256starstar.c:zend_ast_get_znode Unexecuted instantiation: gammasection.c:zend_ast_get_znode Unexecuted instantiation: random.c:zend_ast_get_znode Unexecuted instantiation: randomizer.c:zend_ast_get_znode Unexecuted instantiation: zend_utils.c:zend_ast_get_znode Unexecuted instantiation: php_reflection.c:zend_ast_get_znode Unexecuted instantiation: php_spl.c:zend_ast_get_znode Unexecuted instantiation: spl_array.c:zend_ast_get_znode Unexecuted instantiation: spl_directory.c:zend_ast_get_znode Unexecuted instantiation: spl_dllist.c:zend_ast_get_znode Unexecuted instantiation: spl_exceptions.c:zend_ast_get_znode Unexecuted instantiation: spl_fixedarray.c:zend_ast_get_znode Unexecuted instantiation: spl_functions.c:zend_ast_get_znode Unexecuted instantiation: spl_heap.c:zend_ast_get_znode Unexecuted instantiation: spl_iterators.c:zend_ast_get_znode Unexecuted instantiation: spl_observer.c:zend_ast_get_znode Unexecuted instantiation: array.c:zend_ast_get_znode Unexecuted instantiation: assert.c:zend_ast_get_znode Unexecuted instantiation: base64.c:zend_ast_get_znode Unexecuted instantiation: basic_functions.c:zend_ast_get_znode Unexecuted instantiation: browscap.c:zend_ast_get_znode Unexecuted instantiation: crc32_x86.c:zend_ast_get_znode Unexecuted instantiation: crc32.c:zend_ast_get_znode Unexecuted instantiation: credits.c:zend_ast_get_znode Unexecuted instantiation: crypt.c:zend_ast_get_znode Unexecuted instantiation: css.c:zend_ast_get_znode Unexecuted instantiation: datetime.c:zend_ast_get_znode Unexecuted instantiation: dir.c:zend_ast_get_znode Unexecuted instantiation: dl.c:zend_ast_get_znode Unexecuted instantiation: dns.c:zend_ast_get_znode Unexecuted instantiation: exec.c:zend_ast_get_znode Unexecuted instantiation: file.c:zend_ast_get_znode Unexecuted instantiation: filestat.c:zend_ast_get_znode Unexecuted instantiation: filters.c:zend_ast_get_znode Unexecuted instantiation: flock_compat.c:zend_ast_get_znode Unexecuted instantiation: formatted_print.c:zend_ast_get_znode Unexecuted instantiation: fsock.c:zend_ast_get_znode Unexecuted instantiation: ftok.c:zend_ast_get_znode Unexecuted instantiation: ftp_fopen_wrapper.c:zend_ast_get_znode Unexecuted instantiation: head.c:zend_ast_get_znode Unexecuted instantiation: hrtime.c:zend_ast_get_znode Unexecuted instantiation: html.c:zend_ast_get_znode Unexecuted instantiation: http_fopen_wrapper.c:zend_ast_get_znode Unexecuted instantiation: http.c:zend_ast_get_znode Unexecuted instantiation: image.c:zend_ast_get_znode Unexecuted instantiation: incomplete_class.c:zend_ast_get_znode Unexecuted instantiation: info.c:zend_ast_get_znode Unexecuted instantiation: iptc.c:zend_ast_get_znode Unexecuted instantiation: levenshtein.c:zend_ast_get_znode Unexecuted instantiation: link.c:zend_ast_get_znode Unexecuted instantiation: mail.c:zend_ast_get_znode Unexecuted instantiation: math.c:zend_ast_get_znode Unexecuted instantiation: md5.c:zend_ast_get_znode Unexecuted instantiation: metaphone.c:zend_ast_get_znode Unexecuted instantiation: microtime.c:zend_ast_get_znode Unexecuted instantiation: net.c:zend_ast_get_znode Unexecuted instantiation: pack.c:zend_ast_get_znode Unexecuted instantiation: pageinfo.c:zend_ast_get_znode Unexecuted instantiation: password.c:zend_ast_get_znode Unexecuted instantiation: php_fopen_wrapper.c:zend_ast_get_znode Unexecuted instantiation: proc_open.c:zend_ast_get_znode Unexecuted instantiation: quot_print.c:zend_ast_get_znode Unexecuted instantiation: scanf.c:zend_ast_get_znode Unexecuted instantiation: sha1.c:zend_ast_get_znode Unexecuted instantiation: soundex.c:zend_ast_get_znode Unexecuted instantiation: streamsfuncs.c:zend_ast_get_znode Unexecuted instantiation: string.c:zend_ast_get_znode Unexecuted instantiation: strnatcmp.c:zend_ast_get_znode Unexecuted instantiation: syslog.c:zend_ast_get_znode Unexecuted instantiation: type.c:zend_ast_get_znode Unexecuted instantiation: uniqid.c:zend_ast_get_znode Unexecuted instantiation: url_scanner_ex.c:zend_ast_get_znode Unexecuted instantiation: url.c:zend_ast_get_znode Unexecuted instantiation: user_filters.c:zend_ast_get_znode Unexecuted instantiation: uuencode.c:zend_ast_get_znode Unexecuted instantiation: var_unserializer.c:zend_ast_get_znode Unexecuted instantiation: var.c:zend_ast_get_znode Unexecuted instantiation: versioning.c:zend_ast_get_znode Unexecuted instantiation: crypt_sha256.c:zend_ast_get_znode Unexecuted instantiation: crypt_sha512.c:zend_ast_get_znode Unexecuted instantiation: php_crypt_r.c:zend_ast_get_znode Unexecuted instantiation: php_uri.c:zend_ast_get_znode Unexecuted instantiation: php_uri_common.c:zend_ast_get_znode Unexecuted instantiation: explicit_bzero.c:zend_ast_get_znode Unexecuted instantiation: fopen_wrappers.c:zend_ast_get_znode Unexecuted instantiation: getopt.c:zend_ast_get_znode Unexecuted instantiation: main.c:zend_ast_get_znode Unexecuted instantiation: network.c:zend_ast_get_znode Unexecuted instantiation: output.c:zend_ast_get_znode Unexecuted instantiation: php_content_types.c:zend_ast_get_znode Unexecuted instantiation: php_ini_builder.c:zend_ast_get_znode Unexecuted instantiation: php_ini.c:zend_ast_get_znode Unexecuted instantiation: php_glob.c:zend_ast_get_znode Unexecuted instantiation: php_odbc_utils.c:zend_ast_get_znode Unexecuted instantiation: php_open_temporary_file.c:zend_ast_get_znode Unexecuted instantiation: php_scandir.c:zend_ast_get_znode Unexecuted instantiation: php_syslog.c:zend_ast_get_znode Unexecuted instantiation: php_ticks.c:zend_ast_get_znode Unexecuted instantiation: php_variables.c:zend_ast_get_znode Unexecuted instantiation: reentrancy.c:zend_ast_get_znode Unexecuted instantiation: rfc1867.c:zend_ast_get_znode Unexecuted instantiation: safe_bcmp.c:zend_ast_get_znode Unexecuted instantiation: SAPI.c:zend_ast_get_znode Unexecuted instantiation: snprintf.c:zend_ast_get_znode Unexecuted instantiation: spprintf.c:zend_ast_get_znode Unexecuted instantiation: strlcat.c:zend_ast_get_znode Unexecuted instantiation: strlcpy.c:zend_ast_get_znode Unexecuted instantiation: cast.c:zend_ast_get_znode Unexecuted instantiation: filter.c:zend_ast_get_znode Unexecuted instantiation: glob_wrapper.c:zend_ast_get_znode Unexecuted instantiation: memory.c:zend_ast_get_znode Unexecuted instantiation: mmap.c:zend_ast_get_znode Unexecuted instantiation: plain_wrapper.c:zend_ast_get_znode Unexecuted instantiation: streams.c:zend_ast_get_znode Unexecuted instantiation: transports.c:zend_ast_get_znode Unexecuted instantiation: userspace.c:zend_ast_get_znode Unexecuted instantiation: xp_socket.c:zend_ast_get_znode Unexecuted instantiation: block_pass.c:zend_ast_get_znode Unexecuted instantiation: compact_literals.c:zend_ast_get_znode Unexecuted instantiation: compact_vars.c:zend_ast_get_znode Unexecuted instantiation: dce.c:zend_ast_get_znode Unexecuted instantiation: dfa_pass.c:zend_ast_get_znode Unexecuted instantiation: escape_analysis.c:zend_ast_get_znode Unexecuted instantiation: nop_removal.c:zend_ast_get_znode Unexecuted instantiation: optimize_func_calls.c:zend_ast_get_znode Unexecuted instantiation: optimize_temp_vars_5.c:zend_ast_get_znode Unexecuted instantiation: pass1.c:zend_ast_get_znode Unexecuted instantiation: pass3.c:zend_ast_get_znode Unexecuted instantiation: sccp.c:zend_ast_get_znode Unexecuted instantiation: scdf.c:zend_ast_get_znode Unexecuted instantiation: zend_call_graph.c:zend_ast_get_znode Unexecuted instantiation: zend_cfg.c:zend_ast_get_znode Unexecuted instantiation: zend_dfg.c:zend_ast_get_znode Unexecuted instantiation: zend_dump.c:zend_ast_get_znode Unexecuted instantiation: zend_func_info.c:zend_ast_get_znode Unexecuted instantiation: zend_inference.c:zend_ast_get_znode Unexecuted instantiation: zend_optimizer.c:zend_ast_get_znode Unexecuted instantiation: zend_ssa.c:zend_ast_get_znode Unexecuted instantiation: zend_alloc.c:zend_ast_get_znode Unexecuted instantiation: zend_API.c:zend_ast_get_znode Unexecuted instantiation: zend_ast.c:zend_ast_get_znode Unexecuted instantiation: zend_attributes.c:zend_ast_get_znode Unexecuted instantiation: zend_builtin_functions.c:zend_ast_get_znode Unexecuted instantiation: zend_call_stack.c:zend_ast_get_znode Unexecuted instantiation: zend_closures.c:zend_ast_get_znode zend_compile.c:zend_ast_get_znode Line | Count | Source | 101 | 15.7k | static zend_always_inline znode *zend_ast_get_znode(zend_ast *ast) { | 102 | 15.7k | return &((zend_ast_znode *) ast)->node; | 103 | 15.7k | } |
Unexecuted instantiation: zend_constants.c:zend_ast_get_znode Unexecuted instantiation: zend_default_classes.c:zend_ast_get_znode Unexecuted instantiation: zend_dtrace.c:zend_ast_get_znode Unexecuted instantiation: zend_enum.c:zend_ast_get_znode Unexecuted instantiation: zend_exceptions.c:zend_ast_get_znode Unexecuted instantiation: zend_execute_API.c:zend_ast_get_znode Unexecuted instantiation: zend_execute.c:zend_ast_get_znode Unexecuted instantiation: zend_extensions.c:zend_ast_get_znode Unexecuted instantiation: zend_fibers.c:zend_ast_get_znode Unexecuted instantiation: zend_float.c:zend_ast_get_znode Unexecuted instantiation: zend_gc.c:zend_ast_get_znode Unexecuted instantiation: zend_generators.c:zend_ast_get_znode Unexecuted instantiation: zend_hash.c:zend_ast_get_znode Unexecuted instantiation: zend_highlight.c:zend_ast_get_znode Unexecuted instantiation: zend_inheritance.c:zend_ast_get_znode Unexecuted instantiation: zend_ini_parser.c:zend_ast_get_znode Unexecuted instantiation: zend_ini_scanner.c:zend_ast_get_znode Unexecuted instantiation: zend_ini.c:zend_ast_get_znode Unexecuted instantiation: zend_interfaces.c:zend_ast_get_znode Unexecuted instantiation: zend_iterators.c:zend_ast_get_znode Unexecuted instantiation: zend_language_parser.c:zend_ast_get_znode Unexecuted instantiation: zend_language_scanner.c:zend_ast_get_znode Unexecuted instantiation: zend_lazy_objects.c:zend_ast_get_znode Unexecuted instantiation: zend_list.c:zend_ast_get_znode Unexecuted instantiation: zend_multibyte.c:zend_ast_get_znode Unexecuted instantiation: zend_object_handlers.c:zend_ast_get_znode Unexecuted instantiation: zend_objects_API.c:zend_ast_get_znode Unexecuted instantiation: zend_objects.c:zend_ast_get_znode Unexecuted instantiation: zend_observer.c:zend_ast_get_znode Unexecuted instantiation: zend_opcode.c:zend_ast_get_znode Unexecuted instantiation: zend_operators.c:zend_ast_get_znode Unexecuted instantiation: zend_property_hooks.c:zend_ast_get_znode Unexecuted instantiation: zend_signal.c:zend_ast_get_znode Unexecuted instantiation: zend_smart_str.c:zend_ast_get_znode Unexecuted instantiation: zend_stream.c:zend_ast_get_znode Unexecuted instantiation: zend_string.c:zend_ast_get_znode Unexecuted instantiation: zend_strtod.c:zend_ast_get_znode Unexecuted instantiation: zend_system_id.c:zend_ast_get_znode Unexecuted instantiation: zend_variables.c:zend_ast_get_znode Unexecuted instantiation: zend_weakrefs.c:zend_ast_get_znode Unexecuted instantiation: zend.c:zend_ast_get_znode Unexecuted instantiation: internal_functions_cli.c:zend_ast_get_znode Unexecuted instantiation: fuzzer-parser.c:zend_ast_get_znode Unexecuted instantiation: fuzzer-sapi.c:zend_ast_get_znode Unexecuted instantiation: fuzzer-tracing-jit.c:zend_ast_get_znode Unexecuted instantiation: fuzzer-exif.c:zend_ast_get_znode Unexecuted instantiation: fuzzer-unserialize.c:zend_ast_get_znode Unexecuted instantiation: fuzzer-function-jit.c:zend_ast_get_znode Unexecuted instantiation: fuzzer-json.c:zend_ast_get_znode Unexecuted instantiation: fuzzer-unserializehash.c:zend_ast_get_znode Unexecuted instantiation: fuzzer-execute.c:zend_ast_get_znode |
104 | | |
105 | | typedef struct _zend_declarables { |
106 | | zend_long ticks; |
107 | | } zend_declarables; |
108 | | |
109 | | /* Compilation context that is different for each file, but shared between op arrays. */ |
110 | | typedef struct _zend_file_context { |
111 | | zend_declarables declarables; |
112 | | |
113 | | zend_string *current_namespace; |
114 | | bool in_namespace; |
115 | | bool has_bracketed_namespaces; |
116 | | |
117 | | HashTable *imports; |
118 | | HashTable *imports_function; |
119 | | HashTable *imports_const; |
120 | | |
121 | | HashTable seen_symbols; |
122 | | } zend_file_context; |
123 | | |
124 | | typedef union _zend_parser_stack_elem { |
125 | | zend_ast *ast; |
126 | | zend_string *str; |
127 | | zend_ulong num; |
128 | | unsigned char *ptr; |
129 | | unsigned char *ident; |
130 | | } zend_parser_stack_elem; |
131 | | |
132 | | void zend_compile_top_stmt(zend_ast *ast); |
133 | | void zend_const_expr_to_zval(zval *result, zend_ast **ast_ptr, bool allow_dynamic); |
134 | | |
135 | | typedef int (*user_opcode_handler_t) (zend_execute_data *execute_data); |
136 | | |
137 | | struct _zend_op { |
138 | | const void *handler; |
139 | | znode_op op1; |
140 | | znode_op op2; |
141 | | znode_op result; |
142 | | uint32_t extended_value; |
143 | | uint32_t lineno; |
144 | | uint8_t opcode; /* Opcodes defined in Zend/zend_vm_opcodes.h */ |
145 | | uint8_t op1_type; /* IS_UNUSED, IS_CONST, IS_TMP_VAR, IS_VAR, IS_CV */ |
146 | | uint8_t op2_type; /* IS_UNUSED, IS_CONST, IS_TMP_VAR, IS_VAR, IS_CV */ |
147 | | uint8_t result_type; /* IS_UNUSED, IS_CONST, IS_TMP_VAR, IS_VAR, IS_CV */ |
148 | | #ifdef ZEND_VERIFY_TYPE_INFERENCE |
149 | | uint32_t op1_use_type; |
150 | | uint32_t op2_use_type; |
151 | | uint32_t result_use_type; |
152 | | uint32_t op1_def_type; |
153 | | uint32_t op2_def_type; |
154 | | uint32_t result_def_type; |
155 | | #endif |
156 | | }; |
157 | | |
158 | | |
159 | | typedef struct _zend_brk_cont_element { |
160 | | int start; |
161 | | int cont; |
162 | | int brk; |
163 | | int parent; |
164 | | bool is_switch; |
165 | | } zend_brk_cont_element; |
166 | | |
167 | | typedef struct _zend_label { |
168 | | int brk_cont; |
169 | | uint32_t opline_num; |
170 | | } zend_label; |
171 | | |
172 | | typedef struct _zend_try_catch_element { |
173 | | uint32_t try_op; |
174 | | uint32_t catch_op; /* ketchup! */ |
175 | | uint32_t finally_op; |
176 | | uint32_t finally_end; |
177 | | } zend_try_catch_element; |
178 | | |
179 | 918k | #define ZEND_LIVE_TMPVAR 0 |
180 | 37.3k | #define ZEND_LIVE_LOOP 1 |
181 | 911k | #define ZEND_LIVE_SILENCE 2 |
182 | 61.1k | #define ZEND_LIVE_ROPE 3 |
183 | 760k | #define ZEND_LIVE_NEW 4 |
184 | 1.21M | #define ZEND_LIVE_MASK 7 |
185 | | |
186 | | typedef struct _zend_live_range { |
187 | | uint32_t var; /* low bits are used for variable type (ZEND_LIVE_* macros) */ |
188 | | uint32_t start; |
189 | | uint32_t end; |
190 | | } zend_live_range; |
191 | | |
192 | | typedef struct _zend_property_info zend_property_info; |
193 | | |
194 | | /* Compilation context that is different for each op array. */ |
195 | | typedef struct _zend_oparray_context { |
196 | | struct _zend_oparray_context *prev; |
197 | | zend_op_array *op_array; |
198 | | uint32_t opcodes_size; |
199 | | int vars_size; |
200 | | int literals_size; |
201 | | uint32_t fast_call_var; |
202 | | uint32_t try_catch_offset; |
203 | | int current_brk_cont; |
204 | | int last_brk_cont; |
205 | | zend_brk_cont_element *brk_cont_array; |
206 | | HashTable *labels; |
207 | | zend_string *active_property_info_name; |
208 | | zend_property_hook_kind active_property_hook_kind; |
209 | | bool in_jmp_frameless_branch; |
210 | | } zend_oparray_context; |
211 | | |
212 | | /* Class, property and method flags class|meth.|prop.|const*/ |
213 | | /* | | | */ |
214 | | /* Common flags | | | */ |
215 | | /* ============ | | | */ |
216 | | /* | | | */ |
217 | | /* Visibility flags (public < protected < private) | | | */ |
218 | 601k | #define ZEND_ACC_PUBLIC (1 << 0) /* | X | X | X */ |
219 | 29.4M | #define ZEND_ACC_PROTECTED (1 << 1) /* | X | X | X */ |
220 | 30.5M | #define ZEND_ACC_PRIVATE (1 << 2) /* | X | X | X */ |
221 | | /* | | | */ |
222 | | /* Property or method overrides private one | | | */ |
223 | 29.7M | #define ZEND_ACC_CHANGED (1 << 3) /* | X | X | */ |
224 | | /* | | | */ |
225 | | /* Static method or property | | | */ |
226 | 1.25M | #define ZEND_ACC_STATIC (1 << 4) /* | X | X | */ |
227 | | /* | | | */ |
228 | | /* Final class or method | | | */ |
229 | 137k | #define ZEND_ACC_FINAL (1 << 5) /* X | X | X | X */ |
230 | | /* | | | */ |
231 | | /* Abstract method | | | */ |
232 | 375k | #define ZEND_ACC_ABSTRACT (1 << 6) /* X | X | X | */ |
233 | 108k | #define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 << 6) /* X | | | */ |
234 | | /* | | | */ |
235 | | /* Readonly property | | | */ |
236 | 262k | #define ZEND_ACC_READONLY (1 << 7) /* | | X | */ |
237 | | /* | | | */ |
238 | | /* Immutable op_array and class_entries | | | */ |
239 | | /* (implemented only for lazy loading of op_arrays) | | | */ |
240 | 201k | #define ZEND_ACC_IMMUTABLE (1 << 7) /* X | X | | */ |
241 | | /* | | | */ |
242 | | /* Function has typed arguments / class has typed props | | | */ |
243 | 2.13M | #define ZEND_ACC_HAS_TYPE_HINTS (1 << 8) /* X | X | | */ |
244 | | /* | | | */ |
245 | | /* Top-level class or function declaration | | | */ |
246 | 66.6k | #define ZEND_ACC_TOP_LEVEL (1 << 9) /* X | X | | */ |
247 | | /* | | | */ |
248 | | /* op_array or class is preloaded | | | */ |
249 | 90.0k | #define ZEND_ACC_PRELOADED (1 << 10) /* X | X | | */ |
250 | | /* | | | */ |
251 | | /* Flag to differentiate cases from constants. | | | */ |
252 | | /* Must not conflict with ZEND_ACC_ visibility flags | | | */ |
253 | | /* or IS_CONSTANT_VISITED_MARK | | | */ |
254 | 4.09k | #define ZEND_CLASS_CONST_IS_CASE (1 << 6) /* | | | X */ |
255 | | /* | | | */ |
256 | | /* Property Flags (unused: 13...) | | | */ |
257 | | /* =========== | | | */ |
258 | | /* | | | */ |
259 | | /* Promoted property / parameter | | | */ |
260 | 830 | #define ZEND_ACC_PROMOTED (1 << 8) /* | | X | */ |
261 | | /* | | | */ |
262 | | /* Virtual property without backing storage | | | */ |
263 | 302k | #define ZEND_ACC_VIRTUAL (1 << 9) /* | | X | */ |
264 | | /* | | | */ |
265 | | /* Asymmetric visibility | | | */ |
266 | 195k | #define ZEND_ACC_PUBLIC_SET (1 << 10) /* | | X | */ |
267 | 202k | #define ZEND_ACC_PROTECTED_SET (1 << 11) /* | | X | */ |
268 | 196k | #define ZEND_ACC_PRIVATE_SET (1 << 12) /* | | X | */ |
269 | | /* | | | */ |
270 | | /* Class Flags (unused: 30,31) | | | */ |
271 | | /* =========== | | | */ |
272 | | /* | | | */ |
273 | | /* Special class types | | | */ |
274 | 30.9M | #define ZEND_ACC_INTERFACE (1 << 0) /* X | | | */ |
275 | 235k | #define ZEND_ACC_TRAIT (1 << 1) /* X | | | */ |
276 | 971k | #define ZEND_ACC_ANON_CLASS (1 << 2) /* X | | | */ |
277 | 215k | #define ZEND_ACC_ENUM (1 << 28) /* X | | | */ |
278 | | /* | | | */ |
279 | | /* Class linked with parent, interfaces and traits | | | */ |
280 | 967k | #define ZEND_ACC_LINKED (1 << 3) /* X | | | */ |
281 | | /* | | | */ |
282 | | /* Class is abstract, since it is set by any | | | */ |
283 | | /* abstract method | | | */ |
284 | 166k | #define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 << 4) /* X | | | */ |
285 | | /* | | | */ |
286 | | /* Class has magic methods __get/__set/__unset/ | | | */ |
287 | | /* __isset that use guards | | | */ |
288 | 5.40M | #define ZEND_ACC_USE_GUARDS (1 << 11) /* X | | | */ |
289 | | /* | | | */ |
290 | | /* Class constants updated | | | */ |
291 | 82.6k | #define ZEND_ACC_CONSTANTS_UPDATED (1 << 12) /* X | | | */ |
292 | | /* | | | */ |
293 | | /* Objects of this class may not have dynamic properties | | | */ |
294 | 6.71k | #define ZEND_ACC_NO_DYNAMIC_PROPERTIES (1 << 13) /* X | | | */ |
295 | | /* | | | */ |
296 | | /* User class has methods with static variables | | | */ |
297 | 48.7M | #define ZEND_HAS_STATIC_IN_METHODS (1 << 14) /* X | | | */ |
298 | | /* | | | */ |
299 | | /* Objects of this class may have dynamic properties | | | */ |
300 | | /* without triggering a deprecation warning | | | */ |
301 | 1.16M | #define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X | | | */ |
302 | | /* | | | */ |
303 | | /* Readonly class | | | */ |
304 | 31.5k | #define ZEND_ACC_READONLY_CLASS (1 << 16) /* X | | | */ |
305 | | /* | | | */ |
306 | | /* Parent class is resolved (CE). | | | */ |
307 | 21.7k | #define ZEND_ACC_RESOLVED_PARENT (1 << 17) /* X | | | */ |
308 | | /* | | | */ |
309 | | /* Interfaces are resolved (CEs). | | | */ |
310 | 23.1k | #define ZEND_ACC_RESOLVED_INTERFACES (1 << 18) /* X | | | */ |
311 | | /* | | | */ |
312 | | /* Class has unresolved variance obligations. | | | */ |
313 | 6.46k | #define ZEND_ACC_UNRESOLVED_VARIANCE (1 << 19) /* X | | | */ |
314 | | /* | | | */ |
315 | | /* Class is linked apart from variance obligations. | | | */ |
316 | 884 | #define ZEND_ACC_NEARLY_LINKED (1 << 20) /* X | | | */ |
317 | | /* Class has readonly props | | | */ |
318 | 15.8k | #define ZEND_ACC_HAS_READONLY_PROPS (1 << 21) /* X | | | */ |
319 | | /* | | | */ |
320 | | /* stored in opcache (may be partially) | | | */ |
321 | 38.2k | #define ZEND_ACC_CACHED (1 << 22) /* X | | | */ |
322 | | /* | | | */ |
323 | | /* temporary flag used during delayed variance checks | | | */ |
324 | 1.14k | #define ZEND_ACC_CACHEABLE (1 << 23) /* X | | | */ |
325 | | /* | | | */ |
326 | 10.8k | #define ZEND_ACC_HAS_AST_CONSTANTS (1 << 24) /* X | | | */ |
327 | 1.31M | #define ZEND_ACC_HAS_AST_PROPERTIES (1 << 25) /* X | | | */ |
328 | 2.13k | #define ZEND_ACC_HAS_AST_STATICS (1 << 26) /* X | | | */ |
329 | | /* | | | */ |
330 | | /* loaded from file cache to process memory | | | */ |
331 | 44.7k | #define ZEND_ACC_FILE_CACHED (1 << 27) /* X | | | */ |
332 | | /* | | | */ |
333 | | /* Class cannot be serialized or unserialized | | | */ |
334 | 1.12M | #define ZEND_ACC_NOT_SERIALIZABLE (1 << 29) /* X | | | */ |
335 | | /* | | | */ |
336 | | /* Function Flags (unused: 30) | | | */ |
337 | | /* ============== | | | */ |
338 | | /* | | | */ |
339 | | /* deprecation flag | | | */ |
340 | 93.5k | #define ZEND_ACC_DEPRECATED (1 << 11) /* | X | | X */ |
341 | | /* | | | */ |
342 | | /* Function returning by reference | | | */ |
343 | 329k | #define ZEND_ACC_RETURN_REFERENCE (1 << 12) /* | X | | */ |
344 | | /* | | | */ |
345 | | /* Function has a return type | | | */ |
346 | 631k | #define ZEND_ACC_HAS_RETURN_TYPE (1 << 13) /* | X | | */ |
347 | | /* | | | */ |
348 | | /* Function with variable number of arguments | | | */ |
349 | 342k | #define ZEND_ACC_VARIADIC (1 << 14) /* | X | | */ |
350 | | /* | | | */ |
351 | | /* op_array has finally blocks (user only) | | | */ |
352 | 356k | #define ZEND_ACC_HAS_FINALLY_BLOCK (1 << 15) /* | X | | */ |
353 | | /* | | | */ |
354 | | /* "main" op_array with | | | */ |
355 | | /* ZEND_DECLARE_CLASS_DELAYED opcodes | | | */ |
356 | 1.40k | #define ZEND_ACC_EARLY_BINDING (1 << 16) /* | X | | */ |
357 | | /* | | | */ |
358 | | /* closure uses $this | | | */ |
359 | 12.2k | #define ZEND_ACC_USES_THIS (1 << 17) /* | X | | */ |
360 | | /* | | | */ |
361 | | /* call through user function trampoline. e.g. | | | */ |
362 | | /* __call, __callstatic | | | */ |
363 | 1.22M | #define ZEND_ACC_CALL_VIA_TRAMPOLINE (1 << 18) /* | X | | */ |
364 | | /* | | | */ |
365 | | /* disable inline caching | | | */ |
366 | | #define ZEND_ACC_NEVER_CACHE (1 << 19) /* | X | | */ |
367 | | /* | | | */ |
368 | | /* op_array is a clone of trait method | | | */ |
369 | 66.6k | #define ZEND_ACC_TRAIT_CLONE (1 << 20) /* | X | | */ |
370 | | /* | | | */ |
371 | | /* functions is a constructor | | | */ |
372 | 23.8k | #define ZEND_ACC_CTOR (1 << 21) /* | X | | */ |
373 | | /* | | | */ |
374 | | /* Closure related | | | */ |
375 | 212k | #define ZEND_ACC_CLOSURE (1 << 22) /* | X | | */ |
376 | 2.69M | #define ZEND_ACC_FAKE_CLOSURE (1 << 23) /* | X | | */ /* Same as ZEND_CALL_FAKE_CLOSURE */ |
377 | | /* | | | */ |
378 | 472k | #define ZEND_ACC_GENERATOR (1 << 24) /* | X | | */ |
379 | | /* | | | */ |
380 | | /* function was processed by pass two (user only) | | | */ |
381 | 2.04M | #define ZEND_ACC_DONE_PASS_TWO (1 << 25) /* | X | | */ |
382 | | /* | | | */ |
383 | | /* internal function is allocated at arena (int only) | | | */ |
384 | 40.1k | #define ZEND_ACC_ARENA_ALLOCATED (1 << 25) /* | X | | */ |
385 | | /* | | | */ |
386 | | /* run_time_cache allocated on heap (user only) | | | */ |
387 | 319k | #define ZEND_ACC_HEAP_RT_CACHE (1 << 26) /* | X | | */ |
388 | | /* | | | */ |
389 | | /* method flag used by Closure::__invoke() (int only) | | | */ |
390 | 6.79k | #define ZEND_ACC_USER_ARG_INFO (1 << 26) /* | X | | */ |
391 | | /* | | | */ |
392 | | /* supports opcache compile-time evaluation (funcs) | | | */ |
393 | 0 | #define ZEND_ACC_COMPILE_TIME_EVAL (1 << 27) /* | X | | */ |
394 | | /* | | | */ |
395 | | /* has #[\Override] attribute | | | */ |
396 | 67.5k | #define ZEND_ACC_OVERRIDE (1 << 28) /* | X | | */ |
397 | | /* | | | */ |
398 | | /* Has IS_PTR operands that needs special cleaning; same | | | */ |
399 | | /* value as ZEND_ACC_OVERRIDE but override is for class | | | */ |
400 | | /* methods and this is for the top level op array | | | */ |
401 | 77.0k | #define ZEND_ACC_PTR_OPS (1 << 28) /* | X | | */ |
402 | | /* | | | */ |
403 | | /* has #[\NoDiscard] attribute | | | */ |
404 | 3.57M | #define ZEND_ACC_NODISCARD (1 << 29) /* | X | | */ |
405 | | /* | | | */ |
406 | | /* op_array uses strict mode types | | | */ |
407 | 4.46M | #define ZEND_ACC_STRICT_TYPES (1U << 31) /* | X | | */ |
408 | | |
409 | 299k | #define ZEND_ACC_PPP_MASK (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE) |
410 | 175k | #define ZEND_ACC_PPP_SET_MASK (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET) |
411 | | |
412 | | static zend_always_inline uint32_t zend_visibility_to_set_visibility(uint32_t visibility) |
413 | 756 | { |
414 | 756 | switch (visibility) { |
415 | 630 | case ZEND_ACC_PUBLIC: |
416 | 630 | return ZEND_ACC_PUBLIC_SET; |
417 | 13 | case ZEND_ACC_PROTECTED: |
418 | 13 | return ZEND_ACC_PROTECTED_SET; |
419 | 113 | case ZEND_ACC_PRIVATE: |
420 | 113 | return ZEND_ACC_PRIVATE_SET; |
421 | 0 | EMPTY_SWITCH_DEFAULT_CASE(); |
422 | 756 | } |
423 | 756 | } Unexecuted instantiation: php_date.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_pcre.c:zend_visibility_to_set_visibility Unexecuted instantiation: exif.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_adler32.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_crc32.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_fnv.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_gost.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_haval.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_joaat.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_md.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_murmur.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_ripemd.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_sha_ni.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_sha_sse2.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_sha.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_sha3.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_snefru.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_tiger.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_whirlpool.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash_xxhash.c:zend_visibility_to_set_visibility Unexecuted instantiation: hash.c:zend_visibility_to_set_visibility Unexecuted instantiation: json_encoder.c:zend_visibility_to_set_visibility Unexecuted instantiation: json_parser.tab.c:zend_visibility_to_set_visibility Unexecuted instantiation: json_scanner.c:zend_visibility_to_set_visibility Unexecuted instantiation: json.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_lexbor.c:zend_visibility_to_set_visibility Unexecuted instantiation: csprng.c:zend_visibility_to_set_visibility Unexecuted instantiation: engine_mt19937.c:zend_visibility_to_set_visibility Unexecuted instantiation: engine_pcgoneseq128xslrr64.c:zend_visibility_to_set_visibility Unexecuted instantiation: engine_secure.c:zend_visibility_to_set_visibility Unexecuted instantiation: engine_user.c:zend_visibility_to_set_visibility Unexecuted instantiation: engine_xoshiro256starstar.c:zend_visibility_to_set_visibility Unexecuted instantiation: gammasection.c:zend_visibility_to_set_visibility Unexecuted instantiation: random.c:zend_visibility_to_set_visibility Unexecuted instantiation: randomizer.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_utils.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_reflection.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_spl.c:zend_visibility_to_set_visibility Unexecuted instantiation: spl_array.c:zend_visibility_to_set_visibility Unexecuted instantiation: spl_directory.c:zend_visibility_to_set_visibility Unexecuted instantiation: spl_dllist.c:zend_visibility_to_set_visibility Unexecuted instantiation: spl_exceptions.c:zend_visibility_to_set_visibility Unexecuted instantiation: spl_fixedarray.c:zend_visibility_to_set_visibility Unexecuted instantiation: spl_functions.c:zend_visibility_to_set_visibility Unexecuted instantiation: spl_heap.c:zend_visibility_to_set_visibility Unexecuted instantiation: spl_iterators.c:zend_visibility_to_set_visibility Unexecuted instantiation: spl_observer.c:zend_visibility_to_set_visibility Unexecuted instantiation: array.c:zend_visibility_to_set_visibility Unexecuted instantiation: assert.c:zend_visibility_to_set_visibility Unexecuted instantiation: base64.c:zend_visibility_to_set_visibility Unexecuted instantiation: basic_functions.c:zend_visibility_to_set_visibility Unexecuted instantiation: browscap.c:zend_visibility_to_set_visibility Unexecuted instantiation: crc32_x86.c:zend_visibility_to_set_visibility Unexecuted instantiation: crc32.c:zend_visibility_to_set_visibility Unexecuted instantiation: credits.c:zend_visibility_to_set_visibility Unexecuted instantiation: crypt.c:zend_visibility_to_set_visibility Unexecuted instantiation: css.c:zend_visibility_to_set_visibility Unexecuted instantiation: datetime.c:zend_visibility_to_set_visibility Unexecuted instantiation: dir.c:zend_visibility_to_set_visibility Unexecuted instantiation: dl.c:zend_visibility_to_set_visibility Unexecuted instantiation: dns.c:zend_visibility_to_set_visibility Unexecuted instantiation: exec.c:zend_visibility_to_set_visibility Unexecuted instantiation: file.c:zend_visibility_to_set_visibility Unexecuted instantiation: filestat.c:zend_visibility_to_set_visibility Unexecuted instantiation: filters.c:zend_visibility_to_set_visibility Unexecuted instantiation: flock_compat.c:zend_visibility_to_set_visibility Unexecuted instantiation: formatted_print.c:zend_visibility_to_set_visibility Unexecuted instantiation: fsock.c:zend_visibility_to_set_visibility Unexecuted instantiation: ftok.c:zend_visibility_to_set_visibility Unexecuted instantiation: ftp_fopen_wrapper.c:zend_visibility_to_set_visibility Unexecuted instantiation: head.c:zend_visibility_to_set_visibility Unexecuted instantiation: hrtime.c:zend_visibility_to_set_visibility Unexecuted instantiation: html.c:zend_visibility_to_set_visibility Unexecuted instantiation: http_fopen_wrapper.c:zend_visibility_to_set_visibility Unexecuted instantiation: http.c:zend_visibility_to_set_visibility Unexecuted instantiation: image.c:zend_visibility_to_set_visibility Unexecuted instantiation: incomplete_class.c:zend_visibility_to_set_visibility Unexecuted instantiation: info.c:zend_visibility_to_set_visibility Unexecuted instantiation: iptc.c:zend_visibility_to_set_visibility Unexecuted instantiation: levenshtein.c:zend_visibility_to_set_visibility Unexecuted instantiation: link.c:zend_visibility_to_set_visibility Unexecuted instantiation: mail.c:zend_visibility_to_set_visibility Unexecuted instantiation: math.c:zend_visibility_to_set_visibility Unexecuted instantiation: md5.c:zend_visibility_to_set_visibility Unexecuted instantiation: metaphone.c:zend_visibility_to_set_visibility Unexecuted instantiation: microtime.c:zend_visibility_to_set_visibility Unexecuted instantiation: net.c:zend_visibility_to_set_visibility Unexecuted instantiation: pack.c:zend_visibility_to_set_visibility Unexecuted instantiation: pageinfo.c:zend_visibility_to_set_visibility Unexecuted instantiation: password.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_fopen_wrapper.c:zend_visibility_to_set_visibility Unexecuted instantiation: proc_open.c:zend_visibility_to_set_visibility Unexecuted instantiation: quot_print.c:zend_visibility_to_set_visibility Unexecuted instantiation: scanf.c:zend_visibility_to_set_visibility Unexecuted instantiation: sha1.c:zend_visibility_to_set_visibility Unexecuted instantiation: soundex.c:zend_visibility_to_set_visibility Unexecuted instantiation: streamsfuncs.c:zend_visibility_to_set_visibility Unexecuted instantiation: string.c:zend_visibility_to_set_visibility Unexecuted instantiation: strnatcmp.c:zend_visibility_to_set_visibility Unexecuted instantiation: syslog.c:zend_visibility_to_set_visibility Unexecuted instantiation: type.c:zend_visibility_to_set_visibility Unexecuted instantiation: uniqid.c:zend_visibility_to_set_visibility Unexecuted instantiation: url_scanner_ex.c:zend_visibility_to_set_visibility Unexecuted instantiation: url.c:zend_visibility_to_set_visibility Unexecuted instantiation: user_filters.c:zend_visibility_to_set_visibility Unexecuted instantiation: uuencode.c:zend_visibility_to_set_visibility Unexecuted instantiation: var_unserializer.c:zend_visibility_to_set_visibility Unexecuted instantiation: var.c:zend_visibility_to_set_visibility Unexecuted instantiation: versioning.c:zend_visibility_to_set_visibility Unexecuted instantiation: crypt_sha256.c:zend_visibility_to_set_visibility Unexecuted instantiation: crypt_sha512.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_crypt_r.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_uri.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_uri_common.c:zend_visibility_to_set_visibility Unexecuted instantiation: explicit_bzero.c:zend_visibility_to_set_visibility Unexecuted instantiation: fopen_wrappers.c:zend_visibility_to_set_visibility Unexecuted instantiation: getopt.c:zend_visibility_to_set_visibility Unexecuted instantiation: main.c:zend_visibility_to_set_visibility Unexecuted instantiation: network.c:zend_visibility_to_set_visibility Unexecuted instantiation: output.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_content_types.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_ini_builder.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_ini.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_glob.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_odbc_utils.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_open_temporary_file.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_scandir.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_syslog.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_ticks.c:zend_visibility_to_set_visibility Unexecuted instantiation: php_variables.c:zend_visibility_to_set_visibility Unexecuted instantiation: reentrancy.c:zend_visibility_to_set_visibility Unexecuted instantiation: rfc1867.c:zend_visibility_to_set_visibility Unexecuted instantiation: safe_bcmp.c:zend_visibility_to_set_visibility Unexecuted instantiation: SAPI.c:zend_visibility_to_set_visibility Unexecuted instantiation: snprintf.c:zend_visibility_to_set_visibility Unexecuted instantiation: spprintf.c:zend_visibility_to_set_visibility Unexecuted instantiation: strlcat.c:zend_visibility_to_set_visibility Unexecuted instantiation: strlcpy.c:zend_visibility_to_set_visibility Unexecuted instantiation: cast.c:zend_visibility_to_set_visibility Unexecuted instantiation: filter.c:zend_visibility_to_set_visibility Unexecuted instantiation: glob_wrapper.c:zend_visibility_to_set_visibility Unexecuted instantiation: memory.c:zend_visibility_to_set_visibility Unexecuted instantiation: mmap.c:zend_visibility_to_set_visibility Unexecuted instantiation: plain_wrapper.c:zend_visibility_to_set_visibility Unexecuted instantiation: streams.c:zend_visibility_to_set_visibility Unexecuted instantiation: transports.c:zend_visibility_to_set_visibility Unexecuted instantiation: userspace.c:zend_visibility_to_set_visibility Unexecuted instantiation: xp_socket.c:zend_visibility_to_set_visibility Unexecuted instantiation: block_pass.c:zend_visibility_to_set_visibility Unexecuted instantiation: compact_literals.c:zend_visibility_to_set_visibility Unexecuted instantiation: compact_vars.c:zend_visibility_to_set_visibility Unexecuted instantiation: dce.c:zend_visibility_to_set_visibility Unexecuted instantiation: dfa_pass.c:zend_visibility_to_set_visibility Unexecuted instantiation: escape_analysis.c:zend_visibility_to_set_visibility Unexecuted instantiation: nop_removal.c:zend_visibility_to_set_visibility Unexecuted instantiation: optimize_func_calls.c:zend_visibility_to_set_visibility Unexecuted instantiation: optimize_temp_vars_5.c:zend_visibility_to_set_visibility Unexecuted instantiation: pass1.c:zend_visibility_to_set_visibility Unexecuted instantiation: pass3.c:zend_visibility_to_set_visibility Unexecuted instantiation: sccp.c:zend_visibility_to_set_visibility Unexecuted instantiation: scdf.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_call_graph.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_cfg.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_dfg.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_dump.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_func_info.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_inference.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_optimizer.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_ssa.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_alloc.c:zend_visibility_to_set_visibility zend_API.c:zend_visibility_to_set_visibility Line | Count | Source | 413 | 733 | { | 414 | 733 | switch (visibility) { | 415 | 613 | case ZEND_ACC_PUBLIC: | 416 | 613 | return ZEND_ACC_PUBLIC_SET; | 417 | 7 | case ZEND_ACC_PROTECTED: | 418 | 7 | return ZEND_ACC_PROTECTED_SET; | 419 | 113 | case ZEND_ACC_PRIVATE: | 420 | 113 | return ZEND_ACC_PRIVATE_SET; | 421 | 0 | EMPTY_SWITCH_DEFAULT_CASE(); | 422 | 733 | } | 423 | 733 | } |
Unexecuted instantiation: zend_ast.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_attributes.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_builtin_functions.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_call_stack.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_closures.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_compile.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_constants.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_default_classes.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_dtrace.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_enum.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_exceptions.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_execute_API.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_execute.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_extensions.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_fibers.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_float.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_gc.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_generators.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_hash.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_highlight.c:zend_visibility_to_set_visibility zend_inheritance.c:zend_visibility_to_set_visibility Line | Count | Source | 413 | 23 | { | 414 | 23 | switch (visibility) { | 415 | 17 | case ZEND_ACC_PUBLIC: | 416 | 17 | return ZEND_ACC_PUBLIC_SET; | 417 | 6 | case ZEND_ACC_PROTECTED: | 418 | 6 | return ZEND_ACC_PROTECTED_SET; | 419 | 0 | case ZEND_ACC_PRIVATE: | 420 | 0 | return ZEND_ACC_PRIVATE_SET; | 421 | 0 | EMPTY_SWITCH_DEFAULT_CASE(); | 422 | 23 | } | 423 | 23 | } |
Unexecuted instantiation: zend_ini_parser.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_ini_scanner.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_ini.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_interfaces.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_iterators.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_language_parser.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_language_scanner.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_lazy_objects.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_list.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_multibyte.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_object_handlers.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_objects_API.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_objects.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_observer.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_opcode.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_operators.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_property_hooks.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_signal.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_smart_str.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_stream.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_string.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_strtod.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_system_id.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_variables.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend_weakrefs.c:zend_visibility_to_set_visibility Unexecuted instantiation: zend.c:zend_visibility_to_set_visibility Unexecuted instantiation: internal_functions_cli.c:zend_visibility_to_set_visibility Unexecuted instantiation: fuzzer-parser.c:zend_visibility_to_set_visibility Unexecuted instantiation: fuzzer-sapi.c:zend_visibility_to_set_visibility Unexecuted instantiation: fuzzer-tracing-jit.c:zend_visibility_to_set_visibility Unexecuted instantiation: fuzzer-exif.c:zend_visibility_to_set_visibility Unexecuted instantiation: fuzzer-unserialize.c:zend_visibility_to_set_visibility Unexecuted instantiation: fuzzer-function-jit.c:zend_visibility_to_set_visibility Unexecuted instantiation: fuzzer-json.c:zend_visibility_to_set_visibility Unexecuted instantiation: fuzzer-unserializehash.c:zend_visibility_to_set_visibility Unexecuted instantiation: fuzzer-execute.c:zend_visibility_to_set_visibility |
424 | | |
425 | | /* call through internal function handler. e.g. Closure::invoke() */ |
426 | 382 | #define ZEND_ACC_CALL_VIA_HANDLER ZEND_ACC_CALL_VIA_TRAMPOLINE |
427 | | |
428 | | #define ZEND_ACC_UNINSTANTIABLE ( \ |
429 | | ZEND_ACC_INTERFACE | \ |
430 | | ZEND_ACC_TRAIT | \ |
431 | | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS | \ |
432 | | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | \ |
433 | | ZEND_ACC_ENUM \ |
434 | | ) |
435 | | |
436 | 108k | #define ZEND_SHORT_CIRCUITING_CHAIN_MASK 0x3 |
437 | 155k | #define ZEND_SHORT_CIRCUITING_CHAIN_EXPR 0 |
438 | 485 | #define ZEND_SHORT_CIRCUITING_CHAIN_ISSET 1 |
439 | 55 | #define ZEND_SHORT_CIRCUITING_CHAIN_EMPTY 2 |
440 | | |
441 | | // Must not clash with ZEND_SHORT_CIRCUITING_CHAIN_MASK |
442 | 62.6k | #define ZEND_JMP_NULL_BP_VAR_IS 4 |
443 | | |
444 | | char *zend_visibility_string(uint32_t fn_flags); |
445 | | |
446 | 47.1k | #define ZEND_PROPERTY_HOOK_COUNT 2 |
447 | 8.46k | #define ZEND_PROPERTY_HOOK_STRUCT_SIZE (sizeof(zend_function*) * ZEND_PROPERTY_HOOK_COUNT) |
448 | | |
449 | | /* Stored in zend_property_info.offset, not returned by zend_get_property_offset(). */ |
450 | 6.69k | #define ZEND_VIRTUAL_PROPERTY_OFFSET ((uint32_t)-1) |
451 | | |
452 | | zend_property_hook_kind zend_get_property_hook_kind_from_name(zend_string *name); |
453 | | |
454 | | typedef struct _zend_property_info { |
455 | | uint32_t offset; /* property offset for object properties or |
456 | | property index for static properties */ |
457 | | uint32_t flags; |
458 | | zend_string *name; |
459 | | zend_string *doc_comment; |
460 | | HashTable *attributes; |
461 | | zend_class_entry *ce; |
462 | | zend_type type; |
463 | | const zend_property_info *prototype; |
464 | | zend_function **hooks; |
465 | | } zend_property_info; |
466 | | |
467 | | #define OBJ_PROP(obj, offset) \ |
468 | 25.8M | ((zval*)((char*)(obj) + offset)) |
469 | | #define OBJ_PROP_NUM(obj, num) \ |
470 | 3.87M | (&(obj)->properties_table[(num)]) |
471 | | #define OBJ_PROP_TO_OFFSET(num) \ |
472 | 68.8k | ((uint32_t)(XtOffsetOf(zend_object, properties_table) + sizeof(zval) * (num))) |
473 | | #define OBJ_PROP_TO_NUM(offset) \ |
474 | 46.2k | (((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval)) |
475 | | #define OBJ_PROP_SLOT_TO_OFFSET(obj, slot) \ |
476 | 116 | ((uintptr_t)(slot) - (uintptr_t)(obj)) |
477 | | |
478 | | typedef struct _zend_class_constant { |
479 | | zval value; /* flags are stored in u2 */ |
480 | | zend_string *doc_comment; |
481 | | HashTable *attributes; |
482 | | zend_class_entry *ce; |
483 | | zend_type type; |
484 | | } zend_class_constant; |
485 | | |
486 | 45.2k | #define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value) |
487 | | |
488 | | /* arg_info for internal functions */ |
489 | | typedef struct _zend_internal_arg_info { |
490 | | const char *name; |
491 | | zend_type type; |
492 | | const char *default_value; |
493 | | } zend_internal_arg_info; |
494 | | |
495 | | /* arg_info for user functions */ |
496 | | typedef struct _zend_arg_info { |
497 | | zend_string *name; |
498 | | zend_type type; |
499 | | zend_string *default_value; |
500 | | } zend_arg_info; |
501 | | |
502 | | /* the following structure repeats the layout of zend_internal_arg_info, |
503 | | * but its fields have different meaning. It's used as the first element of |
504 | | * arg_info array to define properties of internal functions. |
505 | | * It's also used for the return type. |
506 | | */ |
507 | | typedef struct _zend_internal_function_info { |
508 | | uintptr_t required_num_args; |
509 | | zend_type type; |
510 | | const char *default_value; |
511 | | } zend_internal_function_info; |
512 | | |
513 | | struct _zend_op_array { |
514 | | /* Common elements */ |
515 | | uint8_t type; |
516 | | uint8_t arg_flags[3]; /* bitset of arg_info.pass_by_reference */ |
517 | | uint32_t fn_flags; |
518 | | zend_string *function_name; |
519 | | zend_class_entry *scope; |
520 | | zend_function *prototype; |
521 | | uint32_t num_args; |
522 | | uint32_t required_num_args; |
523 | | zend_arg_info *arg_info; |
524 | | HashTable *attributes; |
525 | | ZEND_MAP_PTR_DEF(void **, run_time_cache); |
526 | | zend_string *doc_comment; |
527 | | uint32_t T; /* number of temporary variables */ |
528 | | const zend_property_info *prop_info; /* The corresponding prop_info if this is a hook. */ |
529 | | /* END of common elements */ |
530 | | |
531 | | int cache_size; /* number of run_time_cache_slots * sizeof(void*) */ |
532 | | int last_var; /* number of CV variables */ |
533 | | uint32_t last; /* number of opcodes */ |
534 | | |
535 | | zend_op *opcodes; |
536 | | ZEND_MAP_PTR_DEF(HashTable *, static_variables_ptr); |
537 | | HashTable *static_variables; |
538 | | zend_string **vars; /* names of CV variables */ |
539 | | |
540 | | uint32_t *refcount; |
541 | | |
542 | | int last_live_range; |
543 | | int last_try_catch; |
544 | | zend_live_range *live_range; |
545 | | zend_try_catch_element *try_catch_array; |
546 | | |
547 | | zend_string *filename; |
548 | | uint32_t line_start; |
549 | | uint32_t line_end; |
550 | | |
551 | | int last_literal; |
552 | | uint32_t num_dynamic_func_defs; |
553 | | zval *literals; |
554 | | |
555 | | /* Functions that are declared dynamically are stored here and |
556 | | * referenced by index from opcodes. */ |
557 | | zend_op_array **dynamic_func_defs; |
558 | | |
559 | | void *reserved[ZEND_MAX_RESERVED_RESOURCES]; |
560 | | }; |
561 | | |
562 | | |
563 | | #define ZEND_RETURN_VALUE 0 |
564 | | #define ZEND_RETURN_REFERENCE 1 |
565 | | |
566 | | #define INTERNAL_FUNCTION_PARAMETERS zend_execute_data *execute_data, zval *return_value |
567 | 17.6k | #define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value |
568 | | |
569 | | /* zend_internal_function_handler */ |
570 | | typedef void (ZEND_FASTCALL *zif_handler)(INTERNAL_FUNCTION_PARAMETERS); |
571 | | |
572 | | typedef struct _zend_internal_function { |
573 | | /* Common elements */ |
574 | | uint8_t type; |
575 | | uint8_t arg_flags[3]; /* bitset of arg_info.pass_by_reference */ |
576 | | uint32_t fn_flags; |
577 | | zend_string* function_name; |
578 | | zend_class_entry *scope; |
579 | | zend_function *prototype; |
580 | | uint32_t num_args; |
581 | | uint32_t required_num_args; |
582 | | zend_internal_arg_info *arg_info; |
583 | | HashTable *attributes; |
584 | | ZEND_MAP_PTR_DEF(void **, run_time_cache); |
585 | | zend_string *doc_comment; |
586 | | uint32_t T; /* number of temporary variables */ |
587 | | const zend_property_info *prop_info; /* The corresponding prop_info if this is a hook. */ |
588 | | /* END of common elements */ |
589 | | |
590 | | zif_handler handler; |
591 | | struct _zend_module_entry *module; |
592 | | const zend_frameless_function_info *frameless_function_infos; |
593 | | void *reserved[ZEND_MAX_RESERVED_RESOURCES]; |
594 | | } zend_internal_function; |
595 | | |
596 | 438 | #define ZEND_FN_SCOPE_NAME(function) ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "") |
597 | | |
598 | | union _zend_function { |
599 | | uint8_t type; /* MUST be the first element of this struct! */ |
600 | | uint32_t quick_arg_flags; |
601 | | |
602 | | struct { |
603 | | uint8_t type; /* never used */ |
604 | | uint8_t arg_flags[3]; /* bitset of arg_info.pass_by_reference */ |
605 | | uint32_t fn_flags; |
606 | | zend_string *function_name; |
607 | | zend_class_entry *scope; |
608 | | zend_function *prototype; |
609 | | uint32_t num_args; |
610 | | uint32_t required_num_args; |
611 | | zend_arg_info *arg_info; /* index -1 represents the return value info, if any */ |
612 | | HashTable *attributes; |
613 | | ZEND_MAP_PTR_DEF(void **, run_time_cache); |
614 | | zend_string *doc_comment; |
615 | | uint32_t T; /* number of temporary variables */ |
616 | | const zend_property_info *prop_info; /* The corresponding prop_info if this is a hook. */ |
617 | | } common; |
618 | | |
619 | | zend_op_array op_array; |
620 | | zend_internal_function internal_function; |
621 | | }; |
622 | | |
623 | | struct _zend_execute_data { |
624 | | const zend_op *opline; /* executed opline */ |
625 | | zend_execute_data *call; /* current call */ |
626 | | zval *return_value; |
627 | | zend_function *func; /* executed function */ |
628 | | zval This; /* this + call_info + num_args */ |
629 | | zend_execute_data *prev_execute_data; |
630 | | zend_array *symbol_table; |
631 | | void **run_time_cache; /* cache op_array->run_time_cache */ |
632 | | zend_array *extra_named_params; |
633 | | }; |
634 | | |
635 | 2.02M | #define ZEND_CALL_HAS_THIS IS_OBJECT_EX |
636 | | |
637 | | /* Top 16 bits of Z_TYPE_INFO(EX(This)) are used as call_info flags */ |
638 | 2.51M | #define ZEND_CALL_FUNCTION (0 << 16) |
639 | 171k | #define ZEND_CALL_CODE (1 << 16) |
640 | 813k | #define ZEND_CALL_NESTED (0 << 17) |
641 | 1.16M | #define ZEND_CALL_TOP (1 << 17) |
642 | 348 | #define ZEND_CALL_ALLOCATED (1 << 18) |
643 | 3.59k | #define ZEND_CALL_FREE_EXTRA_ARGS (1 << 19) |
644 | 330k | #define ZEND_CALL_HAS_SYMBOL_TABLE (1 << 20) |
645 | 855k | #define ZEND_CALL_RELEASE_THIS (1 << 21) |
646 | 20.3k | #define ZEND_CALL_CLOSURE (1 << 22) |
647 | 53 | #define ZEND_CALL_FAKE_CLOSURE (1 << 23) /* Same as ZEND_ACC_FAKE_CLOSURE */ |
648 | 3.96k | #define ZEND_CALL_GENERATOR (1 << 24) |
649 | 1.09M | #define ZEND_CALL_DYNAMIC (1 << 25) |
650 | | #define ZEND_CALL_MAY_HAVE_UNDEF (1 << 26) |
651 | 1.35M | #define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27) |
652 | | #define ZEND_CALL_OBSERVED (1 << 28) /* "fcall_begin" observer handler may set this flag */ |
653 | | /* to prevent optimization in RETURN handler and */ |
654 | | /* keep all local variables for "fcall_end" handler */ |
655 | | #define ZEND_CALL_JIT_RESERVED (1 << 29) /* reserved for tracing JIT */ |
656 | 112k | #define ZEND_CALL_NEEDS_REATTACH (1 << 30) |
657 | | #define ZEND_CALL_SEND_ARG_BY_REF (1u << 31) |
658 | | |
659 | 722k | #define ZEND_CALL_NESTED_FUNCTION (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED) |
660 | 87.5k | #define ZEND_CALL_NESTED_CODE (ZEND_CALL_CODE | ZEND_CALL_NESTED) |
661 | 1.08M | #define ZEND_CALL_TOP_FUNCTION (ZEND_CALL_TOP | ZEND_CALL_FUNCTION) |
662 | 83.6k | #define ZEND_CALL_TOP_CODE (ZEND_CALL_CODE | ZEND_CALL_TOP) |
663 | | |
664 | | #define ZEND_CALL_INFO(call) \ |
665 | 6.68M | Z_TYPE_INFO((call)->This) |
666 | | |
667 | | #define ZEND_CALL_KIND_EX(call_info) \ |
668 | | (call_info & (ZEND_CALL_CODE | ZEND_CALL_TOP)) |
669 | | |
670 | | #define ZEND_CALL_KIND(call) \ |
671 | | ZEND_CALL_KIND_EX(ZEND_CALL_INFO(call)) |
672 | | |
673 | 155k | #define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \ |
674 | 155k | call_info |= (flag); \ |
675 | 155k | } while (0) |
676 | | |
677 | 1.11k | #define ZEND_DEL_CALL_FLAG_EX(call_info, flag) do { \ |
678 | 1.11k | call_info &= ~(flag); \ |
679 | 1.11k | } while (0) |
680 | | |
681 | 150k | #define ZEND_ADD_CALL_FLAG(call, flag) do { \ |
682 | 150k | ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \ |
683 | 150k | } while (0) |
684 | | |
685 | 1.11k | #define ZEND_DEL_CALL_FLAG(call, flag) do { \ |
686 | 1.11k | ZEND_DEL_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \ |
687 | 1.11k | } while (0) |
688 | | |
689 | | #define ZEND_CALL_NUM_ARGS(call) \ |
690 | 18.8M | (call)->This.u2.num_args |
691 | | |
692 | | /* Ensure the correct alignment before slots calculation */ |
693 | | ZEND_STATIC_ASSERT(ZEND_MM_ALIGNED_SIZE(sizeof(zval)) == sizeof(zval), |
694 | | "zval must be aligned by ZEND_MM_ALIGNMENT"); |
695 | | /* A number of call frame slots (zvals) reserved for zend_execute_data. */ |
696 | | #define ZEND_CALL_FRAME_SLOT \ |
697 | 65.9M | ((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval))) |
698 | | |
699 | | #define ZEND_CALL_VAR(call, n) \ |
700 | 25.4M | ((zval*)(((char*)(call)) + ((int)(n)))) |
701 | | |
702 | | #define ZEND_CALL_VAR_NUM(call, n) \ |
703 | 10.6M | (((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n)))) |
704 | | |
705 | | #define ZEND_CALL_ARG(call, n) \ |
706 | 7.85M | ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1) |
707 | | |
708 | 53.1M | #define EX(element) ((execute_data)->element) |
709 | | |
710 | 604k | #define EX_CALL_INFO() ZEND_CALL_INFO(execute_data) |
711 | | #define EX_CALL_KIND() ZEND_CALL_KIND(execute_data) |
712 | 2.12M | #define EX_NUM_ARGS() ZEND_CALL_NUM_ARGS(execute_data) |
713 | | |
714 | | #define ZEND_CALL_USES_STRICT_TYPES(call) \ |
715 | 5.80M | (((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0) |
716 | | |
717 | | #define EX_USES_STRICT_TYPES() \ |
718 | 3.06M | ZEND_CALL_USES_STRICT_TYPES(execute_data) |
719 | | |
720 | | #define ZEND_ARG_USES_STRICT_TYPES() \ |
721 | 23.9k | (EG(current_execute_data)->prev_execute_data && \ |
722 | 11.8k | EG(current_execute_data)->prev_execute_data->func && \ |
723 | 23.9k | ZEND_CALL_USES_STRICT_TYPES(EG(current_execute_data)->prev_execute_data)) |
724 | | |
725 | | #define ZEND_FLF_ARG_USES_STRICT_TYPES() \ |
726 | | (EG(current_execute_data) && \ |
727 | | EG(current_execute_data)->func && \ |
728 | | ZEND_CALL_USES_STRICT_TYPES(EG(current_execute_data))) |
729 | | |
730 | | #define ZEND_RET_USES_STRICT_TYPES() \ |
731 | 356 | ZEND_CALL_USES_STRICT_TYPES(EG(current_execute_data)) |
732 | | |
733 | 23.6M | #define EX_VAR(n) ZEND_CALL_VAR(execute_data, n) |
734 | 862k | #define EX_VAR_NUM(n) ZEND_CALL_VAR_NUM(execute_data, n) |
735 | | |
736 | 40.3M | #define EX_VAR_TO_NUM(n) ((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT)) |
737 | 12.5M | #define EX_NUM_TO_VAR(n) ((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval))) |
738 | | |
739 | | #define ZEND_OPLINE_TO_OFFSET(opline, target) \ |
740 | 244k | ((char*)(target) - (char*)(opline)) |
741 | | |
742 | | #define ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, opline_num) \ |
743 | 338k | ((char*)&(op_array)->opcodes[opline_num] - (char*)(opline)) |
744 | | |
745 | | #define ZEND_OFFSET_TO_OPLINE(base, offset) \ |
746 | 486k | ((zend_op*)(((char*)(base)) + (int)offset)) |
747 | | |
748 | | #define ZEND_OFFSET_TO_OPLINE_NUM(op_array, base, offset) \ |
749 | 21.5k | (ZEND_OFFSET_TO_OPLINE(base, offset) - op_array->opcodes) |
750 | | |
751 | | #if ZEND_USE_ABS_JMP_ADDR |
752 | | |
753 | | /* run-time jump target */ |
754 | | # define OP_JMP_ADDR(opline, node) \ |
755 | | (node).jmp_addr |
756 | | |
757 | | # define ZEND_SET_OP_JMP_ADDR(opline, node, val) do { \ |
758 | | (node).jmp_addr = (val); \ |
759 | | } while (0) |
760 | | |
761 | | /* convert jump target from compile-time to run-time */ |
762 | | # define ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, node) do { \ |
763 | | (node).jmp_addr = (op_array)->opcodes + (node).opline_num; \ |
764 | | } while (0) |
765 | | |
766 | | /* convert jump target back from run-time to compile-time */ |
767 | | # define ZEND_PASS_TWO_UNDO_JMP_TARGET(op_array, opline, node) do { \ |
768 | | (node).opline_num = (node).jmp_addr - (op_array)->opcodes; \ |
769 | | } while (0) |
770 | | |
771 | | #else |
772 | | |
773 | | /* run-time jump target */ |
774 | | # define OP_JMP_ADDR(opline, node) \ |
775 | 464k | ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset) |
776 | | |
777 | 227k | # define ZEND_SET_OP_JMP_ADDR(opline, node, val) do { \ |
778 | 227k | (node).jmp_offset = ZEND_OPLINE_TO_OFFSET(opline, val); \ |
779 | 227k | } while (0) |
780 | | |
781 | | /* convert jump target from compile-time to run-time */ |
782 | 314k | # define ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, node) do { \ |
783 | 314k | (node).jmp_offset = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, (node).opline_num); \ |
784 | 314k | } while (0) |
785 | | |
786 | | /* convert jump target back from run-time to compile-time */ |
787 | | # define ZEND_PASS_TWO_UNDO_JMP_TARGET(op_array, opline, node) do { \ |
788 | | (node).opline_num = ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, (node).jmp_offset); \ |
789 | | } while (0) |
790 | | |
791 | | #endif |
792 | | |
793 | | /* constant-time constant */ |
794 | | # define CT_CONSTANT_EX(op_array, num) \ |
795 | 8.22M | ((op_array)->literals + (num)) |
796 | | |
797 | | # define CT_CONSTANT(node) \ |
798 | 5.63k | CT_CONSTANT_EX(CG(active_op_array), (node).constant) |
799 | | |
800 | | #if ZEND_USE_ABS_CONST_ADDR |
801 | | |
802 | | /* run-time constant */ |
803 | | # define RT_CONSTANT(opline, node) \ |
804 | | (node).zv |
805 | | |
806 | | /* convert constant from compile-time to run-time */ |
807 | | # define ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, node) do { \ |
808 | | (node).zv = CT_CONSTANT_EX(op_array, (node).constant); \ |
809 | | } while (0) |
810 | | |
811 | | #else |
812 | | |
813 | | /* At run-time, constants are allocated together with op_array->opcodes |
814 | | * and addressed relatively to current opline. |
815 | | */ |
816 | | |
817 | | /* run-time constant */ |
818 | | # define RT_CONSTANT(opline, node) \ |
819 | 6.31M | ((zval*)(((char*)(opline)) + (int32_t)(node).constant)) |
820 | | |
821 | | /* convert constant from compile-time to run-time */ |
822 | 3.20M | # define ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, node) do { \ |
823 | 3.20M | (node).constant = \ |
824 | 3.20M | (((char*)CT_CONSTANT_EX(op_array, (node).constant)) - \ |
825 | 3.20M | ((char*)opline)); \ |
826 | 3.20M | } while (0) |
827 | | |
828 | | #endif |
829 | | |
830 | | /* convert constant back from run-time to compile-time */ |
831 | 1.17M | #define ZEND_PASS_TWO_UNDO_CONSTANT(op_array, opline, node) do { \ |
832 | 1.17M | (node).constant = RT_CONSTANT(opline, node) - (op_array)->literals; \ |
833 | 1.17M | } while (0) |
834 | | |
835 | | #define RUN_TIME_CACHE(op_array) \ |
836 | 865k | ZEND_MAP_PTR_GET((op_array)->run_time_cache) |
837 | | |
838 | | #define ZEND_OP_ARRAY_EXTENSION(op_array, handle) \ |
839 | 0 | ((void**)RUN_TIME_CACHE(op_array))[handle] |
840 | | |
841 | 33.9M | #define IS_UNUSED 0 /* Unused operand */ |
842 | 93.0M | #define IS_CONST (1<<0) |
843 | 182M | #define IS_TMP_VAR (1<<1) |
844 | 165M | #define IS_VAR (1<<2) |
845 | 61.8M | #define IS_CV (1<<3) /* Compiled variable */ |
846 | | |
847 | | /* Used for result.type of smart branch instructions */ |
848 | 106k | #define IS_SMART_BRANCH_JMPZ (1<<4) |
849 | 62.3k | #define IS_SMART_BRANCH_JMPNZ (1<<5) |
850 | | |
851 | 27.6k | #define ZEND_EXTRA_VALUE 1 |
852 | | |
853 | | #include "zend_globals.h" |
854 | | |
855 | | typedef enum _zend_compile_position { |
856 | | ZEND_COMPILE_POSITION_AT_SHEBANG = 0, |
857 | | ZEND_COMPILE_POSITION_AT_OPEN_TAG, |
858 | | ZEND_COMPILE_POSITION_AFTER_OPEN_TAG |
859 | | } zend_compile_position; |
860 | | |
861 | | BEGIN_EXTERN_C() |
862 | | |
863 | | void init_compiler(void); |
864 | | void shutdown_compiler(void); |
865 | | void zend_init_compiler_data_structures(void); |
866 | | |
867 | | void zend_oparray_context_begin(zend_oparray_context *prev_context, zend_op_array *op_array); |
868 | | void zend_oparray_context_end(zend_oparray_context *prev_context); |
869 | | void zend_file_context_begin(zend_file_context *prev_context); |
870 | | void zend_file_context_end(zend_file_context *prev_context); |
871 | | |
872 | | extern ZEND_API zend_op_array *(*zend_compile_file)(zend_file_handle *file_handle, int type); |
873 | | extern ZEND_API zend_op_array *(*zend_compile_string)(zend_string *source_string, const char *filename, zend_compile_position position); |
874 | | |
875 | | ZEND_API int ZEND_FASTCALL lex_scan(zval *zendlval, zend_parser_stack_elem *elem); |
876 | | void startup_scanner(void); |
877 | | void shutdown_scanner(void); |
878 | | |
879 | | ZEND_API zend_string *zend_set_compiled_filename(zend_string *new_compiled_filename); |
880 | | ZEND_API void zend_restore_compiled_filename(zend_string *original_compiled_filename); |
881 | | ZEND_API zend_string *zend_get_compiled_filename(void); |
882 | | ZEND_API int zend_get_compiled_lineno(void); |
883 | | ZEND_API size_t zend_get_scanned_file_offset(void); |
884 | | |
885 | | ZEND_API zend_string *zend_get_compiled_variable_name(const zend_op_array *op_array, uint32_t var); |
886 | | |
887 | | #ifdef ZTS |
888 | | const char *zend_get_zendtext(void); |
889 | | int zend_get_zendleng(void); |
890 | | #endif |
891 | | |
892 | | typedef zend_result (ZEND_FASTCALL *unary_op_type)(zval *, zval *); |
893 | | typedef zend_result (ZEND_FASTCALL *binary_op_type)(zval *, zval *, zval *); |
894 | | |
895 | | ZEND_API unary_op_type get_unary_op(int opcode); |
896 | | ZEND_API binary_op_type get_binary_op(int opcode); |
897 | | |
898 | | void zend_stop_lexing(void); |
899 | | void zend_emit_final_return(bool return_one); |
900 | | |
901 | | typedef enum { |
902 | | ZEND_MODIFIER_TARGET_PROPERTY = 0, |
903 | | ZEND_MODIFIER_TARGET_METHOD, |
904 | | ZEND_MODIFIER_TARGET_CONSTANT, |
905 | | ZEND_MODIFIER_TARGET_CPP, |
906 | | ZEND_MODIFIER_TARGET_PROPERTY_HOOK, |
907 | | } zend_modifier_target; |
908 | | |
909 | | /* Used during AST construction */ |
910 | | zend_ast *zend_ast_append_str(zend_ast *left, zend_ast *right); |
911 | | zend_ast *zend_negate_num_string(zend_ast *ast); |
912 | | uint32_t zend_add_class_modifier(uint32_t flags, uint32_t new_flag); |
913 | | uint32_t zend_add_anonymous_class_modifier(uint32_t flags, uint32_t new_flag); |
914 | | uint32_t zend_add_member_modifier(uint32_t flags, uint32_t new_flag, zend_modifier_target target); |
915 | | |
916 | | uint32_t zend_modifier_token_to_flag(zend_modifier_target target, uint32_t flags); |
917 | | uint32_t zend_modifier_list_to_flags(zend_modifier_target target, zend_ast *modifiers); |
918 | | |
919 | | bool zend_handle_encoding_declaration(zend_ast *ast); |
920 | | |
921 | | ZEND_API zend_class_entry *zend_bind_class_in_slot( |
922 | | zval *class_table_slot, zval *lcname, zend_string *lc_parent_name); |
923 | | ZEND_API zend_result do_bind_function(zend_function *func, zval *lcname); |
924 | | ZEND_API zend_result do_bind_class(zval *lcname, zend_string *lc_parent_name); |
925 | | |
926 | | void zend_resolve_goto_label(zend_op_array *op_array, zend_op *opline); |
927 | | |
928 | | ZEND_API void function_add_ref(zend_function *function); |
929 | | zend_string *zval_make_interned_string(zval *zv); |
930 | | |
931 | 396k | #define INITIAL_OP_ARRAY_SIZE 64 |
932 | | |
933 | | |
934 | | /* helper functions in zend_language_scanner.l */ |
935 | | struct _zend_arena; |
936 | | |
937 | | ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type); |
938 | | ZEND_API zend_op_array *compile_string(zend_string *source_string, const char *filename, zend_compile_position position); |
939 | | ZEND_API zend_op_array *compile_filename(int type, zend_string *filename); |
940 | | ZEND_API zend_ast *zend_compile_string_to_ast( |
941 | | zend_string *code, struct _zend_arena **ast_arena, zend_string *filename); |
942 | | ZEND_API zend_result zend_execute_scripts(int type, zval *retval, int file_count, ...); |
943 | | ZEND_API zend_result zend_execute_script(int type, zval *retval, zend_file_handle *file_handle); |
944 | | ZEND_API zend_result open_file_for_scanning(zend_file_handle *file_handle); |
945 | | ZEND_API void init_op_array(zend_op_array *op_array, uint8_t type, int initial_ops_size); |
946 | | ZEND_API void destroy_op_array(zend_op_array *op_array); |
947 | | ZEND_API void zend_destroy_static_vars(zend_op_array *op_array); |
948 | | ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle); |
949 | | ZEND_API void zend_cleanup_mutable_class_data(zend_class_entry *ce); |
950 | | ZEND_API void zend_cleanup_internal_class_data(zend_class_entry *ce); |
951 | | ZEND_API void zend_type_release(zend_type type, bool persistent); |
952 | | ZEND_API zend_string *zend_create_member_string(zend_string *class_name, zend_string *member_name); |
953 | | |
954 | | |
955 | | ZEND_API ZEND_COLD void zend_user_exception_handler(void); |
956 | | |
957 | | #define zend_try_exception_handler() do { \ |
958 | | if (UNEXPECTED(EG(exception))) { \ |
959 | | if (Z_TYPE(EG(user_exception_handler)) != IS_UNDEF) { \ |
960 | | zend_user_exception_handler(); \ |
961 | | } \ |
962 | | } \ |
963 | | } while (0) |
964 | | |
965 | | void zend_free_internal_arg_info(zend_internal_function *function); |
966 | | ZEND_API void destroy_zend_function(zend_function *function); |
967 | | ZEND_API void zend_function_dtor(zval *zv); |
968 | | ZEND_API void destroy_zend_class(zval *zv); |
969 | | void zend_class_add_ref(zval *zv); |
970 | | |
971 | | ZEND_API zend_string *zend_mangle_property_name(const char *src1, size_t src1_length, const char *src2, size_t src2_length, bool internal); |
972 | | #define zend_unmangle_property_name(mangled_property, class_name, prop_name) \ |
973 | 529k | zend_unmangle_property_name_ex(mangled_property, class_name, prop_name, NULL) |
974 | | ZEND_API zend_result zend_unmangle_property_name_ex(const zend_string *name, const char **class_name, const char **prop_name, size_t *prop_len); |
975 | | |
976 | 518k | static zend_always_inline const char *zend_get_unmangled_property_name(const zend_string *mangled_prop) { |
977 | 518k | const char *class_name, *prop_name; |
978 | 518k | zend_unmangle_property_name(mangled_prop, &class_name, &prop_name); |
979 | 518k | return prop_name; |
980 | 518k | } Unexecuted instantiation: php_date.c:zend_get_unmangled_property_name Unexecuted instantiation: php_pcre.c:zend_get_unmangled_property_name Unexecuted instantiation: exif.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_adler32.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_crc32.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_fnv.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_gost.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_haval.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_joaat.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_md.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_murmur.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_ripemd.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_sha_ni.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_sha_sse2.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_sha.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_sha3.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_snefru.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_tiger.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_whirlpool.c:zend_get_unmangled_property_name Unexecuted instantiation: hash_xxhash.c:zend_get_unmangled_property_name Unexecuted instantiation: hash.c:zend_get_unmangled_property_name Unexecuted instantiation: json_encoder.c:zend_get_unmangled_property_name Unexecuted instantiation: json_parser.tab.c:zend_get_unmangled_property_name Unexecuted instantiation: json_scanner.c:zend_get_unmangled_property_name Unexecuted instantiation: json.c:zend_get_unmangled_property_name Unexecuted instantiation: php_lexbor.c:zend_get_unmangled_property_name Unexecuted instantiation: csprng.c:zend_get_unmangled_property_name Unexecuted instantiation: engine_mt19937.c:zend_get_unmangled_property_name Unexecuted instantiation: engine_pcgoneseq128xslrr64.c:zend_get_unmangled_property_name Unexecuted instantiation: engine_secure.c:zend_get_unmangled_property_name Unexecuted instantiation: engine_user.c:zend_get_unmangled_property_name Unexecuted instantiation: engine_xoshiro256starstar.c:zend_get_unmangled_property_name Unexecuted instantiation: gammasection.c:zend_get_unmangled_property_name Unexecuted instantiation: random.c:zend_get_unmangled_property_name Unexecuted instantiation: randomizer.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_utils.c:zend_get_unmangled_property_name Unexecuted instantiation: php_reflection.c:zend_get_unmangled_property_name Unexecuted instantiation: php_spl.c:zend_get_unmangled_property_name Unexecuted instantiation: spl_array.c:zend_get_unmangled_property_name Unexecuted instantiation: spl_directory.c:zend_get_unmangled_property_name Unexecuted instantiation: spl_dllist.c:zend_get_unmangled_property_name Unexecuted instantiation: spl_exceptions.c:zend_get_unmangled_property_name Unexecuted instantiation: spl_fixedarray.c:zend_get_unmangled_property_name Unexecuted instantiation: spl_functions.c:zend_get_unmangled_property_name Unexecuted instantiation: spl_heap.c:zend_get_unmangled_property_name Unexecuted instantiation: spl_iterators.c:zend_get_unmangled_property_name Unexecuted instantiation: spl_observer.c:zend_get_unmangled_property_name Unexecuted instantiation: array.c:zend_get_unmangled_property_name Unexecuted instantiation: assert.c:zend_get_unmangled_property_name Unexecuted instantiation: base64.c:zend_get_unmangled_property_name Unexecuted instantiation: basic_functions.c:zend_get_unmangled_property_name Unexecuted instantiation: browscap.c:zend_get_unmangled_property_name Unexecuted instantiation: crc32_x86.c:zend_get_unmangled_property_name Unexecuted instantiation: crc32.c:zend_get_unmangled_property_name Unexecuted instantiation: credits.c:zend_get_unmangled_property_name Unexecuted instantiation: crypt.c:zend_get_unmangled_property_name Unexecuted instantiation: css.c:zend_get_unmangled_property_name Unexecuted instantiation: datetime.c:zend_get_unmangled_property_name Unexecuted instantiation: dir.c:zend_get_unmangled_property_name Unexecuted instantiation: dl.c:zend_get_unmangled_property_name Unexecuted instantiation: dns.c:zend_get_unmangled_property_name Unexecuted instantiation: exec.c:zend_get_unmangled_property_name Unexecuted instantiation: file.c:zend_get_unmangled_property_name Unexecuted instantiation: filestat.c:zend_get_unmangled_property_name Unexecuted instantiation: filters.c:zend_get_unmangled_property_name Unexecuted instantiation: flock_compat.c:zend_get_unmangled_property_name Unexecuted instantiation: formatted_print.c:zend_get_unmangled_property_name Unexecuted instantiation: fsock.c:zend_get_unmangled_property_name Unexecuted instantiation: ftok.c:zend_get_unmangled_property_name Unexecuted instantiation: ftp_fopen_wrapper.c:zend_get_unmangled_property_name Unexecuted instantiation: head.c:zend_get_unmangled_property_name Unexecuted instantiation: hrtime.c:zend_get_unmangled_property_name Unexecuted instantiation: html.c:zend_get_unmangled_property_name Unexecuted instantiation: http_fopen_wrapper.c:zend_get_unmangled_property_name Unexecuted instantiation: http.c:zend_get_unmangled_property_name Unexecuted instantiation: image.c:zend_get_unmangled_property_name Unexecuted instantiation: incomplete_class.c:zend_get_unmangled_property_name Unexecuted instantiation: info.c:zend_get_unmangled_property_name Unexecuted instantiation: iptc.c:zend_get_unmangled_property_name Unexecuted instantiation: levenshtein.c:zend_get_unmangled_property_name Unexecuted instantiation: link.c:zend_get_unmangled_property_name Unexecuted instantiation: mail.c:zend_get_unmangled_property_name Unexecuted instantiation: math.c:zend_get_unmangled_property_name Unexecuted instantiation: md5.c:zend_get_unmangled_property_name Unexecuted instantiation: metaphone.c:zend_get_unmangled_property_name Unexecuted instantiation: microtime.c:zend_get_unmangled_property_name Unexecuted instantiation: net.c:zend_get_unmangled_property_name Unexecuted instantiation: pack.c:zend_get_unmangled_property_name Unexecuted instantiation: pageinfo.c:zend_get_unmangled_property_name Unexecuted instantiation: password.c:zend_get_unmangled_property_name Unexecuted instantiation: php_fopen_wrapper.c:zend_get_unmangled_property_name Unexecuted instantiation: proc_open.c:zend_get_unmangled_property_name Unexecuted instantiation: quot_print.c:zend_get_unmangled_property_name Unexecuted instantiation: scanf.c:zend_get_unmangled_property_name Unexecuted instantiation: sha1.c:zend_get_unmangled_property_name Unexecuted instantiation: soundex.c:zend_get_unmangled_property_name Unexecuted instantiation: streamsfuncs.c:zend_get_unmangled_property_name Unexecuted instantiation: string.c:zend_get_unmangled_property_name Unexecuted instantiation: strnatcmp.c:zend_get_unmangled_property_name Unexecuted instantiation: syslog.c:zend_get_unmangled_property_name Unexecuted instantiation: type.c:zend_get_unmangled_property_name Unexecuted instantiation: uniqid.c:zend_get_unmangled_property_name Unexecuted instantiation: url_scanner_ex.c:zend_get_unmangled_property_name Unexecuted instantiation: url.c:zend_get_unmangled_property_name Unexecuted instantiation: user_filters.c:zend_get_unmangled_property_name Unexecuted instantiation: uuencode.c:zend_get_unmangled_property_name var_unserializer.c:zend_get_unmangled_property_name Line | Count | Source | 976 | 508k | static zend_always_inline const char *zend_get_unmangled_property_name(const zend_string *mangled_prop) { | 977 | 508k | const char *class_name, *prop_name; | 978 | 508k | zend_unmangle_property_name(mangled_prop, &class_name, &prop_name); | 979 | 508k | return prop_name; | 980 | 508k | } |
var.c:zend_get_unmangled_property_name Line | Count | Source | 976 | 289 | static zend_always_inline const char *zend_get_unmangled_property_name(const zend_string *mangled_prop) { | 977 | 289 | const char *class_name, *prop_name; | 978 | 289 | zend_unmangle_property_name(mangled_prop, &class_name, &prop_name); | 979 | 289 | return prop_name; | 980 | 289 | } |
Unexecuted instantiation: versioning.c:zend_get_unmangled_property_name Unexecuted instantiation: crypt_sha256.c:zend_get_unmangled_property_name Unexecuted instantiation: crypt_sha512.c:zend_get_unmangled_property_name Unexecuted instantiation: php_crypt_r.c:zend_get_unmangled_property_name Unexecuted instantiation: php_uri.c:zend_get_unmangled_property_name Unexecuted instantiation: php_uri_common.c:zend_get_unmangled_property_name Unexecuted instantiation: explicit_bzero.c:zend_get_unmangled_property_name Unexecuted instantiation: fopen_wrappers.c:zend_get_unmangled_property_name Unexecuted instantiation: getopt.c:zend_get_unmangled_property_name Unexecuted instantiation: main.c:zend_get_unmangled_property_name Unexecuted instantiation: network.c:zend_get_unmangled_property_name Unexecuted instantiation: output.c:zend_get_unmangled_property_name Unexecuted instantiation: php_content_types.c:zend_get_unmangled_property_name Unexecuted instantiation: php_ini_builder.c:zend_get_unmangled_property_name Unexecuted instantiation: php_ini.c:zend_get_unmangled_property_name Unexecuted instantiation: php_glob.c:zend_get_unmangled_property_name Unexecuted instantiation: php_odbc_utils.c:zend_get_unmangled_property_name Unexecuted instantiation: php_open_temporary_file.c:zend_get_unmangled_property_name Unexecuted instantiation: php_scandir.c:zend_get_unmangled_property_name Unexecuted instantiation: php_syslog.c:zend_get_unmangled_property_name Unexecuted instantiation: php_ticks.c:zend_get_unmangled_property_name Unexecuted instantiation: php_variables.c:zend_get_unmangled_property_name Unexecuted instantiation: reentrancy.c:zend_get_unmangled_property_name Unexecuted instantiation: rfc1867.c:zend_get_unmangled_property_name Unexecuted instantiation: safe_bcmp.c:zend_get_unmangled_property_name Unexecuted instantiation: SAPI.c:zend_get_unmangled_property_name Unexecuted instantiation: snprintf.c:zend_get_unmangled_property_name Unexecuted instantiation: spprintf.c:zend_get_unmangled_property_name Unexecuted instantiation: strlcat.c:zend_get_unmangled_property_name Unexecuted instantiation: strlcpy.c:zend_get_unmangled_property_name Unexecuted instantiation: cast.c:zend_get_unmangled_property_name Unexecuted instantiation: filter.c:zend_get_unmangled_property_name Unexecuted instantiation: glob_wrapper.c:zend_get_unmangled_property_name Unexecuted instantiation: memory.c:zend_get_unmangled_property_name Unexecuted instantiation: mmap.c:zend_get_unmangled_property_name Unexecuted instantiation: plain_wrapper.c:zend_get_unmangled_property_name Unexecuted instantiation: streams.c:zend_get_unmangled_property_name Unexecuted instantiation: transports.c:zend_get_unmangled_property_name Unexecuted instantiation: userspace.c:zend_get_unmangled_property_name Unexecuted instantiation: xp_socket.c:zend_get_unmangled_property_name Unexecuted instantiation: block_pass.c:zend_get_unmangled_property_name Unexecuted instantiation: compact_literals.c:zend_get_unmangled_property_name Unexecuted instantiation: compact_vars.c:zend_get_unmangled_property_name Unexecuted instantiation: dce.c:zend_get_unmangled_property_name Unexecuted instantiation: dfa_pass.c:zend_get_unmangled_property_name Unexecuted instantiation: escape_analysis.c:zend_get_unmangled_property_name Unexecuted instantiation: nop_removal.c:zend_get_unmangled_property_name Unexecuted instantiation: optimize_func_calls.c:zend_get_unmangled_property_name Unexecuted instantiation: optimize_temp_vars_5.c:zend_get_unmangled_property_name Unexecuted instantiation: pass1.c:zend_get_unmangled_property_name Unexecuted instantiation: pass3.c:zend_get_unmangled_property_name Unexecuted instantiation: sccp.c:zend_get_unmangled_property_name Unexecuted instantiation: scdf.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_call_graph.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_cfg.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_dfg.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_dump.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_func_info.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_inference.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_optimizer.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_ssa.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_alloc.c:zend_get_unmangled_property_name zend_API.c:zend_get_unmangled_property_name Line | Count | Source | 976 | 6.40k | static zend_always_inline const char *zend_get_unmangled_property_name(const zend_string *mangled_prop) { | 977 | 6.40k | const char *class_name, *prop_name; | 978 | 6.40k | zend_unmangle_property_name(mangled_prop, &class_name, &prop_name); | 979 | 6.40k | return prop_name; | 980 | 6.40k | } |
Unexecuted instantiation: zend_ast.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_attributes.c:zend_get_unmangled_property_name zend_builtin_functions.c:zend_get_unmangled_property_name Line | Count | Source | 976 | 199 | static zend_always_inline const char *zend_get_unmangled_property_name(const zend_string *mangled_prop) { | 977 | 199 | const char *class_name, *prop_name; | 978 | 199 | zend_unmangle_property_name(mangled_prop, &class_name, &prop_name); | 979 | 199 | return prop_name; | 980 | 199 | } |
Unexecuted instantiation: zend_call_stack.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_closures.c:zend_get_unmangled_property_name zend_compile.c:zend_get_unmangled_property_name Line | Count | Source | 976 | 799 | static zend_always_inline const char *zend_get_unmangled_property_name(const zend_string *mangled_prop) { | 977 | 799 | const char *class_name, *prop_name; | 978 | 799 | zend_unmangle_property_name(mangled_prop, &class_name, &prop_name); | 979 | 799 | return prop_name; | 980 | 799 | } |
Unexecuted instantiation: zend_constants.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_default_classes.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_dtrace.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_enum.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_exceptions.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_execute_API.c:zend_get_unmangled_property_name zend_execute.c:zend_get_unmangled_property_name Line | Count | Source | 976 | 2.11k | static zend_always_inline const char *zend_get_unmangled_property_name(const zend_string *mangled_prop) { | 977 | 2.11k | const char *class_name, *prop_name; | 978 | 2.11k | zend_unmangle_property_name(mangled_prop, &class_name, &prop_name); | 979 | 2.11k | return prop_name; | 980 | 2.11k | } |
Unexecuted instantiation: zend_extensions.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_fibers.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_float.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_gc.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_generators.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_hash.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_highlight.c:zend_get_unmangled_property_name zend_inheritance.c:zend_get_unmangled_property_name Line | Count | Source | 976 | 172 | static zend_always_inline const char *zend_get_unmangled_property_name(const zend_string *mangled_prop) { | 977 | 172 | const char *class_name, *prop_name; | 978 | 172 | zend_unmangle_property_name(mangled_prop, &class_name, &prop_name); | 979 | 172 | return prop_name; | 980 | 172 | } |
Unexecuted instantiation: zend_ini_parser.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_ini_scanner.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_ini.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_interfaces.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_iterators.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_language_parser.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_language_scanner.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_lazy_objects.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_list.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_multibyte.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_object_handlers.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_objects_API.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_objects.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_observer.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_opcode.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_operators.c:zend_get_unmangled_property_name zend_property_hooks.c:zend_get_unmangled_property_name Line | Count | Source | 976 | 117 | static zend_always_inline const char *zend_get_unmangled_property_name(const zend_string *mangled_prop) { | 977 | 117 | const char *class_name, *prop_name; | 978 | 117 | zend_unmangle_property_name(mangled_prop, &class_name, &prop_name); | 979 | 117 | return prop_name; | 980 | 117 | } |
Unexecuted instantiation: zend_signal.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_smart_str.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_stream.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_string.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_strtod.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_system_id.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_variables.c:zend_get_unmangled_property_name Unexecuted instantiation: zend_weakrefs.c:zend_get_unmangled_property_name Unexecuted instantiation: zend.c:zend_get_unmangled_property_name Unexecuted instantiation: internal_functions_cli.c:zend_get_unmangled_property_name Unexecuted instantiation: fuzzer-parser.c:zend_get_unmangled_property_name Unexecuted instantiation: fuzzer-sapi.c:zend_get_unmangled_property_name Unexecuted instantiation: fuzzer-tracing-jit.c:zend_get_unmangled_property_name Unexecuted instantiation: fuzzer-exif.c:zend_get_unmangled_property_name Unexecuted instantiation: fuzzer-unserialize.c:zend_get_unmangled_property_name Unexecuted instantiation: fuzzer-function-jit.c:zend_get_unmangled_property_name Unexecuted instantiation: fuzzer-json.c:zend_get_unmangled_property_name Unexecuted instantiation: fuzzer-unserializehash.c:zend_get_unmangled_property_name Unexecuted instantiation: fuzzer-execute.c:zend_get_unmangled_property_name |
981 | | |
982 | 5.21k | #define ZEND_FUNCTION_DTOR zend_function_dtor |
983 | | #define ZEND_CLASS_DTOR destroy_zend_class |
984 | | |
985 | | typedef bool (*zend_needs_live_range_cb)(zend_op_array *op_array, zend_op *opline); |
986 | | ZEND_API void zend_recalc_live_ranges( |
987 | | zend_op_array *op_array, zend_needs_live_range_cb needs_live_range); |
988 | | |
989 | | ZEND_API void pass_two(zend_op_array *op_array); |
990 | | ZEND_API bool zend_is_compiling(void); |
991 | | ZEND_API char *zend_make_compiled_string_description(const char *name); |
992 | | ZEND_API void zend_initialize_class_data(zend_class_entry *ce, bool nullify_handlers); |
993 | | uint32_t zend_get_class_fetch_type(const zend_string *name); |
994 | | ZEND_API uint8_t zend_get_call_op(const zend_op *init_op, zend_function *fbc, bool result_used); |
995 | | ZEND_API bool zend_is_smart_branch(const zend_op *opline); |
996 | | |
997 | | typedef bool (*zend_auto_global_callback)(zend_string *name); |
998 | | typedef struct _zend_auto_global { |
999 | | zend_string *name; |
1000 | | zend_auto_global_callback auto_global_callback; |
1001 | | bool jit; |
1002 | | bool armed; |
1003 | | } zend_auto_global; |
1004 | | |
1005 | | ZEND_API zend_result zend_register_auto_global(zend_string *name, bool jit, zend_auto_global_callback auto_global_callback); |
1006 | | ZEND_API void zend_activate_auto_globals(void); |
1007 | | ZEND_API bool zend_is_auto_global(zend_string *name); |
1008 | | ZEND_API bool zend_is_auto_global_str(const char *name, size_t len); |
1009 | | ZEND_API size_t zend_dirname(char *path, size_t len); |
1010 | | ZEND_API void zend_set_function_arg_flags(zend_function *func); |
1011 | | |
1012 | | int ZEND_FASTCALL zendlex(zend_parser_stack_elem *elem); |
1013 | | |
1014 | | void zend_assert_valid_class_name(const zend_string *const_name, const char *type); |
1015 | | |
1016 | | zend_string *zend_type_to_string_resolved(zend_type type, zend_class_entry *scope); |
1017 | | ZEND_API zend_string *zend_type_to_string(zend_type type); |
1018 | | |
1019 | | /* BEGIN: OPCODES */ |
1020 | | |
1021 | | #include "zend_vm_opcodes.h" |
1022 | | |
1023 | | /* END: OPCODES */ |
1024 | | |
1025 | | /* class fetches */ |
1026 | 1.37M | #define ZEND_FETCH_CLASS_DEFAULT 0 |
1027 | 39.9k | #define ZEND_FETCH_CLASS_SELF 1 |
1028 | 34.9k | #define ZEND_FETCH_CLASS_PARENT 2 |
1029 | 10.2k | #define ZEND_FETCH_CLASS_STATIC 3 |
1030 | 224 | #define ZEND_FETCH_CLASS_AUTO 4 |
1031 | 6.83k | #define ZEND_FETCH_CLASS_INTERFACE 5 |
1032 | 4.15k | #define ZEND_FETCH_CLASS_TRAIT 6 |
1033 | 18.6k | #define ZEND_FETCH_CLASS_MASK 0x0f |
1034 | 1.60M | #define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80 |
1035 | 757k | #define ZEND_FETCH_CLASS_SILENT 0x0100 |
1036 | 381k | #define ZEND_FETCH_CLASS_EXCEPTION 0x0200 |
1037 | 309k | #define ZEND_FETCH_CLASS_ALLOW_UNLINKED 0x0400 |
1038 | 6.29k | #define ZEND_FETCH_CLASS_ALLOW_NEARLY_LINKED 0x0800 |
1039 | | |
1040 | | /* These should not clash with ZEND_ACC_PPP_MASK and ZEND_ACC_PPP_SET_MASK */ |
1041 | 118k | #define ZEND_PARAM_REF (1<<3) |
1042 | 119k | #define ZEND_PARAM_VARIADIC (1<<4) |
1043 | | |
1044 | 3.09M | #define ZEND_NAME_FQ 0 |
1045 | 1.03M | #define ZEND_NAME_NOT_FQ 1 |
1046 | 3.41M | #define ZEND_NAME_RELATIVE 2 |
1047 | | |
1048 | | /* ZEND_FETCH_ flags in class name AST of new const expression must not clash with ZEND_NAME_ flags */ |
1049 | 1.42k | #define ZEND_CONST_EXPR_NEW_FETCH_TYPE_SHIFT 2 |
1050 | | |
1051 | 78.3k | #define ZEND_TYPE_NULLABLE (1<<8) |
1052 | | |
1053 | 998k | #define ZEND_ARRAY_SYNTAX_LIST 1 /* list() */ |
1054 | 9.70k | #define ZEND_ARRAY_SYNTAX_LONG 2 /* array() */ |
1055 | 130k | #define ZEND_ARRAY_SYNTAX_SHORT 3 /* [] */ |
1056 | | |
1057 | | /* var status for backpatching */ |
1058 | 1.99M | #define BP_VAR_R 0 |
1059 | 821k | #define BP_VAR_W 1 |
1060 | 347k | #define BP_VAR_RW 2 |
1061 | 47.5M | #define BP_VAR_IS 3 |
1062 | 361k | #define BP_VAR_FUNC_ARG 4 |
1063 | 72.6k | #define BP_VAR_UNSET 5 |
1064 | | |
1065 | 21.4M | #define ZEND_INTERNAL_FUNCTION 1 |
1066 | 2.80M | #define ZEND_USER_FUNCTION 2 |
1067 | 1.44M | #define ZEND_EVAL_CODE 4 |
1068 | | |
1069 | 25.5M | #define ZEND_USER_CODE(type) ((type) != ZEND_INTERNAL_FUNCTION) |
1070 | | |
1071 | 336k | #define ZEND_INTERNAL_CLASS 1 |
1072 | 192M | #define ZEND_USER_CLASS 2 |
1073 | | |
1074 | 5.32k | #define ZEND_EVAL (1<<0) |
1075 | 2.68k | #define ZEND_INCLUDE (1<<1) |
1076 | 457 | #define ZEND_INCLUDE_ONCE (1<<2) |
1077 | 1.43M | #define ZEND_REQUIRE (1<<3) |
1078 | 14.6k | #define ZEND_REQUIRE_ONCE (1<<4) |
1079 | | |
1080 | | /* global/local fetches */ |
1081 | 29.3k | #define ZEND_FETCH_GLOBAL (1<<1) |
1082 | 139k | #define ZEND_FETCH_LOCAL (1<<2) |
1083 | 59.2k | #define ZEND_FETCH_GLOBAL_LOCK (1<<3) |
1084 | | |
1085 | | #define ZEND_FETCH_TYPE_MASK 0xe |
1086 | | |
1087 | | /* Only one of these can ever be in use */ |
1088 | 8.42k | #define ZEND_FETCH_REF 1 |
1089 | 5.10k | #define ZEND_FETCH_DIM_WRITE 2 |
1090 | 115k | #define ZEND_FETCH_OBJ_FLAGS 3 |
1091 | | |
1092 | | /* Used to mark what kind of operation a writing FETCH_DIM is used in, |
1093 | | * to produce a more precise error on incorrect string offset use. */ |
1094 | 5.26k | #define ZEND_FETCH_DIM_REF 1 |
1095 | 41.7k | #define ZEND_FETCH_DIM_DIM 2 |
1096 | 1.23k | #define ZEND_FETCH_DIM_OBJ 3 |
1097 | 578 | #define ZEND_FETCH_DIM_INCDEC 4 |
1098 | | |
1099 | 9.71k | #define ZEND_ISEMPTY (1<<0) |
1100 | | |
1101 | 599k | #define ZEND_LAST_CATCH (1<<0) |
1102 | | |
1103 | 20.5k | #define ZEND_FREE_ON_RETURN (1<<0) |
1104 | 54.7k | #define ZEND_FREE_SWITCH (1<<1) |
1105 | 68.9k | #define ZEND_FREE_VOID_CAST (1<<2) |
1106 | | |
1107 | | #define ZEND_SEND_BY_VAL 0u |
1108 | 2.31M | #define ZEND_SEND_BY_REF 1u |
1109 | 2.19M | #define ZEND_SEND_PREFER_REF 2u |
1110 | | |
1111 | 10.6k | #define ZEND_THROW_IS_EXPR 1u |
1112 | | |
1113 | 5.14k | #define ZEND_FCALL_MAY_HAVE_EXTRA_NAMED_PARAMS 1 |
1114 | | |
1115 | | /* The send mode, the is_variadic, the is_promoted, and the is_tentative flags are stored as part of zend_type */ |
1116 | 163k | #define _ZEND_SEND_MODE_SHIFT _ZEND_TYPE_EXTRA_FLAGS_SHIFT |
1117 | 33.4k | #define _ZEND_IS_VARIADIC_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 2)) |
1118 | 898 | #define _ZEND_IS_PROMOTED_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 3)) |
1119 | 1.57k | #define _ZEND_IS_TENTATIVE_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 4)) |
1120 | | #define ZEND_ARG_SEND_MODE(arg_info) \ |
1121 | 93.1k | ((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3) |
1122 | | #define ZEND_ARG_IS_VARIADIC(arg_info) \ |
1123 | 32.8k | ((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_VARIADIC_BIT) != 0) |
1124 | | #define ZEND_ARG_IS_PROMOTED(arg_info) \ |
1125 | | ((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_PROMOTED_BIT) != 0) |
1126 | | #define ZEND_ARG_TYPE_IS_TENTATIVE(arg_info) \ |
1127 | 1.57k | ((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_TENTATIVE_BIT) != 0) |
1128 | | |
1129 | 303k | #define ZEND_DIM_IS (1 << 0) /* isset fetch needed for null coalesce. Set in zend_compile.c for ZEND_AST_DIM nested within ZEND_AST_COALESCE. */ |
1130 | | |
1131 | | /* Attributes for ${} encaps var in strings (ZEND_AST_DIM or ZEND_AST_VAR node) */ |
1132 | | /* ZEND_AST_VAR nodes can have any of the ZEND_ENCAPS_VAR_* flags */ |
1133 | | /* ZEND_AST_DIM flags can have ZEND_ENCAPS_VAR_DOLLAR_CURLY during the parse phase. */ |
1134 | 526k | #define ZEND_ENCAPS_VAR_DOLLAR_CURLY (1 << 0) |
1135 | 525k | #define ZEND_ENCAPS_VAR_DOLLAR_CURLY_VAR_VAR (1 << 1) |
1136 | | |
1137 | | /* Make sure these don't clash with ZEND_FETCH_CLASS_* flags. */ |
1138 | | #define IS_CONSTANT_CLASS 0x400 /* __CLASS__ in trait */ |
1139 | 144k | #define IS_CONSTANT_UNQUALIFIED_IN_NAMESPACE 0x800 |
1140 | | |
1141 | | static zend_always_inline bool zend_check_arg_send_type(const zend_function *zf, uint32_t arg_num, uint32_t mask) |
1142 | 2.37M | { |
1143 | 2.37M | arg_num--; |
1144 | 2.37M | if (UNEXPECTED(arg_num >= zf->common.num_args)) { |
1145 | 1.29M | if (EXPECTED((zf->common.fn_flags & ZEND_ACC_VARIADIC) == 0)) { |
1146 | 1.11M | return 0; |
1147 | 1.11M | } |
1148 | 183k | arg_num = zf->common.num_args; |
1149 | 183k | } |
1150 | 1.25M | return UNEXPECTED((ZEND_ARG_SEND_MODE(&zf->common.arg_info[arg_num]) & mask) != 0); |
1151 | 2.37M | } Unexecuted instantiation: php_date.c:zend_check_arg_send_type Unexecuted instantiation: php_pcre.c:zend_check_arg_send_type Unexecuted instantiation: exif.c:zend_check_arg_send_type Unexecuted instantiation: hash_adler32.c:zend_check_arg_send_type Unexecuted instantiation: hash_crc32.c:zend_check_arg_send_type Unexecuted instantiation: hash_fnv.c:zend_check_arg_send_type Unexecuted instantiation: hash_gost.c:zend_check_arg_send_type Unexecuted instantiation: hash_haval.c:zend_check_arg_send_type Unexecuted instantiation: hash_joaat.c:zend_check_arg_send_type Unexecuted instantiation: hash_md.c:zend_check_arg_send_type Unexecuted instantiation: hash_murmur.c:zend_check_arg_send_type Unexecuted instantiation: hash_ripemd.c:zend_check_arg_send_type Unexecuted instantiation: hash_sha_ni.c:zend_check_arg_send_type Unexecuted instantiation: hash_sha_sse2.c:zend_check_arg_send_type Unexecuted instantiation: hash_sha.c:zend_check_arg_send_type Unexecuted instantiation: hash_sha3.c:zend_check_arg_send_type Unexecuted instantiation: hash_snefru.c:zend_check_arg_send_type Unexecuted instantiation: hash_tiger.c:zend_check_arg_send_type Unexecuted instantiation: hash_whirlpool.c:zend_check_arg_send_type Unexecuted instantiation: hash_xxhash.c:zend_check_arg_send_type Unexecuted instantiation: hash.c:zend_check_arg_send_type Unexecuted instantiation: json_encoder.c:zend_check_arg_send_type Unexecuted instantiation: json_parser.tab.c:zend_check_arg_send_type Unexecuted instantiation: json_scanner.c:zend_check_arg_send_type Unexecuted instantiation: json.c:zend_check_arg_send_type Unexecuted instantiation: php_lexbor.c:zend_check_arg_send_type Unexecuted instantiation: csprng.c:zend_check_arg_send_type Unexecuted instantiation: engine_mt19937.c:zend_check_arg_send_type Unexecuted instantiation: engine_pcgoneseq128xslrr64.c:zend_check_arg_send_type Unexecuted instantiation: engine_secure.c:zend_check_arg_send_type Unexecuted instantiation: engine_user.c:zend_check_arg_send_type Unexecuted instantiation: engine_xoshiro256starstar.c:zend_check_arg_send_type Unexecuted instantiation: gammasection.c:zend_check_arg_send_type Unexecuted instantiation: random.c:zend_check_arg_send_type Unexecuted instantiation: randomizer.c:zend_check_arg_send_type Unexecuted instantiation: zend_utils.c:zend_check_arg_send_type Unexecuted instantiation: php_reflection.c:zend_check_arg_send_type Unexecuted instantiation: php_spl.c:zend_check_arg_send_type Unexecuted instantiation: spl_array.c:zend_check_arg_send_type Unexecuted instantiation: spl_directory.c:zend_check_arg_send_type Unexecuted instantiation: spl_dllist.c:zend_check_arg_send_type Unexecuted instantiation: spl_exceptions.c:zend_check_arg_send_type Unexecuted instantiation: spl_fixedarray.c:zend_check_arg_send_type Unexecuted instantiation: spl_functions.c:zend_check_arg_send_type Unexecuted instantiation: spl_heap.c:zend_check_arg_send_type Unexecuted instantiation: spl_iterators.c:zend_check_arg_send_type Unexecuted instantiation: spl_observer.c:zend_check_arg_send_type Unexecuted instantiation: array.c:zend_check_arg_send_type Unexecuted instantiation: assert.c:zend_check_arg_send_type Unexecuted instantiation: base64.c:zend_check_arg_send_type Unexecuted instantiation: basic_functions.c:zend_check_arg_send_type Unexecuted instantiation: browscap.c:zend_check_arg_send_type Unexecuted instantiation: crc32_x86.c:zend_check_arg_send_type Unexecuted instantiation: crc32.c:zend_check_arg_send_type Unexecuted instantiation: credits.c:zend_check_arg_send_type Unexecuted instantiation: crypt.c:zend_check_arg_send_type Unexecuted instantiation: css.c:zend_check_arg_send_type Unexecuted instantiation: datetime.c:zend_check_arg_send_type Unexecuted instantiation: dir.c:zend_check_arg_send_type Unexecuted instantiation: dl.c:zend_check_arg_send_type Unexecuted instantiation: dns.c:zend_check_arg_send_type Unexecuted instantiation: exec.c:zend_check_arg_send_type Unexecuted instantiation: file.c:zend_check_arg_send_type Unexecuted instantiation: filestat.c:zend_check_arg_send_type Unexecuted instantiation: filters.c:zend_check_arg_send_type Unexecuted instantiation: flock_compat.c:zend_check_arg_send_type Unexecuted instantiation: formatted_print.c:zend_check_arg_send_type Unexecuted instantiation: fsock.c:zend_check_arg_send_type Unexecuted instantiation: ftok.c:zend_check_arg_send_type Unexecuted instantiation: ftp_fopen_wrapper.c:zend_check_arg_send_type Unexecuted instantiation: head.c:zend_check_arg_send_type Unexecuted instantiation: hrtime.c:zend_check_arg_send_type Unexecuted instantiation: html.c:zend_check_arg_send_type Unexecuted instantiation: http_fopen_wrapper.c:zend_check_arg_send_type Unexecuted instantiation: http.c:zend_check_arg_send_type Unexecuted instantiation: image.c:zend_check_arg_send_type Unexecuted instantiation: incomplete_class.c:zend_check_arg_send_type Unexecuted instantiation: info.c:zend_check_arg_send_type Unexecuted instantiation: iptc.c:zend_check_arg_send_type Unexecuted instantiation: levenshtein.c:zend_check_arg_send_type Unexecuted instantiation: link.c:zend_check_arg_send_type Unexecuted instantiation: mail.c:zend_check_arg_send_type Unexecuted instantiation: math.c:zend_check_arg_send_type Unexecuted instantiation: md5.c:zend_check_arg_send_type Unexecuted instantiation: metaphone.c:zend_check_arg_send_type Unexecuted instantiation: microtime.c:zend_check_arg_send_type Unexecuted instantiation: net.c:zend_check_arg_send_type Unexecuted instantiation: pack.c:zend_check_arg_send_type Unexecuted instantiation: pageinfo.c:zend_check_arg_send_type Unexecuted instantiation: password.c:zend_check_arg_send_type Unexecuted instantiation: php_fopen_wrapper.c:zend_check_arg_send_type Unexecuted instantiation: proc_open.c:zend_check_arg_send_type Unexecuted instantiation: quot_print.c:zend_check_arg_send_type Unexecuted instantiation: scanf.c:zend_check_arg_send_type Unexecuted instantiation: sha1.c:zend_check_arg_send_type Unexecuted instantiation: soundex.c:zend_check_arg_send_type Unexecuted instantiation: streamsfuncs.c:zend_check_arg_send_type Unexecuted instantiation: string.c:zend_check_arg_send_type Unexecuted instantiation: strnatcmp.c:zend_check_arg_send_type Unexecuted instantiation: syslog.c:zend_check_arg_send_type Unexecuted instantiation: type.c:zend_check_arg_send_type Unexecuted instantiation: uniqid.c:zend_check_arg_send_type Unexecuted instantiation: url_scanner_ex.c:zend_check_arg_send_type Unexecuted instantiation: url.c:zend_check_arg_send_type Unexecuted instantiation: user_filters.c:zend_check_arg_send_type Unexecuted instantiation: uuencode.c:zend_check_arg_send_type Unexecuted instantiation: var_unserializer.c:zend_check_arg_send_type Unexecuted instantiation: var.c:zend_check_arg_send_type Unexecuted instantiation: versioning.c:zend_check_arg_send_type Unexecuted instantiation: crypt_sha256.c:zend_check_arg_send_type Unexecuted instantiation: crypt_sha512.c:zend_check_arg_send_type Unexecuted instantiation: php_crypt_r.c:zend_check_arg_send_type Unexecuted instantiation: php_uri.c:zend_check_arg_send_type Unexecuted instantiation: php_uri_common.c:zend_check_arg_send_type Unexecuted instantiation: explicit_bzero.c:zend_check_arg_send_type Unexecuted instantiation: fopen_wrappers.c:zend_check_arg_send_type Unexecuted instantiation: getopt.c:zend_check_arg_send_type Unexecuted instantiation: main.c:zend_check_arg_send_type Unexecuted instantiation: network.c:zend_check_arg_send_type Unexecuted instantiation: output.c:zend_check_arg_send_type Unexecuted instantiation: php_content_types.c:zend_check_arg_send_type Unexecuted instantiation: php_ini_builder.c:zend_check_arg_send_type Unexecuted instantiation: php_ini.c:zend_check_arg_send_type Unexecuted instantiation: php_glob.c:zend_check_arg_send_type Unexecuted instantiation: php_odbc_utils.c:zend_check_arg_send_type Unexecuted instantiation: php_open_temporary_file.c:zend_check_arg_send_type Unexecuted instantiation: php_scandir.c:zend_check_arg_send_type Unexecuted instantiation: php_syslog.c:zend_check_arg_send_type Unexecuted instantiation: php_ticks.c:zend_check_arg_send_type Unexecuted instantiation: php_variables.c:zend_check_arg_send_type Unexecuted instantiation: reentrancy.c:zend_check_arg_send_type Unexecuted instantiation: rfc1867.c:zend_check_arg_send_type Unexecuted instantiation: safe_bcmp.c:zend_check_arg_send_type Unexecuted instantiation: SAPI.c:zend_check_arg_send_type Unexecuted instantiation: snprintf.c:zend_check_arg_send_type Unexecuted instantiation: spprintf.c:zend_check_arg_send_type Unexecuted instantiation: strlcat.c:zend_check_arg_send_type Unexecuted instantiation: strlcpy.c:zend_check_arg_send_type Unexecuted instantiation: cast.c:zend_check_arg_send_type Unexecuted instantiation: filter.c:zend_check_arg_send_type Unexecuted instantiation: glob_wrapper.c:zend_check_arg_send_type Unexecuted instantiation: memory.c:zend_check_arg_send_type Unexecuted instantiation: mmap.c:zend_check_arg_send_type Unexecuted instantiation: plain_wrapper.c:zend_check_arg_send_type Unexecuted instantiation: streams.c:zend_check_arg_send_type Unexecuted instantiation: transports.c:zend_check_arg_send_type Unexecuted instantiation: userspace.c:zend_check_arg_send_type Unexecuted instantiation: xp_socket.c:zend_check_arg_send_type Unexecuted instantiation: block_pass.c:zend_check_arg_send_type Unexecuted instantiation: compact_literals.c:zend_check_arg_send_type Unexecuted instantiation: compact_vars.c:zend_check_arg_send_type Unexecuted instantiation: dce.c:zend_check_arg_send_type Unexecuted instantiation: dfa_pass.c:zend_check_arg_send_type Unexecuted instantiation: escape_analysis.c:zend_check_arg_send_type Unexecuted instantiation: nop_removal.c:zend_check_arg_send_type optimize_func_calls.c:zend_check_arg_send_type Line | Count | Source | 1142 | 2.94k | { | 1143 | 2.94k | arg_num--; | 1144 | 2.94k | if (UNEXPECTED(arg_num >= zf->common.num_args)) { | 1145 | 139 | if (EXPECTED((zf->common.fn_flags & ZEND_ACC_VARIADIC) == 0)) { | 1146 | 121 | return 0; | 1147 | 121 | } | 1148 | 18 | arg_num = zf->common.num_args; | 1149 | 18 | } | 1150 | 2.82k | return UNEXPECTED((ZEND_ARG_SEND_MODE(&zf->common.arg_info[arg_num]) & mask) != 0); | 1151 | 2.94k | } |
Unexecuted instantiation: optimize_temp_vars_5.c:zend_check_arg_send_type Unexecuted instantiation: pass1.c:zend_check_arg_send_type Unexecuted instantiation: pass3.c:zend_check_arg_send_type Unexecuted instantiation: sccp.c:zend_check_arg_send_type Unexecuted instantiation: scdf.c:zend_check_arg_send_type Unexecuted instantiation: zend_call_graph.c:zend_check_arg_send_type Unexecuted instantiation: zend_cfg.c:zend_check_arg_send_type Unexecuted instantiation: zend_dfg.c:zend_check_arg_send_type Unexecuted instantiation: zend_dump.c:zend_check_arg_send_type Unexecuted instantiation: zend_func_info.c:zend_check_arg_send_type Unexecuted instantiation: zend_inference.c:zend_check_arg_send_type Unexecuted instantiation: zend_optimizer.c:zend_check_arg_send_type Unexecuted instantiation: zend_ssa.c:zend_check_arg_send_type Unexecuted instantiation: zend_alloc.c:zend_check_arg_send_type Unexecuted instantiation: zend_API.c:zend_check_arg_send_type Unexecuted instantiation: zend_ast.c:zend_check_arg_send_type Unexecuted instantiation: zend_attributes.c:zend_check_arg_send_type Unexecuted instantiation: zend_builtin_functions.c:zend_check_arg_send_type Unexecuted instantiation: zend_call_stack.c:zend_check_arg_send_type Unexecuted instantiation: zend_closures.c:zend_check_arg_send_type zend_compile.c:zend_check_arg_send_type Line | Count | Source | 1142 | 256k | { | 1143 | 256k | arg_num--; | 1144 | 256k | if (UNEXPECTED(arg_num >= zf->common.num_args)) { | 1145 | 42.0k | if (EXPECTED((zf->common.fn_flags & ZEND_ACC_VARIADIC) == 0)) { | 1146 | 31.3k | return 0; | 1147 | 31.3k | } | 1148 | 10.6k | arg_num = zf->common.num_args; | 1149 | 10.6k | } | 1150 | 225k | return UNEXPECTED((ZEND_ARG_SEND_MODE(&zf->common.arg_info[arg_num]) & mask) != 0); | 1151 | 256k | } |
Unexecuted instantiation: zend_constants.c:zend_check_arg_send_type Unexecuted instantiation: zend_default_classes.c:zend_check_arg_send_type Unexecuted instantiation: zend_dtrace.c:zend_check_arg_send_type Unexecuted instantiation: zend_enum.c:zend_check_arg_send_type Unexecuted instantiation: zend_exceptions.c:zend_check_arg_send_type zend_execute_API.c:zend_check_arg_send_type Line | Count | Source | 1142 | 869k | { | 1143 | 869k | arg_num--; | 1144 | 869k | if (UNEXPECTED(arg_num >= zf->common.num_args)) { | 1145 | 12.4k | if (EXPECTED((zf->common.fn_flags & ZEND_ACC_VARIADIC) == 0)) { | 1146 | 12.2k | return 0; | 1147 | 12.2k | } | 1148 | 178 | arg_num = zf->common.num_args; | 1149 | 178 | } | 1150 | 857k | return UNEXPECTED((ZEND_ARG_SEND_MODE(&zf->common.arg_info[arg_num]) & mask) != 0); | 1151 | 869k | } |
zend_execute.c:zend_check_arg_send_type Line | Count | Source | 1142 | 1.24M | { | 1143 | 1.24M | arg_num--; | 1144 | 1.24M | if (UNEXPECTED(arg_num >= zf->common.num_args)) { | 1145 | 1.24M | if (EXPECTED((zf->common.fn_flags & ZEND_ACC_VARIADIC) == 0)) { | 1146 | 1.06M | return 0; | 1147 | 1.06M | } | 1148 | 172k | arg_num = zf->common.num_args; | 1149 | 172k | } | 1150 | 174k | return UNEXPECTED((ZEND_ARG_SEND_MODE(&zf->common.arg_info[arg_num]) & mask) != 0); | 1151 | 1.24M | } |
Unexecuted instantiation: zend_extensions.c:zend_check_arg_send_type Unexecuted instantiation: zend_fibers.c:zend_check_arg_send_type Unexecuted instantiation: zend_float.c:zend_check_arg_send_type Unexecuted instantiation: zend_gc.c:zend_check_arg_send_type Unexecuted instantiation: zend_generators.c:zend_check_arg_send_type Unexecuted instantiation: zend_hash.c:zend_check_arg_send_type Unexecuted instantiation: zend_highlight.c:zend_check_arg_send_type Unexecuted instantiation: zend_inheritance.c:zend_check_arg_send_type Unexecuted instantiation: zend_ini_parser.c:zend_check_arg_send_type Unexecuted instantiation: zend_ini_scanner.c:zend_check_arg_send_type Unexecuted instantiation: zend_ini.c:zend_check_arg_send_type Unexecuted instantiation: zend_interfaces.c:zend_check_arg_send_type Unexecuted instantiation: zend_iterators.c:zend_check_arg_send_type Unexecuted instantiation: zend_language_parser.c:zend_check_arg_send_type Unexecuted instantiation: zend_language_scanner.c:zend_check_arg_send_type Unexecuted instantiation: zend_lazy_objects.c:zend_check_arg_send_type Unexecuted instantiation: zend_list.c:zend_check_arg_send_type Unexecuted instantiation: zend_multibyte.c:zend_check_arg_send_type Unexecuted instantiation: zend_object_handlers.c:zend_check_arg_send_type Unexecuted instantiation: zend_objects_API.c:zend_check_arg_send_type Unexecuted instantiation: zend_objects.c:zend_check_arg_send_type Unexecuted instantiation: zend_observer.c:zend_check_arg_send_type Unexecuted instantiation: zend_opcode.c:zend_check_arg_send_type Unexecuted instantiation: zend_operators.c:zend_check_arg_send_type Unexecuted instantiation: zend_property_hooks.c:zend_check_arg_send_type Unexecuted instantiation: zend_signal.c:zend_check_arg_send_type Unexecuted instantiation: zend_smart_str.c:zend_check_arg_send_type Unexecuted instantiation: zend_stream.c:zend_check_arg_send_type Unexecuted instantiation: zend_string.c:zend_check_arg_send_type Unexecuted instantiation: zend_strtod.c:zend_check_arg_send_type Unexecuted instantiation: zend_system_id.c:zend_check_arg_send_type Unexecuted instantiation: zend_variables.c:zend_check_arg_send_type Unexecuted instantiation: zend_weakrefs.c:zend_check_arg_send_type Unexecuted instantiation: zend.c:zend_check_arg_send_type Unexecuted instantiation: internal_functions_cli.c:zend_check_arg_send_type Unexecuted instantiation: fuzzer-parser.c:zend_check_arg_send_type Unexecuted instantiation: fuzzer-sapi.c:zend_check_arg_send_type Unexecuted instantiation: fuzzer-tracing-jit.c:zend_check_arg_send_type Unexecuted instantiation: fuzzer-exif.c:zend_check_arg_send_type Unexecuted instantiation: fuzzer-unserialize.c:zend_check_arg_send_type Unexecuted instantiation: fuzzer-function-jit.c:zend_check_arg_send_type Unexecuted instantiation: fuzzer-json.c:zend_check_arg_send_type Unexecuted instantiation: fuzzer-unserializehash.c:zend_check_arg_send_type Unexecuted instantiation: fuzzer-execute.c:zend_check_arg_send_type |
1152 | | |
1153 | | #define ARG_MUST_BE_SENT_BY_REF(zf, arg_num) \ |
1154 | 176k | zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF) |
1155 | | |
1156 | | #define ARG_SHOULD_BE_SENT_BY_REF(zf, arg_num) \ |
1157 | 2.14M | zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF) |
1158 | | |
1159 | | #define ARG_MAY_BE_SENT_BY_REF(zf, arg_num) \ |
1160 | 50.2k | zend_check_arg_send_type(zf, arg_num, ZEND_SEND_PREFER_REF) |
1161 | | |
1162 | | /* Quick API to check first 12 arguments */ |
1163 | 390k | #define MAX_ARG_FLAG_NUM 12 |
1164 | | |
1165 | | #ifdef WORDS_BIGENDIAN |
1166 | | # define ZEND_SET_ARG_FLAG(zf, arg_num, mask) do { \ |
1167 | | (zf)->quick_arg_flags |= ((mask) << ((arg_num) - 1) * 2); \ |
1168 | | } while (0) |
1169 | | # define ZEND_CHECK_ARG_FLAG(zf, arg_num, mask) \ |
1170 | | (((zf)->quick_arg_flags >> (((arg_num) - 1) * 2)) & (mask)) |
1171 | | #else |
1172 | 81.4k | # define ZEND_SET_ARG_FLAG(zf, arg_num, mask) do { \ |
1173 | 81.4k | (zf)->quick_arg_flags |= (((mask) << 6) << (arg_num) * 2); \ |
1174 | 81.4k | } while (0) |
1175 | | # define ZEND_CHECK_ARG_FLAG(zf, arg_num, mask) \ |
1176 | 1.34M | (((zf)->quick_arg_flags >> (((arg_num) + 3) * 2)) & (mask)) |
1177 | | #endif |
1178 | | |
1179 | | #define QUICK_ARG_MUST_BE_SENT_BY_REF(zf, arg_num) \ |
1180 | 101k | ZEND_CHECK_ARG_FLAG(zf, arg_num, ZEND_SEND_BY_REF) |
1181 | | |
1182 | | #define QUICK_ARG_SHOULD_BE_SENT_BY_REF(zf, arg_num) \ |
1183 | 1.24M | ZEND_CHECK_ARG_FLAG(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF) |
1184 | | |
1185 | | #define QUICK_ARG_MAY_BE_SENT_BY_REF(zf, arg_num) \ |
1186 | | ZEND_CHECK_ARG_FLAG(zf, arg_num, ZEND_SEND_PREFER_REF) |
1187 | | |
1188 | | #define ZEND_RETURN_VAL 0 |
1189 | | #define ZEND_RETURN_REF 1 |
1190 | | |
1191 | | #define ZEND_BIND_VAL 0 |
1192 | 60.8k | #define ZEND_BIND_REF 1 |
1193 | 215k | #define ZEND_BIND_IMPLICIT 2 |
1194 | 13.1k | #define ZEND_BIND_EXPLICIT 4 |
1195 | | |
1196 | 25.5k | #define ZEND_RETURNS_FUNCTION (1<<0) |
1197 | 1.60k | #define ZEND_RETURNS_VALUE (1<<1) |
1198 | | |
1199 | 78.4k | #define ZEND_ARRAY_ELEMENT_REF (1<<0) |
1200 | 9.52k | #define ZEND_ARRAY_NOT_PACKED (1<<1) |
1201 | 29.2k | #define ZEND_ARRAY_SIZE_SHIFT 2 |
1202 | | |
1203 | | /* Attribute for ternary inside parentheses */ |
1204 | 2.05k | #define ZEND_PARENTHESIZED_CONDITIONAL 1 |
1205 | | |
1206 | | /* Used to distinguish (parent::$prop)::get() from parent hook call. */ |
1207 | 2.45k | #define ZEND_PARENTHESIZED_STATIC_PROP 1 |
1208 | | |
1209 | | /* For "use" AST nodes and the seen symbol table */ |
1210 | 66.2k | #define ZEND_SYMBOL_CLASS (1<<0) |
1211 | 57.2k | #define ZEND_SYMBOL_FUNCTION (1<<1) |
1212 | 8.46k | #define ZEND_SYMBOL_CONST (1<<2) |
1213 | | |
1214 | | /* All increment opcodes are even (decrement are odd) */ |
1215 | 3.66k | #define ZEND_IS_INCREMENT(opcode) (((opcode) & 1) == 0) |
1216 | | |
1217 | | #define ZEND_IS_BINARY_ASSIGN_OP_OPCODE(opcode) \ |
1218 | | (((opcode) >= ZEND_ADD) && ((opcode) <= ZEND_POW)) |
1219 | | |
1220 | | /* Pseudo-opcodes that are used only temporarily during compilation */ |
1221 | 2.36k | #define ZEND_GOTO 253 |
1222 | 4.34k | #define ZEND_BRK 254 |
1223 | 5.41k | #define ZEND_CONT 255 |
1224 | | |
1225 | | |
1226 | | END_EXTERN_C() |
1227 | | |
1228 | | #define ZEND_CLONE_FUNC_NAME "__clone" |
1229 | | #define ZEND_CONSTRUCTOR_FUNC_NAME "__construct" |
1230 | | #define ZEND_DESTRUCTOR_FUNC_NAME "__destruct" |
1231 | | #define ZEND_GET_FUNC_NAME "__get" |
1232 | | #define ZEND_SET_FUNC_NAME "__set" |
1233 | | #define ZEND_UNSET_FUNC_NAME "__unset" |
1234 | | #define ZEND_ISSET_FUNC_NAME "__isset" |
1235 | | #define ZEND_CALL_FUNC_NAME "__call" |
1236 | | #define ZEND_CALLSTATIC_FUNC_NAME "__callstatic" |
1237 | | #define ZEND_TOSTRING_FUNC_NAME "__tostring" |
1238 | 84 | #define ZEND_INVOKE_FUNC_NAME "__invoke" |
1239 | 10 | #define ZEND_DEBUGINFO_FUNC_NAME "__debuginfo" |
1240 | | |
1241 | | /* The following constants may be combined in CG(compiler_options) |
1242 | | * to change the default compiler behavior */ |
1243 | | |
1244 | | /* generate extended debug information */ |
1245 | 1.51M | #define ZEND_COMPILE_EXTENDED_STMT (1<<0) |
1246 | 763k | #define ZEND_COMPILE_EXTENDED_FCALL (1<<1) |
1247 | | #define ZEND_COMPILE_EXTENDED_INFO (ZEND_COMPILE_EXTENDED_STMT|ZEND_COMPILE_EXTENDED_FCALL) |
1248 | | |
1249 | | /* call op_array handler of extensions */ |
1250 | 189k | #define ZEND_COMPILE_HANDLE_OP_ARRAY (1<<2) |
1251 | | |
1252 | | /* generate ZEND_INIT_FCALL_BY_NAME for internal functions instead of ZEND_INIT_FCALL */ |
1253 | 342k | #define ZEND_COMPILE_IGNORE_INTERNAL_FUNCTIONS (1<<3) |
1254 | | |
1255 | | /* don't perform early binding for classes inherited form internal ones; |
1256 | | * in namespaces assume that internal class that doesn't exist at compile-time |
1257 | | * may appear in run-time */ |
1258 | 4.34k | #define ZEND_COMPILE_IGNORE_INTERNAL_CLASSES (1<<4) |
1259 | | |
1260 | | /* generate ZEND_DECLARE_CLASS_DELAYED opcode to delay early binding */ |
1261 | 23.9k | #define ZEND_COMPILE_DELAYED_BINDING (1<<5) |
1262 | | |
1263 | | /* disable constant substitution at compile-time */ |
1264 | 22.8k | #define ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION (1<<6) |
1265 | | |
1266 | | /* disable substitution of persistent constants at compile-time */ |
1267 | 18.1k | #define ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION (1<<8) |
1268 | | |
1269 | | /* generate ZEND_INIT_FCALL_BY_NAME for userland functions instead of ZEND_INIT_FCALL */ |
1270 | 68.4k | #define ZEND_COMPILE_IGNORE_USER_FUNCTIONS (1<<9) |
1271 | | |
1272 | | /* force ZEND_ACC_USE_GUARDS for all classes */ |
1273 | 60.9k | #define ZEND_COMPILE_GUARDS (1<<10) |
1274 | | |
1275 | | /* disable builtin special case function calls */ |
1276 | 144k | #define ZEND_COMPILE_NO_BUILTINS (1<<11) |
1277 | | |
1278 | | /* result of compilation may be stored in file cache */ |
1279 | 0 | #define ZEND_COMPILE_WITH_FILE_CACHE (1<<12) |
1280 | | |
1281 | | /* ignore functions and classes declared in other files */ |
1282 | 51.4k | #define ZEND_COMPILE_IGNORE_OTHER_FILES (1<<13) |
1283 | | |
1284 | | /* this flag is set when compiler invoked by opcache_compile_file() */ |
1285 | 45.0k | #define ZEND_COMPILE_WITHOUT_EXECUTION (1<<14) |
1286 | | |
1287 | | /* this flag is set when compiler invoked during preloading */ |
1288 | 463k | #define ZEND_COMPILE_PRELOAD (1<<15) |
1289 | | |
1290 | | /* disable jumptable optimization for switch statements */ |
1291 | 1.08k | #define ZEND_COMPILE_NO_JUMPTABLES (1<<16) |
1292 | | |
1293 | | /* this flag is set when compiler invoked during preloading in separate process */ |
1294 | | #define ZEND_COMPILE_PRELOAD_IN_CHILD (1<<17) |
1295 | | |
1296 | | /* ignore observer notifications, e.g. to manually notify afterwards in a post-processing step after compilation */ |
1297 | 0 | #define ZEND_COMPILE_IGNORE_OBSERVER (1<<18) |
1298 | | |
1299 | | /* The default value for CG(compiler_options) */ |
1300 | 16 | #define ZEND_COMPILE_DEFAULT ZEND_COMPILE_HANDLE_OP_ARRAY |
1301 | | |
1302 | | /* The default value for CG(compiler_options) during eval() */ |
1303 | 0 | #define ZEND_COMPILE_DEFAULT_FOR_EVAL 0 |
1304 | | |
1305 | | ZEND_API bool zend_is_op_long_compatible(const zval *op); |
1306 | | ZEND_API bool zend_binary_op_produces_error(uint32_t opcode, const zval *op1, const zval *op2); |
1307 | | ZEND_API bool zend_unary_op_produces_error(uint32_t opcode, const zval *op); |
1308 | | |
1309 | | bool zend_try_ct_eval_cast(zval *result, uint32_t type, zval *op1); |
1310 | | |
1311 | | #endif /* ZEND_COMPILE_H */ |