Lines Matching refs:opline

43 static void replace_by_const_or_qm_assign(zend_op_array *op_array, zend_op *opline, zval *result) {  in replace_by_const_or_qm_assign()  argument
44 if (opline->op1_type == IS_CONST) { in replace_by_const_or_qm_assign()
45 literal_dtor(&ZEND_OP1_LITERAL(opline)); in replace_by_const_or_qm_assign()
47 if (opline->op2_type == IS_CONST) { in replace_by_const_or_qm_assign()
48 literal_dtor(&ZEND_OP2_LITERAL(opline)); in replace_by_const_or_qm_assign()
50 …if (zend_optimizer_replace_by_const(op_array, opline + 1, opline->result_type, opline->result.var,… in replace_by_const_or_qm_assign()
51 MAKE_NOP(opline); in replace_by_const_or_qm_assign()
53 opline->opcode = ZEND_QM_ASSIGN; in replace_by_const_or_qm_assign()
54 opline->extended_value = 0; in replace_by_const_or_qm_assign()
55 SET_UNUSED(opline->op2); in replace_by_const_or_qm_assign()
56 zend_optimizer_update_op1_const(op_array, opline, result); in replace_by_const_or_qm_assign()
62 zend_op *opline = op_array->opcodes; in zend_optimizer_pass1() local
63 zend_op *end = opline + op_array->last; in zend_optimizer_pass1()
68 while (opline < end) { in zend_optimizer_pass1()
69 switch (opline->opcode) { in zend_optimizer_pass1()
72 if (opline->op1_type == IS_CONST && Z_TYPE(ZEND_OP1_LITERAL(opline)) != IS_STRING) { in zend_optimizer_pass1()
73 TO_STRING_NOWARN(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
75 if (opline->op2_type == IS_CONST && Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_STRING) { in zend_optimizer_pass1()
76 TO_STRING_NOWARN(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
100 if (opline->op1_type == IS_CONST && opline->op2_type == IS_CONST && in zend_optimizer_pass1()
101 …zend_optimizer_eval_binary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LITERA… in zend_optimizer_pass1()
102 replace_by_const_or_qm_assign(op_array, opline, &result); in zend_optimizer_pass1()
107 if (opline->extended_value == ZEND_CONCAT && opline->op2_type == IS_CONST in zend_optimizer_pass1()
108 && Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_STRING) { in zend_optimizer_pass1()
109 TO_STRING_NOWARN(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
114 if (opline->op1_type == IS_CONST && in zend_optimizer_pass1()
115 … zend_optimizer_eval_cast(&result, opline->extended_value, &ZEND_OP1_LITERAL(opline)) == SUCCESS) { in zend_optimizer_pass1()
116 replace_by_const_or_qm_assign(op_array, opline, &result); in zend_optimizer_pass1()
122 if (opline->op1_type == IS_CONST && in zend_optimizer_pass1()
123 zend_optimizer_eval_unary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline)) == SUCCESS) { in zend_optimizer_pass1()
124 replace_by_const_or_qm_assign(op_array, opline, &result); in zend_optimizer_pass1()
129 if (opline->op2_type == IS_CONST && in zend_optimizer_pass1()
130 Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING && in zend_optimizer_pass1()
131 zend_string_equals_literal(Z_STR(ZEND_OP2_LITERAL(opline)), "__COMPILER_HALT_OFFSET__")) { in zend_optimizer_pass1()
142 literal_dtor(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
143 replace_by_const_or_qm_assign(op_array, opline, offset); in zend_optimizer_pass1()
149 if (opline->op2_type == IS_CONST && in zend_optimizer_pass1()
150 Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING) { in zend_optimizer_pass1()
152 if (!zend_optimizer_get_persistent_constant(Z_STR(ZEND_OP2_LITERAL(opline)), &result, 1)) { in zend_optimizer_pass1()
153 …ts || !zend_optimizer_get_collected_constant(ctx->constants, &ZEND_OP2_LITERAL(opline), &result)) { in zend_optimizer_pass1()
160 replace_by_const_or_qm_assign(op_array, opline, &result); in zend_optimizer_pass1()
166 …const zend_class_constant *cc = zend_fetch_class_const_info(ctx->script, op_array, opline, &is_pro… in zend_optimizer_pass1()
181 replace_by_const_or_qm_assign(op_array, opline, &result); in zend_optimizer_pass1()
186 zend_op *send1_opline = opline - 1; in zend_optimizer_pass1()
233 if (RESULT_UNUSED(opline) && in zend_optimizer_pass1()
236 opline->opcode = ZEND_DECLARE_CONST; in zend_optimizer_pass1()
237 opline->op1_type = IS_CONST; in zend_optimizer_pass1()
238 opline->op2_type = IS_CONST; in zend_optimizer_pass1()
239 opline->result_type = IS_UNUSED; in zend_optimizer_pass1()
240 opline->op1.constant = send1_opline->op1.constant; in zend_optimizer_pass1()
241 opline->op2.constant = send2_opline->op1.constant; in zend_optimizer_pass1()
242 opline->result.num = 0; in zend_optimizer_pass1()
259 replace_by_const_or_qm_assign(op_array, opline, &result); in zend_optimizer_pass1()
268 if (opline->op1_type == IS_CONST && in zend_optimizer_pass1()
269 zend_optimizer_eval_strlen(&result, &ZEND_OP1_LITERAL(opline)) == SUCCESS) { in zend_optimizer_pass1()
270 replace_by_const_or_qm_assign(op_array, opline, &result); in zend_optimizer_pass1()
274 if (!zend_optimizer_get_persistent_constant(Z_STR(ZEND_OP1_LITERAL(opline)), &result, 0)) { in zend_optimizer_pass1()
278 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
279 replace_by_const_or_qm_assign(op_array, opline, &result); in zend_optimizer_pass1()
283 Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING && in zend_optimizer_pass1()
284 Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_CONSTANT_AST) { in zend_optimizer_pass1()
285 zend_optimizer_collect_constant(ctx, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
293 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass1()
294 if (zend_is_true(&ZEND_OP1_LITERAL(opline))) { in zend_optimizer_pass1()
295 if (opline->opcode == ZEND_JMPZ_EX) { in zend_optimizer_pass1()
296 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
297 zval_ptr_dtor_nogc(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
298 ZVAL_TRUE(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
299 opline->op2.num = 0; in zend_optimizer_pass1()
303 if (opline->opcode == ZEND_JMPNZ_EX) { in zend_optimizer_pass1()
304 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
305 zval_ptr_dtor_nogc(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
306 ZVAL_FALSE(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
307 opline->op2.num = 0; in zend_optimizer_pass1()
317 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass1()
318 bool should_jmp = zend_is_true(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
320 if (opline->opcode == ZEND_JMPZ) { in zend_optimizer_pass1()
323 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
324 opline->op1_type = IS_UNUSED; in zend_optimizer_pass1()
326 opline->opcode = ZEND_JMP; in zend_optimizer_pass1()
327 COPY_NODE(opline->op1, opline->op2); in zend_optimizer_pass1()
328 opline->op2.num = 0; in zend_optimizer_pass1()
330 MAKE_NOP(opline); in zend_optimizer_pass1()
360 opline++; in zend_optimizer_pass1()