37#define TO_STRING_NOWARN(val) do { \
38 if (Z_TYPE_P(val) < IS_ARRAY) { \
39 convert_to_string(val); \
68 while (opline <
end) {
102 replace_by_const_or_qm_assign(op_array, opline, &
result);
116 replace_by_const_or_qm_assign(op_array, opline, &
result);
124 replace_by_const_or_qm_assign(op_array, opline, &
result);
139 EG(current_execute_data) = &fake_execute_data;
143 replace_by_const_or_qm_assign(op_array, opline,
offset);
145 EG(current_execute_data) = orig_execute_data;
160 replace_by_const_or_qm_assign(op_array, opline, &
result);
167 if (!cc || is_prototype) {
181 replace_by_const_or_qm_assign(op_array, opline, &
result);
186 zend_op *send1_opline = opline - 1;
196 collect_constants = 0;
199 if (send1_opline->
op2.
num == 2) {
200 send2_opline = send1_opline;
208 collect_constants = 0;
212 init_opline = send1_opline - 1;
220 collect_constants = 0;
229 if (collect_constants) {
259 replace_by_const_or_qm_assign(op_array, opline, &
result);
264 collect_constants = 0;
270 replace_by_const_or_qm_assign(op_array, opline, &
result);
279 replace_by_const_or_qm_assign(op_array, opline, &
result);
282 if (collect_constants &&
312 collect_constants = 0;
321 should_jmp = !should_jmp;
334 collect_constants = 0;
357 collect_constants = 0;
bool zend_optimizer_get_persistent_constant(zend_string *name, zval *result, int copy)
memset(ptr, 0, type->size)
#define TO_STRING_NOWARN(val)
void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx)
unsigned const char * end
zend_long optimization_level
zend_op_array main_op_array
struct _zend_op_array zend_op_array
struct _zend_class_constant zend_class_constant
ZEND_API zval * zend_get_constant_str(const char *name, size_t name_len)
union _zend_function zend_function
ZEND_API bool ZEND_FASTCALL zend_is_true(const zval *op)
const zend_class_constant * zend_fetch_class_const_info(const zend_script *script, const zend_op_array *op_array, const zend_op *opline, bool *is_prototype)
bool zend_optimizer_get_collected_constant(HashTable *constants, zval *name, zval *value)
void zend_optimizer_collect_constant(zend_optimizer_ctx *ctx, zval *name, zval *value)
bool zend_optimizer_update_op1_const(zend_op_array *op_array, zend_op *opline, zval *val)
zend_result zend_optimizer_eval_strlen(zval *result, const zval *op1)
zend_result zend_optimizer_eval_binary_op(zval *result, uint8_t opcode, zval *op1, zval *op2)
zend_result zend_optimizer_eval_cast(zval *result, uint32_t type, zval *op1)
zend_result zend_optimizer_eval_special_func_call(zval *result, zend_string *name, zend_string *arg)
zend_result zend_optimizer_eval_unary_op(zval *result, uint8_t opcode, zval *op1)
bool zend_optimizer_replace_by_const(zend_op_array *op_array, zend_op *opline, uint8_t type, uint32_t var, zval *val)
#define ZEND_OPTIMIZER_PASS_15
#define ZEND_OP1_LITERAL(opline)
#define RESULT_UNUSED(op)
#define ZEND_OP2_LITERAL(opline)
struct _zend_optimizer_ctx zend_optimizer_ctx
#define COPY_NODE(target, src)
#define zend_string_equals_literal(str, literal)
#define zend_string_equals_literal_ci(str, c)
#define ZVAL_COPY_OR_DUP(z, v)
struct _zend_ast zend_ast
struct _zend_execute_data zend_execute_data
#define Z_ASTVAL_P(zval_p)
#define ZEND_IS_IDENTICAL
#define ZEND_FETCH_CONSTANT
#define ZEND_ASSERT_CHECK
#define ZEND_RETURN_BY_REF
#define ZEND_DECLARE_CONST
#define ZEND_IS_NOT_EQUAL
#define ZEND_IS_NOT_IDENTICAL
#define ZEND_IS_SMALLER_OR_EQUAL
#define ZEND_BIND_INIT_STATIC_OR_JMP
#define ZEND_GENERATOR_RETURN
#define ZEND_JMP_FRAMELESS
#define ZEND_FETCH_CLASS_CONSTANT
#define ZEND_VERIFY_NEVER_TYPE