Lines Matching refs:opline

32 #define ZEND_OP1_IS_CONST_STRING(opline) \  argument
33 (opline->op1_type == IS_CONST && \
34 Z_TYPE(op_array->literals[(opline)->op1.constant]) == IS_STRING)
35 #define ZEND_OP2_IS_CONST_STRING(opline) \ argument
36 (opline->op2_type == IS_CONST && \
37 Z_TYPE(op_array->literals[(opline)->op2.constant]) == IS_STRING)
41 zend_op *opline; member
45 static void zend_delete_call_instructions(zend_op *opline) in zend_delete_call_instructions() argument
50 switch (opline->opcode) { in zend_delete_call_instructions()
57 MAKE_NOP(opline); in zend_delete_call_instructions()
75 if (opline->op1_type == IS_CONST) { in zend_delete_call_instructions()
76 MAKE_NOP(opline); in zend_delete_call_instructions()
77 } else if (opline->op1_type == IS_CV) { in zend_delete_call_instructions()
78 opline->opcode = ZEND_CHECK_VAR; in zend_delete_call_instructions()
79 opline->extended_value = 0; in zend_delete_call_instructions()
80 opline->result.var = 0; in zend_delete_call_instructions()
82 opline->opcode = ZEND_FREE; in zend_delete_call_instructions()
83 opline->extended_value = 0; in zend_delete_call_instructions()
84 opline->result.var = 0; in zend_delete_call_instructions()
89 opline--; in zend_delete_call_instructions()
93 static void zend_try_inline_call(zend_op_array *op_array, zend_op *fcall, zend_op *opline, zend_fun… in zend_try_inline_call() argument
133 if (RETURN_VALUE_USED(opline)) { in zend_try_inline_call()
137 opline->opcode = ZEND_QM_ASSIGN; in zend_try_inline_call()
138 opline->op1_type = IS_CONST; in zend_try_inline_call()
139 opline->op1.constant = zend_optimizer_add_literal(op_array, &zv); in zend_try_inline_call()
140 SET_UNUSED(opline->op2); in zend_try_inline_call()
142 MAKE_NOP(opline); in zend_try_inline_call()
145 zend_delete_call_instructions(opline-1); in zend_try_inline_call()
152 zend_op *opline = op_array->opcodes; in zend_optimize_func_calls() local
153 zend_op *end = opline + op_array->last; in zend_optimize_func_calls()
164 while (opline < end) { in zend_optimize_func_calls()
165 switch (opline->opcode) { in zend_optimize_func_calls()
173 ctx->script, op_array, opline, 0); in zend_optimize_func_calls()
174 call_stack[call].try_inline = opline->opcode != ZEND_NEW; in zend_optimize_func_calls()
178 call_stack[call].opline = opline; in zend_optimize_func_calls()
186 if (call_stack[call].func && call_stack[call].opline) { in zend_optimize_func_calls()
187 zend_op *fcall = call_stack[call].opline; in zend_optimize_func_calls()
197 opline->opcode = zend_get_call_op(fcall, call_stack[call].func); in zend_optimize_func_calls()
205 opline->opcode = zend_get_call_op(fcall, call_stack[call].func); in zend_optimize_func_calls()
216 zend_try_inline_call(op_array, fcall, opline, call_stack[call].func); in zend_optimize_func_calls()
220 call_stack[call].opline = NULL; in zend_optimize_func_calls()
228 …if (ARG_SHOULD_BE_SENT_BY_REF(call_stack[call - 1].func, (opline->extended_value & ZEND_FETCH_ARG_… in zend_optimize_func_calls()
229 opline->extended_value &= ZEND_FETCH_TYPE_MASK; in zend_optimize_func_calls()
230 if (opline->opcode != ZEND_FETCH_STATIC_PROP_FUNC_ARG) { in zend_optimize_func_calls()
231 opline->opcode -= 9; in zend_optimize_func_calls()
233 opline->opcode = ZEND_FETCH_STATIC_PROP_W; in zend_optimize_func_calls()
236 if (opline->opcode == ZEND_FETCH_DIM_FUNC_ARG in zend_optimize_func_calls()
237 && opline->op2_type == IS_UNUSED) { in zend_optimize_func_calls()
244 opline->extended_value &= ZEND_FETCH_TYPE_MASK; in zend_optimize_func_calls()
245 if (opline->opcode != ZEND_FETCH_STATIC_PROP_FUNC_ARG) { in zend_optimize_func_calls()
246 opline->opcode -= 12; in zend_optimize_func_calls()
248 opline->opcode = ZEND_FETCH_STATIC_PROP_R; in zend_optimize_func_calls()
255 if (ARG_MUST_BE_SENT_BY_REF(call_stack[call - 1].func, opline->op2.num)) { in zend_optimize_func_calls()
257 call_stack[call - 1].opline = NULL; in zend_optimize_func_calls()
259 opline->opcode = ZEND_SEND_VAL; in zend_optimize_func_calls()
265 if (ARG_SHOULD_BE_SENT_BY_REF(call_stack[call - 1].func, opline->op2.num)) { in zend_optimize_func_calls()
266 opline->opcode = ZEND_SEND_REF; in zend_optimize_func_calls()
268 opline->opcode = ZEND_SEND_VAR; in zend_optimize_func_calls()
274 if (ARG_MUST_BE_SENT_BY_REF(call_stack[call - 1].func, opline->op2.num)) { in zend_optimize_func_calls()
275 opline->opcode = ZEND_SEND_VAR_NO_REF; in zend_optimize_func_calls()
276 } else if (ARG_MAY_BE_SENT_BY_REF(call_stack[call - 1].func, opline->op2.num)) { in zend_optimize_func_calls()
277 opline->opcode = ZEND_SEND_VAL; in zend_optimize_func_calls()
279 opline->opcode = ZEND_SEND_VAR; in zend_optimize_func_calls()
291 opline++; in zend_optimize_func_calls()