Lines Matching refs:opline

121 static zval *get_op1_value(sccp_ctx *ctx, zend_op *opline, zend_ssa_op *ssa_op) {  in get_op1_value()  argument
122 if (opline->op1_type == IS_CONST) { in get_op1_value()
123 return CT_CONSTANT_EX(ctx->scdf.op_array, opline->op1.constant); in get_op1_value()
131 static zval *get_op2_value(sccp_ctx *ctx, zend_op *opline, zend_ssa_op *ssa_op) { in get_op2_value() argument
132 if (opline->op2_type == IS_CONST) { in get_op2_value()
133 return CT_CONSTANT_EX(ctx->scdf.op_array, opline->op2.constant); in get_op2_value()
142 const zend_op_array *op_array, zend_op *opline, zend_ssa_op *ssa_op) { in can_replace_op1() argument
143 switch (opline->opcode) { in can_replace_op1()
201 return !(opline->extended_value & ZEND_ARRAY_ELEMENT_REF); in can_replace_op1()
218 const zend_op_array *op_array, zend_op *opline, zend_ssa_op *ssa_op) { in can_replace_op2() argument
219 switch (opline->opcode) { in can_replace_op2()
233 sccp_ctx *ctx, zend_op *opline, zend_ssa_op *ssa_op, int var, zval *value) { in try_replace_op1() argument
234 if (ssa_op->op1_use == var && can_replace_op1(ctx->scdf.op_array, opline, ssa_op)) { in try_replace_op1()
237 if (zend_optimizer_update_op1_const(ctx->scdf.op_array, opline, &zv)) { in try_replace_op1()
242 switch (opline->opcode) { in try_replace_op1()
245 MAKE_NOP(opline); in try_replace_op1()
246 num = ctx->scdf.ssa->cfg.map[opline - ctx->scdf.op_array->opcodes]; in try_replace_op1()
256 opline->opcode = ZEND_JMP; in try_replace_op1()
257 COPY_NODE(opline->op1, opline->op2); in try_replace_op1()
258 num = ctx->scdf.ssa->cfg.map[opline - ctx->scdf.op_array->opcodes]; in try_replace_op1()
270 opline->opcode = ZEND_JMP; in try_replace_op1()
271 COPY_NODE(opline->op1, opline->op2); in try_replace_op1()
272 num = ctx->scdf.ssa->cfg.map[opline - ctx->scdf.op_array->opcodes]; in try_replace_op1()
281 MAKE_NOP(opline); in try_replace_op1()
282 num = ctx->scdf.ssa->cfg.map[opline - ctx->scdf.op_array->opcodes]; in try_replace_op1()
295 zend_op *target_opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value); in try_replace_op1()
296 ZEND_SET_OP_JMP_ADDR(opline, opline->op1, target_opline); in try_replace_op1()
297 num = ctx->scdf.ssa->cfg.map[opline - ctx->scdf.op_array->opcodes]; in try_replace_op1()
307 zend_op *target_opline = ZEND_OP2_JMP_ADDR(opline); in try_replace_op1()
308 ZEND_SET_OP_JMP_ADDR(opline, opline->op1, target_opline); in try_replace_op1()
309 num = ctx->scdf.ssa->cfg.map[opline - ctx->scdf.op_array->opcodes]; in try_replace_op1()
318 opline->op1_type = IS_UNUSED; in try_replace_op1()
319 opline->extended_value = 0; in try_replace_op1()
320 opline->opcode = ZEND_JMP; in try_replace_op1()
328 switch (opline->opcode) { in try_replace_op1()
336 opline->op1.constant = zend_optimizer_add_literal(ctx->scdf.op_array, &zv); in try_replace_op1()
337 opline->op1_type = IS_CONST; in try_replace_op1()
347 sccp_ctx *ctx, zend_op *opline, zend_ssa_op *ssa_op, int var, zval *value) { in try_replace_op2() argument
348 if (ssa_op->op2_use == var && can_replace_op2(ctx->scdf.op_array, opline, ssa_op)) { in try_replace_op2()
351 if (zend_optimizer_update_op2_const(ctx->scdf.op_array, opline, &zv)) { in try_replace_op2()
870 static void sccp_visit_instr(scdf_ctx *scdf, zend_op *opline, zend_ssa_op *ssa_op) { in sccp_visit_instr() argument
874 op1 = get_op1_value(ctx, opline, ssa_op); in sccp_visit_instr()
875 op2 = get_op2_value(ctx, opline, ssa_op); in sccp_visit_instr()
877 switch (opline->opcode) { in sccp_visit_instr()
894 uint32_t expected_type = opline->extended_value == _IS_BOOL in sccp_visit_instr()
895 ? (MAY_BE_TRUE|MAY_BE_FALSE) : (1 << opline->extended_value); in sccp_visit_instr()
901 && opline->extended_value != IS_RESOURCE) { in sccp_visit_instr()
924 call = ctx->call_map[opline - ctx->scdf.op_array->opcodes]; in sccp_visit_instr()
929 opline = call->caller_call_opline; in sccp_visit_instr()
930 ssa_op = &ctx->scdf.ssa->ops[opline - ctx->scdf.op_array->opcodes]; in sccp_visit_instr()
944 switch (opline->opcode) { in sccp_visit_instr()
969 if (zend_optimizer_eval_binary_op(&zv, opline->opcode, op1, op2) == SUCCESS) { in sccp_visit_instr()
989 if (opline->extended_value) { in sccp_visit_instr()
998 …if (zend_optimizer_eval_binary_op(&zv, zend_compound_assign_to_binary_op(opline->opcode), op1, op2… in sccp_visit_instr()
1010 if (ct_eval_incdec(&zv, opline->opcode, op1) == SUCCESS) { in sccp_visit_instr()
1023 if (ct_eval_incdec(&zv, opline->opcode, op1) == SUCCESS) { in sccp_visit_instr()
1033 if (zend_optimizer_eval_unary_op(&zv, opline->opcode, op1) == SUCCESS) { in sccp_visit_instr()
1042 if (zend_optimizer_eval_cast(&zv, opline->extended_value, op1) == SUCCESS) { in sccp_visit_instr()
1078 if (ct_eval_in_array(&zv, opline->extended_value, op1, op2) == SUCCESS) { in sccp_visit_instr()
1091 if (ct_eval_fetch_dim(&zv, op1, op2, (opline->opcode != ZEND_FETCH_LIST)) == SUCCESS) { in sccp_visit_instr()
1102 if (ct_eval_isset_dim(&zv, opline->extended_value, op1, op2) == SUCCESS) { in sccp_visit_instr()
1123 if (ct_eval_isset_isempty(&zv, opline->extended_value, op1) == SUCCESS) { in sccp_visit_instr()
1132 ct_eval_type_check(&zv, opline->extended_value, op1); in sccp_visit_instr()
1168 if (opline->extended_value & ZEND_ARRAY_ELEMENT_REF) { in sccp_visit_instr()
1174 if (opline->opcode == ZEND_ADD_ARRAY_ELEMENT) { in sccp_visit_instr()
1213 zval *data = get_op1_value(ctx, opline+1, ssa_op+1); in sccp_visit_instr()
1249 call = ctx->call_map[opline - ctx->scdf.op_array->opcodes]; in sccp_visit_instr()
1264 zend_op *opline = call->arg_info[i].opline; in sccp_visit_instr() local
1265 if (opline->opcode != ZEND_SEND_VAL && opline->opcode != ZEND_SEND_VAR) { in sccp_visit_instr()
1270 args[i] = get_op1_value(ctx, opline, in sccp_visit_instr()
1271 &ctx->scdf.ssa->ops[opline - ctx->scdf.op_array->opcodes]); in sccp_visit_instr()
1321 zend_op *opline, zend_ssa_op *ssa_op) { in sccp_mark_feasible_successors() argument
1327 switch (opline->opcode) { in sccp_mark_feasible_successors()
1339 op1 = get_op1_value(ctx, opline, ssa_op); in sccp_mark_feasible_successors()
1354 switch (opline->opcode) { in sccp_mark_feasible_successors()
1500 zend_op *opline = &op_array->opcodes[use]; in replace_constant_operands() local
1502 if (try_replace_op1(ctx, opline, ssa_op, i, value)) { in replace_constant_operands()
1503 if (opline->opcode == ZEND_NOP) { in replace_constant_operands()
1515 if (try_replace_op2(ctx, opline, ssa_op, i, value)) { in replace_constant_operands()
1538 zend_op *opline = &op_array->opcodes[var->definition]; in replace_constant_operands() local
1540 if (opline->opcode == ZEND_ASSIGN) { in replace_constant_operands()
1550 if (opline->opcode == ZEND_DO_ICALL) { in replace_constant_operands()
1558 ZEND_ASSERT(call->caller_call_opline == opline); in replace_constant_operands()
1559 if (opline->result_type & (IS_TMP_VAR|IS_VAR)) { in replace_constant_operands()
1560 zend_optimizer_remove_live_range_ex(op_array, opline->result.var, var->definition); in replace_constant_operands()
1563 zend_ssa_remove_instr(ssa, opline, ssa_op); in replace_constant_operands()
1568 zend_ssa_remove_instr(ssa, call->arg_info[i].opline, in replace_constant_operands()
1569 &ssa->ops[call->arg_info[i].opline - op_array->opcodes]); in replace_constant_operands()
1577 if (opline->result_type & (IS_TMP_VAR|IS_VAR)) { in replace_constant_operands()
1578 zend_optimizer_remove_live_range_ex(op_array, opline->result.var, var->definition); in replace_constant_operands()
1581 zend_ssa_remove_instr(ssa, opline, ssa_op); in replace_constant_operands()
1591 if (opline->op2_type == IS_CONST) { in replace_constant_operands()
1592 literal_dtor(&ZEND_OP2_LITERAL(opline)); in replace_constant_operands()
1603 if (opline->result_type & (IS_TMP_VAR|IS_VAR)) { in replace_constant_operands()
1604 zend_optimizer_remove_live_range_ex(op_array, opline->result.var, var->definition); in replace_constant_operands()
1607 opline->result_type = IS_UNUSED; in replace_constant_operands()
1611 if (opline->opcode == ZEND_ASSIGN_DIM) { in replace_constant_operands()
1613 zend_ssa_remove_instr(ssa, opline + 1, ssa_op + 1); in replace_constant_operands()
1617 opline->opcode = ZEND_ASSIGN; in replace_constant_operands()
1618 opline->op2_type = IS_CONST; in replace_constant_operands()
1619 opline->op2.constant = zend_optimizer_add_literal(op_array, value); in replace_constant_operands()