Lines Matching refs:opline

80 #define SET_VAR_SOURCE(opline) Tsource[VAR_NUM(opline->result.var)] = opline  argument
143 …rget(zend_cfg *cfg, zend_op_array *op_array, zend_basic_block *block, zend_op *opline, zval *val) { in get_const_switch_target() argument
144 HashTable *jumptable = Z_ARRVAL(ZEND_OP2_LITERAL(opline)); in get_const_switch_target()
146 if ((opline->opcode == ZEND_SWITCH_LONG && Z_TYPE_P(val) != IS_LONG) in get_const_switch_target()
147 || (opline->opcode == ZEND_SWITCH_STRING && Z_TYPE_P(val) != IS_STRING)) { in get_const_switch_target()
161 return cfg->map[ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, Z_LVAL_P(zv))]; in get_const_switch_target()
166 zend_op *opline, *src; in zend_optimize_block() local
172 opline = op_array->opcodes + block->start; in zend_optimize_block()
173 end = opline + block->len; in zend_optimize_block()
174 while (opline < end) { in zend_optimize_block()
176 if ((opline->op1_type & (IS_TMP_VAR|IS_VAR)) && in zend_optimize_block()
177 opline->opcode != ZEND_FREE) { in zend_optimize_block()
178 src = VAR_SOURCE(opline->op1); in zend_optimize_block()
183 znode_op op1 = opline->op1; in zend_optimize_block()
184 if (opline->opcode == ZEND_VERIFY_RETURN_TYPE) { in zend_optimize_block()
186 COPY_NODE(opline->result, opline->op1); in zend_optimize_block()
187 COPY_NODE(opline->op1, src->op1); in zend_optimize_block()
193 if (zend_optimizer_update_op1_const(op_array, opline, &c)) { in zend_optimize_block()
198 switch (opline->opcode) { in zend_optimize_block()
200 if (zend_is_true(&ZEND_OP1_LITERAL(opline))) { in zend_optimize_block()
201 MAKE_NOP(opline); in zend_optimize_block()
206 opline->opcode = ZEND_JMP; in zend_optimize_block()
207 COPY_NODE(opline->op1, opline->op2); in zend_optimize_block()
213 if (zend_is_true(&ZEND_OP1_LITERAL(opline))) { in zend_optimize_block()
214 opline->opcode = ZEND_JMP; in zend_optimize_block()
215 COPY_NODE(opline->op1, opline->op2); in zend_optimize_block()
219 MAKE_NOP(opline); in zend_optimize_block()
226 if (zend_is_true(&ZEND_OP1_LITERAL(opline))) { in zend_optimize_block()
227 zend_op *target_opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value); in zend_optimize_block()
228 ZEND_SET_OP_JMP_ADDR(opline, opline->op1, target_opline); in zend_optimize_block()
232 zend_op *target_opline = ZEND_OP2_JMP_ADDR(opline); in zend_optimize_block()
233 ZEND_SET_OP_JMP_ADDR(opline, opline->op1, target_opline); in zend_optimize_block()
237 opline->op1_type = IS_UNUSED; in zend_optimize_block()
238 opline->extended_value = 0; in zend_optimize_block()
239 opline->opcode = ZEND_JMP; in zend_optimize_block()
252 if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) { in zend_optimize_block()
253 src = VAR_SOURCE(opline->op2); in zend_optimize_block()
258 znode_op op2 = opline->op2; in zend_optimize_block()
262 if (zend_optimizer_update_op2_const(op_array, opline, &c)) { in zend_optimize_block()
273 if (opline->opcode == ZEND_ECHO) { in zend_optimize_block()
274 if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) { in zend_optimize_block()
275 src = VAR_SOURCE(opline->op1); in zend_optimize_block()
280 zend_optimizer_remove_live_range(op_array, opline->op1.var); in zend_optimize_block()
281 VAR_SOURCE(opline->op1) = NULL; in zend_optimize_block()
282 COPY_NODE(opline->op1, src->op1); in zend_optimize_block()
287 if (opline->op1_type == IS_CONST) { in zend_optimize_block()
290 Z_TYPE(ZEND_OP1_LITERAL(opline)) != IS_DOUBLE && in zend_optimize_block()
298 if (Z_TYPE(ZEND_OP1_LITERAL(opline)) != IS_STRING) { in zend_optimize_block()
299 convert_to_string_safe(&ZEND_OP1_LITERAL(opline)); in zend_optimize_block()
305 l = old_len + Z_STRLEN(ZEND_OP1_LITERAL(opline)); in zend_optimize_block()
314 …LITERAL(last_op)) + old_len, Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)… in zend_optimize_block()
316 zval_ptr_dtor_nogc(&ZEND_OP1_LITERAL(opline)); in zend_optimize_block()
317 … ZVAL_STR(&ZEND_OP1_LITERAL(opline), zend_new_interned_string(Z_STR(ZEND_OP1_LITERAL(last_op)))); in zend_optimize_block()
321 last_op = opline; in zend_optimize_block()
329 switch (opline->opcode) { in zend_optimize_block()
332 if (opline->op1_type == IS_TMP_VAR) { in zend_optimize_block()
333 src = VAR_SOURCE(opline->op1); in zend_optimize_block()
338 VAR_SOURCE(opline->op1) = NULL; in zend_optimize_block()
339 MAKE_NOP(opline); in zend_optimize_block()
341 } else if (opline->op1_type == IS_VAR) { in zend_optimize_block()
342 src = VAR_SOURCE(opline->op1); in zend_optimize_block()
350 if (opline->extended_value & ZEND_FREE_ON_RETURN) { in zend_optimize_block()
352 op_array->live_range[opline->op2.num].var = (uint32_t)-1; in zend_optimize_block()
355 MAKE_NOP(opline); in zend_optimize_block()
367 if((opline->op1_type & IS_VAR) && in zend_optimize_block()
368 VAR_SOURCE(opline->op1) && VAR_SOURCE(opline->op1)->opcode == ZEND_DO_CF_FCALL && in zend_optimize_block()
369 VAR_SOURCE(opline->op1)->extended_value == 1) { in zend_optimize_block()
370 zend_op *fcall = VAR_SOURCE(opline->op1); in zend_optimize_block()
387 LITERAL_BOOL(opline->op1, 1); in zend_optimize_block()
388 opline->op1_type = IS_CONST; in zend_optimize_block()
396 ZEND_OP1_LITERAL(opline) = zend_optimizer_add_literal(op_array, &c); in zend_optimize_block()
398 opline->op1_type = IS_CONST; in zend_optimize_block()
405 LITERAL_BOOL(opline->op1, 1); in zend_optimize_block()
406 opline->op1_type = IS_CONST; in zend_optimize_block()
414 if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) { in zend_optimize_block()
416 Tsource[VAR_NUM(opline->op1.var)] = NULL; in zend_optimize_block()
422 if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) { in zend_optimize_block()
424 Tsource[VAR_NUM(opline->op1.var)] = NULL; in zend_optimize_block()
427 if (opline->op1_type == IS_CONST) { in zend_optimize_block()
428 int target = get_const_switch_target(cfg, op_array, block, opline, &ZEND_OP1_LITERAL(opline)); in zend_optimize_block()
429 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimize_block()
430 literal_dtor(&ZEND_OP2_LITERAL(opline)); in zend_optimize_block()
431 opline->opcode = ZEND_JMP; in zend_optimize_block()
432 opline->op1_type = IS_UNUSED; in zend_optimize_block()
433 opline->op2_type = IS_UNUSED; in zend_optimize_block()
440 if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) { in zend_optimize_block()
442 Tsource[VAR_NUM(opline->op1.var)] = NULL; in zend_optimize_block()
449 if (opline->op1_type == IS_CONST && in zend_optimize_block()
450 opline->op2_type == IS_CONST) { in zend_optimize_block()
460 if (opline->op1_type == IS_CONST && in zend_optimize_block()
461 (Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_FALSE || in zend_optimize_block()
462 Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_TRUE)) { in zend_optimize_block()
466 opline->opcode = in zend_optimize_block()
467 ((opline->opcode != ZEND_IS_NOT_EQUAL) == ((Z_TYPE(ZEND_OP1_LITERAL(opline))) == IS_TRUE)) ? in zend_optimize_block()
469 COPY_NODE(opline->op1, opline->op2); in zend_optimize_block()
470 SET_UNUSED(opline->op2); in zend_optimize_block()
472 } else if (opline->op2_type == IS_CONST && in zend_optimize_block()
473 (Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_FALSE || in zend_optimize_block()
474 Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_TRUE)) { in zend_optimize_block()
478 opline->opcode = in zend_optimize_block()
479 ((opline->opcode != ZEND_IS_NOT_EQUAL) == ((Z_TYPE(ZEND_OP2_LITERAL(opline))) == IS_TRUE)) ? in zend_optimize_block()
481 SET_UNUSED(opline->op2); in zend_optimize_block()
489 if (opline->op1_type == IS_CONST) { in zend_optimize_block()
492 if (opline->op1_type == IS_TMP_VAR && in zend_optimize_block()
493 !zend_bitset_in(used_ext, VAR_NUM(opline->op1.var))) { in zend_optimize_block()
494 src = VAR_SOURCE(opline->op1); in zend_optimize_block()
499 VAR_SOURCE(opline->op1) = NULL; in zend_optimize_block()
500 COPY_NODE(opline->op1, src->op1); in zend_optimize_block()
501 opline->opcode = (opline->opcode == ZEND_BOOL) ? ZEND_BOOL_NOT : ZEND_BOOL; in zend_optimize_block()
506 VAR_SOURCE(opline->op1) = NULL; in zend_optimize_block()
507 COPY_NODE(opline->op1, src->op1); in zend_optimize_block()
511 if (opline->opcode == ZEND_BOOL_NOT) { in zend_optimize_block()
514 COPY_NODE(src->result, opline->result); in zend_optimize_block()
516 MAKE_NOP(opline); in zend_optimize_block()
519 if (opline->opcode == ZEND_BOOL_NOT) { in zend_optimize_block()
522 COPY_NODE(src->result, opline->result); in zend_optimize_block()
524 MAKE_NOP(opline); in zend_optimize_block()
527 if (opline->opcode == ZEND_BOOL_NOT) { in zend_optimize_block()
530 COPY_NODE(src->result, opline->result); in zend_optimize_block()
532 MAKE_NOP(opline); in zend_optimize_block()
535 if (opline->opcode == ZEND_BOOL_NOT) { in zend_optimize_block()
538 COPY_NODE(src->result, opline->result); in zend_optimize_block()
540 MAKE_NOP(opline); in zend_optimize_block()
543 if (opline->opcode == ZEND_BOOL_NOT) { in zend_optimize_block()
555 COPY_NODE(src->result, opline->result); in zend_optimize_block()
557 MAKE_NOP(opline); in zend_optimize_block()
560 if (opline->opcode == ZEND_BOOL_NOT) { in zend_optimize_block()
572 COPY_NODE(src->result, opline->result); in zend_optimize_block()
574 MAKE_NOP(opline); in zend_optimize_block()
584 if (opline->opcode == ZEND_BOOL_NOT) { in zend_optimize_block()
587 COPY_NODE(src->result, opline->result); in zend_optimize_block()
589 MAKE_NOP(opline); in zend_optimize_block()
602 if (opline->op1_type == IS_TMP_VAR && in zend_optimize_block()
603 (!zend_bitset_in(used_ext, VAR_NUM(opline->op1.var)) || in zend_optimize_block()
604 (opline->result_type == opline->op1_type && in zend_optimize_block()
605 opline->result.var == opline->op1.var))) { in zend_optimize_block()
606 src = VAR_SOURCE(opline->op1); in zend_optimize_block()
609 opline->opcode != ZEND_JMPZ_EX && in zend_optimize_block()
610 opline->opcode != ZEND_JMPNZ_EX) { in zend_optimize_block()
611 VAR_SOURCE(opline->op1) = NULL; in zend_optimize_block()
612 COPY_NODE(opline->op1, src->op1); in zend_optimize_block()
613 if (opline->opcode == ZEND_JMPZ) { in zend_optimize_block()
615 opline->opcode = ZEND_JMPNZ; in zend_optimize_block()
616 } else if (opline->opcode == ZEND_JMPNZ) { in zend_optimize_block()
618 opline->opcode = ZEND_JMPZ; in zend_optimize_block()
620 } else if (opline->opcode == ZEND_JMPZ_EX) { in zend_optimize_block()
622 opline->opcode = ZEND_JMPNZ_EX; in zend_optimize_block()
623 } else if (opline->opcode == ZEND_JMPNZ_EX) { in zend_optimize_block()
625 opline->opcode = ZEND_JMPZ; in zend_optimize_block()
631 ZEND_ASSERT(opline->opcode == ZEND_JMPZNZ); in zend_optimize_block()
640 VAR_SOURCE(opline->op1) = NULL; in zend_optimize_block()
641 COPY_NODE(opline->op1, src->op1); in zend_optimize_block()
651 if (opline->op1_type == IS_CONST && in zend_optimize_block()
652 opline->op2_type == IS_CONST) { in zend_optimize_block()
656 if (opline->op2_type == IS_CONST && in zend_optimize_block()
657 opline->op1_type == IS_TMP_VAR) { in zend_optimize_block()
659 src = VAR_SOURCE(opline->op1); in zend_optimize_block()
667 if (Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_STRING) { in zend_optimize_block()
668 convert_to_string_safe(&ZEND_OP2_LITERAL(opline)); in zend_optimize_block()
674 VAR_SOURCE(opline->op1) = NULL; in zend_optimize_block()
675 COPY_NODE(opline->op1, src->op1); in zend_optimize_block()
677 l = old_len + Z_STRLEN(ZEND_OP2_LITERAL(opline)); in zend_optimize_block()
686 …OP2_LITERAL(src)) + old_len, Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRLEN(ZEND_OP2_LITERAL(opline)… in zend_optimize_block()
688 zend_string_release(Z_STR(ZEND_OP2_LITERAL(opline))); in zend_optimize_block()
689 ZVAL_STR(&ZEND_OP2_LITERAL(opline), zend_new_interned_string(Z_STR(ZEND_OP2_LITERAL(src)))); in zend_optimize_block()
695 if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) { in zend_optimize_block()
696 src = VAR_SOURCE(opline->op1); in zend_optimize_block()
701 zend_optimizer_remove_live_range(op_array, opline->op1.var); in zend_optimize_block()
702 VAR_SOURCE(opline->op1) = NULL; in zend_optimize_block()
703 COPY_NODE(opline->op1, src->op1); in zend_optimize_block()
707 if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) { in zend_optimize_block()
708 src = VAR_SOURCE(opline->op2); in zend_optimize_block()
713 zend_optimizer_remove_live_range(op_array, opline->op2.var); in zend_optimize_block()
714 zend_op *src = VAR_SOURCE(opline->op2); in zend_optimize_block()
715 VAR_SOURCE(opline->op2) = NULL; in zend_optimize_block()
716 COPY_NODE(opline->op2, src->op1); in zend_optimize_block()
720 if (opline->op1_type == IS_CONST && in zend_optimize_block()
721 Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING && in zend_optimize_block()
722 Z_STRLEN(ZEND_OP1_LITERAL(opline)) == 0) { in zend_optimize_block()
724 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimize_block()
725 opline->opcode = ZEND_CAST; in zend_optimize_block()
726 opline->extended_value = IS_STRING; in zend_optimize_block()
727 COPY_NODE(opline->op1, opline->op2); in zend_optimize_block()
728 opline->op2_type = IS_UNUSED; in zend_optimize_block()
729 opline->op2.var = 0; in zend_optimize_block()
730 } else if (opline->op2_type == IS_CONST && in zend_optimize_block()
731 Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING && in zend_optimize_block()
732 Z_STRLEN(ZEND_OP2_LITERAL(opline)) == 0) { in zend_optimize_block()
734 literal_dtor(&ZEND_OP2_LITERAL(opline)); in zend_optimize_block()
735 opline->opcode = ZEND_CAST; in zend_optimize_block()
736 opline->extended_value = IS_STRING; in zend_optimize_block()
737 opline->op2_type = IS_UNUSED; in zend_optimize_block()
738 opline->op2.var = 0; in zend_optimize_block()
739 } else if (opline->opcode == ZEND_CONCAT && in zend_optimize_block()
740 (opline->op1_type == IS_CONST || in zend_optimize_block()
741 (opline->op1_type == IS_TMP_VAR && in zend_optimize_block()
742 VAR_SOURCE(opline->op1) && in zend_optimize_block()
743 (VAR_SOURCE(opline->op1)->opcode == ZEND_FAST_CONCAT || in zend_optimize_block()
744 VAR_SOURCE(opline->op1)->opcode == ZEND_ROPE_END || in zend_optimize_block()
745 VAR_SOURCE(opline->op1)->opcode == ZEND_FETCH_CONSTANT || in zend_optimize_block()
746 VAR_SOURCE(opline->op1)->opcode == ZEND_FETCH_CLASS_CONSTANT))) && in zend_optimize_block()
747 (opline->op2_type == IS_CONST || in zend_optimize_block()
748 (opline->op2_type == IS_TMP_VAR && in zend_optimize_block()
749 VAR_SOURCE(opline->op2) && in zend_optimize_block()
750 (VAR_SOURCE(opline->op2)->opcode == ZEND_FAST_CONCAT || in zend_optimize_block()
751 VAR_SOURCE(opline->op2)->opcode == ZEND_ROPE_END || in zend_optimize_block()
752 VAR_SOURCE(opline->op2)->opcode == ZEND_FETCH_CONSTANT || in zend_optimize_block()
753 VAR_SOURCE(opline->op2)->opcode == ZEND_FETCH_CLASS_CONSTANT)))) { in zend_optimize_block()
754 opline->opcode = ZEND_FAST_CONCAT; in zend_optimize_block()
773 if (opline->op1_type == IS_CONST && in zend_optimize_block()
774 opline->op2_type == IS_CONST) { in zend_optimize_block()
779 …if (zend_optimizer_eval_binary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LI… in zend_optimize_block()
780 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimize_block()
781 literal_dtor(&ZEND_OP2_LITERAL(opline)); in zend_optimize_block()
782 opline->opcode = ZEND_QM_ASSIGN; in zend_optimize_block()
783 SET_UNUSED(opline->op2); in zend_optimize_block()
784 zend_optimizer_update_op1_const(op_array, opline, &result); in zend_optimize_block()
790 if (opline->op1_type == IS_CONST) { in zend_optimize_block()
795 … if (zend_optimizer_eval_unary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline)) == SUCCESS) { in zend_optimize_block()
796 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimize_block()
797 opline->opcode = ZEND_QM_ASSIGN; in zend_optimize_block()
798 zend_optimizer_update_op1_const(op_array, opline, &result); in zend_optimize_block()
804 if (opline->op1_type == IS_CONST) { in zend_optimize_block()
808 …if (zend_optimizer_eval_cast(&result, opline->extended_value, &ZEND_OP1_LITERAL(opline)) == SUCCES… in zend_optimize_block()
809 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimize_block()
810 opline->opcode = ZEND_QM_ASSIGN; in zend_optimize_block()
811 opline->extended_value = 0; in zend_optimize_block()
812 zend_optimizer_update_op1_const(op_array, opline, &result); in zend_optimize_block()
818 if (opline->op1_type == IS_CONST) { in zend_optimize_block()
821 if (zend_optimizer_eval_strlen(&result, &ZEND_OP1_LITERAL(opline)) == SUCCESS) { in zend_optimize_block()
822 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimize_block()
823 opline->opcode = ZEND_QM_ASSIGN; in zend_optimize_block()
824 zend_optimizer_update_op1_const(op_array, opline, &result); in zend_optimize_block()
831 if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) { in zend_optimize_block()
832 src = VAR_SOURCE(opline->op1); in zend_optimize_block()
837 while (op < opline) { in zend_optimize_block()
838 if ((op->op1_type == opline->op1_type in zend_optimize_block()
839 && op->op1.var == opline->op1.var) in zend_optimize_block()
840 || (op->op2_type == opline->op1_type in zend_optimize_block()
841 && op->op2.var == opline->op1.var)) { in zend_optimize_block()
850 VAR_SOURCE(opline->op1) = NULL; in zend_optimize_block()
851 COPY_NODE(opline->op1, src->op1); in zend_optimize_block()
859 if (opline->op1_type == opline->result_type && in zend_optimize_block()
860 opline->op1.var == opline->result.var) { in zend_optimize_block()
862 MAKE_NOP(opline); in zend_optimize_block()
868 if (opline->result_type & (IS_VAR|IS_TMP_VAR)) { in zend_optimize_block()
869 SET_VAR_SOURCE(opline); in zend_optimize_block()
871 opline++; in zend_optimize_block()
882 zend_op *opline; in assemble_code_blocks() local
891 opline = op_array->opcodes + b->start + b->len - 1; in assemble_code_blocks()
892 if (opline->opcode == ZEND_JMP) { in assemble_code_blocks()
900 MAKE_NOP(opline); in assemble_code_blocks()
903 } else if (b->len == 1 && opline->opcode == ZEND_NOP) { in assemble_code_blocks()
924 opline = new_opcodes; in assemble_code_blocks()
929 memcpy(opline, op_array->opcodes + b->start, b->len * sizeof(zend_op)); in assemble_code_blocks()
930 b->start = opline - new_opcodes; in assemble_code_blocks()
931 opline += b->len; in assemble_code_blocks()
944 opline = op_array->opcodes + b->start + b->len - 1; in assemble_code_blocks()
945 switch (opline->opcode) { in assemble_code_blocks()
948 ZEND_SET_OP_JMP_ADDR(opline, opline->op1, new_opcodes + blocks[b->successors[0]].start); in assemble_code_blocks()
951opline->extended_value = ZEND_OPLINE_TO_OFFSET(opline, new_opcodes + blocks[b->successors[1]].star… in assemble_code_blocks()
962 ZEND_SET_OP_JMP_ADDR(opline, opline->op2, new_opcodes + blocks[b->successors[0]].start); in assemble_code_blocks()
965 if (!opline->result.var) { in assemble_code_blocks()
966opline->extended_value = ZEND_OPLINE_TO_OFFSET(opline, new_opcodes + blocks[b->successors[0]].star… in assemble_code_blocks()
973opline->extended_value = ZEND_OPLINE_TO_OFFSET(opline, new_opcodes + blocks[b->successors[0]].star… in assemble_code_blocks()
978 HashTable *jumptable = Z_ARRVAL(ZEND_OP2_LITERAL(opline)); in assemble_code_blocks()
984 Z_LVAL_P(zv) = ZEND_OPLINE_TO_OFFSET(opline, new_opcodes + blocks[b->successors[s++]].start); in assemble_code_blocks()
986opline->extended_value = ZEND_OPLINE_TO_OFFSET(opline, new_opcodes + blocks[b->successors[s++]].st… in assemble_code_blocks()
1029 zend_op *opline = new_opcodes; in assemble_code_blocks() local
1030 zend_op *end = opline + len; in assemble_code_blocks()
1031 while (opline < end) { in assemble_code_blocks()
1032 if (opline->opcode == ZEND_FAST_RET && in assemble_code_blocks()
1033 opline->op2.num != (uint32_t)-1 && in assemble_code_blocks()
1034 opline->op2.num < (uint32_t)j) { in assemble_code_blocks()
1035 opline->op2.num = map[opline->op2.num]; in assemble_code_blocks()
1037 opline++; in assemble_code_blocks()
1079 zend_op *opline = new_opcodes; in assemble_code_blocks() local
1080 zend_op *end = opline + len; in assemble_code_blocks()
1081 while (opline != end) { in assemble_code_blocks()
1082 if ((opline->opcode == ZEND_FREE || opline->opcode == ZEND_FE_FREE) && in assemble_code_blocks()
1083 opline->extended_value == ZEND_FREE_ON_RETURN) { in assemble_code_blocks()
1084 ZEND_ASSERT(opline->op2.num < (uint32_t) i); in assemble_code_blocks()
1085 opline->op2.num = map[opline->op2.num]; in assemble_code_blocks()
1087 opline++; in assemble_code_blocks()
1102 opline = op_array->opcodes; in assemble_code_blocks()
1103 end = opline + op_array->last; in assemble_code_blocks()
1104 while (opline < end) { in assemble_code_blocks()
1105 if (opline->opcode == ZEND_DECLARE_INHERITED_CLASS_DELAYED) { in assemble_code_blocks()
1106 *opline_num = opline - op_array->opcodes; in assemble_code_blocks()
1107 opline_num = &opline->result.opline_num; in assemble_code_blocks()
1109 ++opline; in assemble_code_blocks()
1608 zend_op *opline, *end; in zend_t_usage() local
1628 opline = op_array->opcodes + block->start; in zend_t_usage()
1629 end = opline + block->len; in zend_t_usage()
1636 while (opline<end) { in zend_t_usage()
1637 if (opline->op1_type & (IS_VAR|IS_TMP_VAR)) { in zend_t_usage()
1638 var_num = VAR_NUM(opline->op1.var); in zend_t_usage()
1643 if (opline->op2_type == IS_VAR) { in zend_t_usage()
1644 var_num = VAR_NUM(opline->op2.var); in zend_t_usage()
1645 if (opline->opcode == ZEND_FE_FETCH_R || in zend_t_usage()
1646 opline->opcode == ZEND_FE_FETCH_RW) { in zend_t_usage()
1652 } else if (opline->op2_type == IS_TMP_VAR) { in zend_t_usage()
1653 var_num = VAR_NUM(opline->op2.var); in zend_t_usage()
1659 if (opline->result_type == IS_VAR) { in zend_t_usage()
1660 var_num = VAR_NUM(opline->result.var); in zend_t_usage()
1662 } else if (opline->result_type == IS_TMP_VAR) { in zend_t_usage()
1663 var_num = VAR_NUM(opline->result.var); in zend_t_usage()
1664 switch (opline->opcode) { in zend_t_usage()
1676 opline++; in zend_t_usage()
1709 opline = end + block->len - 1; in zend_t_usage()
1720 while (opline >= end) { in zend_t_usage()
1722 if (opline->result_type == IS_VAR) { in zend_t_usage()
1723 if (!zend_bitset_in(usage, VAR_NUM(opline->result.var))) { in zend_t_usage()
1724 switch (opline->opcode) { in zend_t_usage()
1745 opline->result_type = IS_UNUSED; in zend_t_usage()
1749 zend_bitset_excl(usage, VAR_NUM(opline->result.var)); in zend_t_usage()
1751 } else if (opline->result_type == IS_TMP_VAR) { in zend_t_usage()
1752 if (!zend_bitset_in(usage, VAR_NUM(opline->result.var))) { in zend_t_usage()
1753 switch (opline->opcode) { in zend_t_usage()
1756 opline->opcode -= 2; in zend_t_usage()
1757 opline->result_type = IS_UNUSED; in zend_t_usage()
1762 if (opline->op1_type == IS_CV) { in zend_t_usage()
1763 opline->opcode = ZEND_CHECK_VAR; in zend_t_usage()
1764 SET_UNUSED(opline->result); in zend_t_usage()
1765 } else if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) { in zend_t_usage()
1766 opline->opcode = ZEND_FREE; in zend_t_usage()
1767 SET_UNUSED(opline->result); in zend_t_usage()
1769 if (opline->op1_type == IS_CONST) { in zend_t_usage()
1770 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_t_usage()
1772 MAKE_NOP(opline); in zend_t_usage()
1777 opline->opcode -= 3; in zend_t_usage()
1778 SET_UNUSED(opline->result); in zend_t_usage()
1782 zend_bitset_incl(usage, VAR_NUM(opline->result.var)); in zend_t_usage()
1786 switch (opline->opcode) { in zend_t_usage()
1791 zend_bitset_excl(usage, VAR_NUM(opline->result.var)); in zend_t_usage()
1797 if (opline->op2_type == IS_VAR) { in zend_t_usage()
1798 switch (opline->opcode) { in zend_t_usage()
1801 zend_bitset_excl(usage, VAR_NUM(opline->op2.var)); in zend_t_usage()
1804 zend_bitset_incl(usage, VAR_NUM(opline->op2.var)); in zend_t_usage()
1807 } else if (opline->op2_type == IS_TMP_VAR) { in zend_t_usage()
1808 zend_bitset_incl(usage, VAR_NUM(opline->op2.var)); in zend_t_usage()
1811 if (opline->op1_type & (IS_VAR|IS_TMP_VAR)) { in zend_t_usage()
1812 zend_bitset_incl(usage, VAR_NUM(opline->op1.var)); in zend_t_usage()
1815 opline--; in zend_t_usage()