Lines Matching refs:opline

509 	zend_op *opline = op_array->opcodes, *end=opline+op_array->last;  in zend_update_extended_stmts()  local
511 while (opline<end) { in zend_update_extended_stmts()
512 if (opline->opcode == ZEND_EXT_STMT) { in zend_update_extended_stmts()
513 if (opline+1<end) { in zend_update_extended_stmts()
514 if ((opline+1)->opcode == ZEND_EXT_STMT) { in zend_update_extended_stmts()
515 opline->opcode = ZEND_NOP; in zend_update_extended_stmts()
516 opline++; in zend_update_extended_stmts()
519 if (opline+1<end) { in zend_update_extended_stmts()
520 opline->lineno = (opline+1)->lineno; in zend_update_extended_stmts()
523 opline->opcode = ZEND_NOP; in zend_update_extended_stmts()
526 opline++; in zend_update_extended_stmts()
562 static uint32_t zend_get_brk_cont_target(const zend_op_array *op_array, const zend_op *opline) { in zend_get_brk_cont_target() argument
563 int nest_levels = opline->op2.num; in zend_get_brk_cont_target()
564 int array_offset = opline->op1.num; in zend_get_brk_cont_target()
573 return opline->opcode == ZEND_BRK ? jmp_to->brk : jmp_to->cont; in zend_get_brk_cont_target()
726 static zend_bool is_fake_def(zend_op *opline) { in is_fake_def() argument
728 return opline->opcode == ZEND_ROPE_ADD in is_fake_def()
729 || opline->opcode == ZEND_ADD_ARRAY_ELEMENT in is_fake_def()
730 || opline->opcode == ZEND_ADD_ARRAY_UNPACK; in is_fake_def()
733 static zend_bool keeps_op1_alive(zend_op *opline) { in keeps_op1_alive() argument
736 if (opline->opcode == ZEND_CASE in keeps_op1_alive()
737 || opline->opcode == ZEND_SWITCH_LONG in keeps_op1_alive()
738 || opline->opcode == ZEND_FETCH_LIST_R in keeps_op1_alive()
739 || opline->opcode == ZEND_COPY_TMP) { in keeps_op1_alive()
742 ZEND_ASSERT(opline->opcode != ZEND_SWITCH_STRING in keeps_op1_alive()
743 && opline->opcode != ZEND_FE_FETCH_R in keeps_op1_alive()
744 && opline->opcode != ZEND_FE_FETCH_RW in keeps_op1_alive()
745 && opline->opcode != ZEND_FETCH_LIST_W in keeps_op1_alive()
746 && opline->opcode != ZEND_VERIFY_RETURN_TYPE in keeps_op1_alive()
747 && opline->opcode != ZEND_BIND_LEXICAL in keeps_op1_alive()
748 && opline->opcode != ZEND_ROPE_ADD); in keeps_op1_alive()
772 zend_op *opline = &op_array->opcodes[opnum]; in zend_calc_live_ranges() local
781 opline--; in zend_calc_live_ranges()
783 if ((opline->result_type & (IS_TMP_VAR|IS_VAR)) && !is_fake_def(opline)) { in zend_calc_live_ranges()
784 uint32_t var_num = EX_VAR_TO_NUM(opline->result.var) - var_offset; in zend_calc_live_ranges()
797 ZEND_ASSERT(opline->opcode != ZEND_OP_DATA); in zend_calc_live_ranges()
801 num = opnum - (opline->opcode == ZEND_OP_DATA); in zend_calc_live_ranges()
809 if ((opline->op1_type & (IS_TMP_VAR|IS_VAR))) { in zend_calc_live_ranges()
810 uint32_t var_num = EX_VAR_TO_NUM(opline->op1.var) - var_offset; in zend_calc_live_ranges()
812 if (EXPECTED(!keeps_op1_alive(opline))) { in zend_calc_live_ranges()
814 last_use[var_num] = opnum - (opline->opcode == ZEND_OP_DATA); in zend_calc_live_ranges()
818 if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) { in zend_calc_live_ranges()
819 uint32_t var_num = EX_VAR_TO_NUM(opline->op2.var) - var_offset; in zend_calc_live_ranges()
820 if (UNEXPECTED(opline->opcode == ZEND_FE_FETCH_R in zend_calc_live_ranges()
821 || opline->opcode == ZEND_FE_FETCH_RW)) { in zend_calc_live_ranges()
833 ZEND_ASSERT(opline->opcode != ZEND_OP_DATA); in zend_calc_live_ranges()
837 last_use[var_num] = opnum - (opline->opcode == ZEND_OP_DATA); in zend_calc_live_ranges()
881 zend_op *opline, *end; in pass_two() local
927 opline = op_array->opcodes; in pass_two()
928 end = opline + op_array->last; in pass_two()
929 while (opline < end) { in pass_two()
930 switch (opline->opcode) { in pass_two()
933 zval *val = CT_CONSTANT(opline->op2); in pass_two()
942 opline->op1.opline_num = op_array->try_catch_array[opline->op1.num].finally_op; in pass_two()
943 ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op1); in pass_two()
948 uint32_t jmp_target = zend_get_brk_cont_target(op_array, opline); in pass_two()
951 zend_check_finally_breakout(op_array, opline - op_array->opcodes, jmp_target); in pass_two()
953 opline->opcode = ZEND_JMP; in pass_two()
954 opline->op1.opline_num = jmp_target; in pass_two()
955 opline->op2.num = 0; in pass_two()
956 ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op1); in pass_two()
960 zend_resolve_goto_label(op_array, opline); in pass_two()
962 zend_check_finally_breakout(op_array, opline - op_array->opcodes, opline->op1.opline_num); in pass_two()
966 ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op1); in pass_two()
970 opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, opline->extended_value); in pass_two()
980 ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op2); in pass_two()
985 zend_op *call = &op_array->opcodes[opline->op2.opline_num - 1]; in pass_two()
990 opline->result_type = IS_UNUSED; in pass_two()
992 ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op2); in pass_two()
998 opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, opline->extended_value); in pass_two()
1001 if (!(opline->extended_value & ZEND_LAST_CATCH)) { in pass_two()
1002 ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op2); in pass_two()
1008 opline->opcode = ZEND_GENERATOR_RETURN; in pass_two()
1015 HashTable *jumptable = Z_ARRVAL_P(CT_CONSTANT(opline->op2)); in pass_two()
1018 Z_LVAL_P(zv) = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, Z_LVAL_P(zv)); in pass_two()
1021 opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, opline->extended_value); in pass_two()
1025 if (opline->op1_type == IS_CONST) { in pass_two()
1026 ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, opline->op1); in pass_two()
1027 } else if (opline->op1_type & (IS_VAR|IS_TMP_VAR)) { in pass_two()
1028opline->op1.var = (uint32_t)(zend_intptr_t)ZEND_CALL_VAR_NUM(NULL, op_array->last_var + opline->op… in pass_two()
1030 if (opline->op2_type == IS_CONST) { in pass_two()
1031 ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, opline->op2); in pass_two()
1032 } else if (opline->op2_type & (IS_VAR|IS_TMP_VAR)) { in pass_two()
1033opline->op2.var = (uint32_t)(zend_intptr_t)ZEND_CALL_VAR_NUM(NULL, op_array->last_var + opline->op… in pass_two()
1035 if (opline->result_type & (IS_VAR|IS_TMP_VAR)) { in pass_two()
1036opline->result.var = (uint32_t)(zend_intptr_t)ZEND_CALL_VAR_NUM(NULL, op_array->last_var + opline-… in pass_two()
1038 ZEND_VM_SET_OPCODE_HANDLER(opline); in pass_two()
1039 opline++; in pass_two()