Lines Matching refs:opline

191 					zend_op *opline;  in zend_ssa_remove_nops()  local
195 opline = op_array->opcodes + end - 1; in zend_ssa_remove_nops()
196 if (opline->opcode == ZEND_NOP) { in zend_ssa_remove_nops()
201 zend_optimizer_migrate_jump(op_array, new_opline, opline); in zend_ssa_remove_nops()
242 zend_op *opline = op_array->opcodes + b->start + b->len - 1; in zend_ssa_remove_nops() local
243 zend_optimizer_shift_jump(op_array, opline, shiftlist); in zend_ssa_remove_nops()
320 zend_ssa *ssa, zend_op *opline, int src_var, uint32_t cv_var) { in opline_supports_assign_contraction() argument
321 if (opline->opcode == ZEND_NEW) { in opline_supports_assign_contraction()
326 if (opline->opcode == ZEND_DO_ICALL || opline->opcode == ZEND_DO_UCALL in opline_supports_assign_contraction()
327 || opline->opcode == ZEND_DO_FCALL || opline->opcode == ZEND_DO_FCALL_BY_NAME) { in opline_supports_assign_contraction()
335 if (opline->opcode == ZEND_POST_INC || opline->opcode == ZEND_POST_DEC) { in opline_supports_assign_contraction()
338 return opline->op1_type != IS_CV || opline->op1.var != cv_var; in opline_supports_assign_contraction()
341 if (opline->opcode == ZEND_INIT_ARRAY) { in opline_supports_assign_contraction()
343 return (opline->op1_type != IS_CV || opline->op1.var != cv_var) in opline_supports_assign_contraction()
344 && (opline->op2_type != IS_CV || opline->op2.var != cv_var); in opline_supports_assign_contraction()
347 if (opline->opcode == ZEND_CAST in opline_supports_assign_contraction()
348 && (opline->extended_value == IS_ARRAY || opline->extended_value == IS_OBJECT)) { in opline_supports_assign_contraction()
351 return opline->op1_type != IS_CV || opline->op1.var != cv_var; in opline_supports_assign_contraction()
489 zend_op *opline; in zend_dfa_optimize_jmps() local
501 opline = op_array->opcodes + op_num; in zend_dfa_optimize_jmps()
502 switch (opline->opcode) { in zend_dfa_optimize_jmps()
508 if (opline->op1_type & (IS_CV|IS_CONST)) { in zend_dfa_optimize_jmps()
509 zend_ssa_remove_instr(ssa, opline, op); in zend_dfa_optimize_jmps()
515 MAKE_NOP(opline); in zend_dfa_optimize_jmps()
518 opline->opcode = ZEND_FREE; in zend_dfa_optimize_jmps()
519 opline->op2.num = 0; in zend_dfa_optimize_jmps()
522 if (opline->op1_type & (IS_CV|IS_CONST)) { in zend_dfa_optimize_jmps()
528 opline->opcode = ZEND_JMP; in zend_dfa_optimize_jmps()
529 opline->op1_type = IS_UNUSED; in zend_dfa_optimize_jmps()
530 opline->op1.num = opline->op2.num; in zend_dfa_optimize_jmps()
540 opline = op_array->opcodes + op_num; in zend_dfa_optimize_jmps()
541 if (opline->opcode == ZEND_JMP) { in zend_dfa_optimize_jmps()
542 MAKE_NOP(opline); in zend_dfa_optimize_jmps()
564 zend_op *opline; in zend_dfa_optimize_op_array() local
612 opline = op_array->opcodes + op_1; in zend_dfa_optimize_op_array()
616 if (opline->opcode == ZEND_ASSIGN in zend_dfa_optimize_op_array()
617 && opline->op2_type == IS_CONST in zend_dfa_optimize_op_array()
619 && !RETURN_VALUE_USED(opline) in zend_dfa_optimize_op_array()
624 zval *zv = CT_CONSTANT_EX(op_array, opline->op2.constant); in zend_dfa_optimize_op_array()
627 opline->op2.constant = zend_optimizer_add_literal(op_array, &tmp); in zend_dfa_optimize_op_array()
629 } else if (opline->opcode == ZEND_QM_ASSIGN in zend_dfa_optimize_op_array()
630 && opline->op1_type == IS_CONST in zend_dfa_optimize_op_array()
635 zval *zv = CT_CONSTANT_EX(op_array, opline->op1.constant); in zend_dfa_optimize_op_array()
638 opline->op1.constant = zend_optimizer_add_literal(op_array, &tmp); in zend_dfa_optimize_op_array()
642 if (opline->opcode == ZEND_ADD in zend_dfa_optimize_op_array()
643 || opline->opcode == ZEND_SUB in zend_dfa_optimize_op_array()
644 || opline->opcode == ZEND_MUL in zend_dfa_optimize_op_array()
645 || opline->opcode == ZEND_IS_EQUAL in zend_dfa_optimize_op_array()
646 || opline->opcode == ZEND_IS_NOT_EQUAL in zend_dfa_optimize_op_array()
647 || opline->opcode == ZEND_IS_SMALLER in zend_dfa_optimize_op_array()
648 || opline->opcode == ZEND_IS_SMALLER_OR_EQUAL in zend_dfa_optimize_op_array()
651 if (opline->op1_type == IS_CONST in zend_dfa_optimize_op_array()
652 && opline->op2_type != IS_CONST in zend_dfa_optimize_op_array()
654 && Z_TYPE_INFO_P(CT_CONSTANT_EX(op_array, opline->op1.constant)) == IS_LONG in zend_dfa_optimize_op_array()
659 zval *zv = CT_CONSTANT_EX(op_array, opline->op1.constant); in zend_dfa_optimize_op_array()
661 opline->op1.constant = zend_optimizer_add_literal(op_array, &tmp); in zend_dfa_optimize_op_array()
663 } else if (opline->op1_type != IS_CONST in zend_dfa_optimize_op_array()
664 && opline->op2_type == IS_CONST in zend_dfa_optimize_op_array()
666 && Z_TYPE_INFO_P(CT_CONSTANT_EX(op_array, opline->op2.constant)) == IS_LONG in zend_dfa_optimize_op_array()
671 zval *zv = CT_CONSTANT_EX(op_array, opline->op2.constant); in zend_dfa_optimize_op_array()
673 opline->op2.constant = zend_optimizer_add_literal(op_array, &tmp); in zend_dfa_optimize_op_array()
675 } else if (opline->opcode == ZEND_CONCAT) { in zend_dfa_optimize_op_array()
678 opline->opcode = ZEND_FAST_CONCAT; in zend_dfa_optimize_op_array()
688 if (opline->opcode == ZEND_ASSIGN in zend_dfa_optimize_op_array()
690 && !RETURN_VALUE_USED(opline) in zend_dfa_optimize_op_array()
700 if ((opline->op2_type & (IS_TMP_VAR|IS_VAR)) in zend_dfa_optimize_op_array()
712 src_var, opline->op1.var) in zend_dfa_optimize_op_array()
734 op_array->opcodes[op_2].result_type = opline->op1_type; in zend_dfa_optimize_op_array()
735 op_array->opcodes[op_2].result.var = opline->op1.var; in zend_dfa_optimize_op_array()
736 MAKE_NOP(opline); in zend_dfa_optimize_op_array()
739 } else if (opline->op2_type == IS_CONST in zend_dfa_optimize_op_array()
740 || ((opline->op2_type & (IS_TMP_VAR|IS_VAR|IS_CV)) in zend_dfa_optimize_op_array()
762 opline->result_type = opline->op1_type; in zend_dfa_optimize_op_array()
763 opline->result.var = opline->op1.var; in zend_dfa_optimize_op_array()
764 opline->op1_type = opline->op2_type; in zend_dfa_optimize_op_array()
765 opline->op1.var = opline->op2.var; in zend_dfa_optimize_op_array()
766 opline->op2_type = IS_UNUSED; in zend_dfa_optimize_op_array()
767 opline->op2.var = 0; in zend_dfa_optimize_op_array()
768 opline->opcode = ZEND_QM_ASSIGN; in zend_dfa_optimize_op_array()
772 } else if (opline->opcode == ZEND_ASSIGN_ADD in zend_dfa_optimize_op_array()
773 && opline->extended_value == 0 in zend_dfa_optimize_op_array()
775 && opline->op2_type == IS_CONST in zend_dfa_optimize_op_array()
776 && Z_TYPE_P(CT_CONSTANT_EX(op_array, opline->op2.constant)) == IS_LONG in zend_dfa_optimize_op_array()
777 && Z_LVAL_P(CT_CONSTANT_EX(op_array, opline->op2.constant)) == 1 in zend_dfa_optimize_op_array()
783 opline->opcode = ZEND_PRE_INC; in zend_dfa_optimize_op_array()
784 SET_UNUSED(opline->op2); in zend_dfa_optimize_op_array()
786 } else if (opline->opcode == ZEND_ASSIGN_SUB in zend_dfa_optimize_op_array()
787 && opline->extended_value == 0 in zend_dfa_optimize_op_array()
789 && opline->op2_type == IS_CONST in zend_dfa_optimize_op_array()
790 && Z_TYPE_P(CT_CONSTANT_EX(op_array, opline->op2.constant)) == IS_LONG in zend_dfa_optimize_op_array()
791 && Z_LVAL_P(CT_CONSTANT_EX(op_array, opline->op2.constant)) == 1 in zend_dfa_optimize_op_array()
797 opline->opcode = ZEND_PRE_DEC; in zend_dfa_optimize_op_array()
798 SET_UNUSED(opline->op2); in zend_dfa_optimize_op_array()
800 } else if (opline->opcode == ZEND_VERIFY_RETURN_TYPE in zend_dfa_optimize_op_array()
824 MAKE_NOP(opline); in zend_dfa_optimize_op_array()
829 && !RETURN_VALUE_USED(opline) in zend_dfa_optimize_op_array()
832 && (opline->opcode == ZEND_ASSIGN_ADD in zend_dfa_optimize_op_array()
833 || opline->opcode == ZEND_ASSIGN_SUB in zend_dfa_optimize_op_array()
834 || opline->opcode == ZEND_ASSIGN_MUL in zend_dfa_optimize_op_array()
835 || opline->opcode == ZEND_ASSIGN_DIV in zend_dfa_optimize_op_array()
836 || opline->opcode == ZEND_ASSIGN_MOD in zend_dfa_optimize_op_array()
837 || opline->opcode == ZEND_ASSIGN_SL in zend_dfa_optimize_op_array()
838 || opline->opcode == ZEND_ASSIGN_SR in zend_dfa_optimize_op_array()
839 || opline->opcode == ZEND_ASSIGN_BW_OR in zend_dfa_optimize_op_array()
840 || opline->opcode == ZEND_ASSIGN_BW_AND in zend_dfa_optimize_op_array()
841 || opline->opcode == ZEND_ASSIGN_BW_XOR) in zend_dfa_optimize_op_array()
842 && opline->extended_value == 0) { in zend_dfa_optimize_op_array()
851 opline->opcode -= (ZEND_ASSIGN_ADD - ZEND_ADD); in zend_dfa_optimize_op_array()
852 opline->result_type = opline->op1_type; in zend_dfa_optimize_op_array()
853 opline->result.var = opline->op1.var; in zend_dfa_optimize_op_array()