Lines Matching refs:opline

101 static int zend_jit_trace_op_len(const zend_op *opline);
102 static int zend_jit_trace_may_exit(const zend_op_array *op_array, const zend_op *opline);
168 static int zend_jit_is_constant_cmp_long_long(const zend_op *opline, in zend_jit_is_constant_cmp_long_long() argument
200 switch (opline->opcode) { in zend_jit_is_constant_cmp_long_long()
252 …rray *op_array, zend_ssa *ssa, const zend_ssa_op *ssa_op, const zend_op *opline, int call_level, z… in zend_jit_needs_call_chain() argument
262 switch (p->opline->opcode) { in zend_jit_needs_call_chain()
311 if (zend_may_throw(opline, ssa_op, op_array, ssa)) { in zend_jit_needs_call_chain()
315 ADVANCE_SSA_OP(ssa_op, zend_jit_trace_op_len(opline)); in zend_jit_needs_call_chain()
328 opline++; in zend_jit_needs_call_chain()
331 while (opline != end) { in zend_jit_needs_call_chain()
333 if (zend_may_throw(opline, ssa_op, op_array, ssa)) { in zend_jit_needs_call_chain()
337 switch (opline->opcode) { in zend_jit_needs_call_chain()
384 end = opline; in zend_jit_needs_call_chain()
391 opline++; in zend_jit_needs_call_chain()
405 opline++; in zend_jit_needs_call_chain()
408 while (opline != end) { in zend_jit_needs_call_chain()
410 switch (opline->opcode) { in zend_jit_needs_call_chain()
427 if (zend_may_throw(opline, ssa_op, op_array, ssa)) { in zend_jit_needs_call_chain()
431 opline++; in zend_jit_needs_call_chain()
451 zend_op *opline = call_info->arg_info[num_args].opline; in skip_valid_arguments() local
452 zend_ssa_op *ssa_op = ssa->ops ? &ssa->ops[opline - op_array->opcodes] : NULL; in skip_valid_arguments()
488 … const zend_op *opline = op_array->opcodes + ssa->cfg.blocks[j].start + ssa->cfg.blocks[j].len - 1; in zend_ssa_cv_info() local
490 if (opline->opcode == ZEND_RETURN) { in zend_ssa_cv_info()
491 if (opline->op1_type == IS_CV && opline->op1.var == EX_NUM_TO_VAR(var)) { in zend_ssa_cv_info()
504 static bool zend_jit_may_avoid_refcounting(const zend_op *opline, uint32_t op1_info) in zend_jit_may_avoid_refcounting() argument
506 switch (opline->opcode) { in zend_jit_may_avoid_refcounting()
517 && opline->op2_type == IS_CONST in zend_jit_may_avoid_refcounting()
518 && Z_TYPE_P(RT_CONSTANT(opline, opline->op2)) == IS_STRING in zend_jit_may_avoid_refcounting()
519 && Z_STRVAL_P(RT_CONSTANT(opline, opline->op2))[0] != '\0') { in zend_jit_may_avoid_refcounting()
534 if (!(opline->extended_value & ZEND_ISEMPTY)) { in zend_jit_may_avoid_refcounting()
659 (((opline->opN##_type & (IS_TMP_VAR|IS_VAR|IS_CV)) && \
757 static int zend_may_overflow(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array … in zend_may_overflow() argument
765 switch (opline->opcode) { in zend_may_overflow()
857 if (opline->extended_value == ZEND_ADD) { in zend_may_overflow()
884 } else if (opline->extended_value == ZEND_SUB) { in zend_may_overflow()
911 } else if (opline->extended_value == ZEND_MUL) { in zend_may_overflow()
1230 static bool zend_jit_next_is_send_result(const zend_op *opline) in zend_jit_next_is_send_result() argument
1232 if (opline->result_type == IS_TMP_VAR in zend_jit_next_is_send_result()
1233 && (opline+1)->opcode == ZEND_SEND_VAL in zend_jit_next_is_send_result()
1234 && (opline+1)->op1_type == IS_TMP_VAR in zend_jit_next_is_send_result()
1235 && (opline+1)->op2_type != IS_CONST in zend_jit_next_is_send_result()
1236 && (opline+1)->op1.var == opline->result.var) { in zend_jit_next_is_send_result()
1273 zend_op *opline; in zend_jit() local
1333 opline = op_array->opcodes + ssa->cfg.blocks[b].start; in zend_jit()
1335 if (opline->opcode == ZEND_RECV_INIT) { in zend_jit()
1337 if (opline != op_array->opcodes && (opline-1)->opcode != ZEND_RECV_INIT) { in zend_jit()
1341 if (opline != op_array->opcodes && recv_emitted) { in zend_jit()
1346 } else if (opline->opcode == ZEND_RECV) { in zend_jit()
1463 opline = op_array->opcodes + i; in zend_jit()
1464 switch (opline->opcode) { in zend_jit()
1478 switch (opline->opcode) { in zend_jit()
1483 if (opline->op1_type != IS_CV) { in zend_jit()
1490 if (opline->result_type != IS_UNUSED) { in zend_jit()
1493 if (opline->result_type == IS_CV in zend_jit()
1513 if (!zend_jit_inc_dec(&ctx, opline, in zend_jit()
1518 …(op1_info & MAY_BE_LONG) && (op1_def_info & MAY_BE_DOUBLE) && zend_may_overflow(opline, ssa_op, op… in zend_jit()
1519 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit()
1541 && zend_jit_next_is_send_result(opline)) { in zend_jit()
1544 res_addr = ZEND_ADDR_MEM_ZVAL(ZREG_RX, (opline+1)->result.var); in zend_jit()
1551 if (opline->result_type == IS_CV in zend_jit()
1564 if (!zend_jit_long_math(&ctx, opline, in zend_jit()
1568 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit()
1584 if (opline->opcode == ZEND_ADD && in zend_jit()
1595 && zend_jit_next_is_send_result(opline)) { in zend_jit()
1598 res_addr = ZEND_ADDR_MEM_ZVAL(ZREG_RX, (opline+1)->result.var); in zend_jit()
1605 if (opline->result_type == IS_CV in zend_jit()
1619 if (opline->opcode == ZEND_ADD && in zend_jit()
1622 …if (!zend_jit_add_arrays(&ctx, opline, op1_info, OP1_REG_ADDR(), op2_info, OP2_REG_ADDR(), res_add… in zend_jit()
1626 if (!zend_jit_math(&ctx, opline, in zend_jit()
1630 …2_info & MAY_BE_LONG) && (res_info & MAY_BE_DOUBLE) && zend_may_overflow(opline, ssa_op, op_array,… in zend_jit()
1631 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit()
1652 && zend_jit_next_is_send_result(opline)) { in zend_jit()
1654 res_addr = ZEND_ADDR_MEM_ZVAL(ZREG_RX, (opline+1)->result.var); in zend_jit()
1659 if (!zend_jit_concat(&ctx, opline, in zend_jit()
1661 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit()
1666 if (opline->op1_type != IS_CV || opline->result_type != IS_UNUSED) { in zend_jit()
1675 opline->extended_value, op1_info, op2_info)) { in zend_jit()
1686 if (!zend_jit_assign_op(&ctx, opline, in zend_jit()
1690 …fo & MAY_BE_LONG) && (op1_def_info & MAY_BE_DOUBLE) && zend_may_overflow(opline, ssa_op, op_array,… in zend_jit()
1691 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit()
1696 if (opline->op1_type != IS_CV || opline->result_type != IS_UNUSED) { in zend_jit()
1703 opline->extended_value, MAY_BE_ANY, OP1_DATA_INFO())) { in zend_jit()
1706 if (!zend_jit_assign_dim_op(&ctx, opline, in zend_jit()
1708 OP2_INFO(), (opline->op2_type != IS_UNUSED) ? OP2_REG_ADDR() : 0, in zend_jit()
1709 (opline->op2_type != IS_UNUSED) ? OP2_RANGE() : NULL, in zend_jit()
1711 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit()
1716 if (opline->op1_type != IS_CV) { in zend_jit()
1722 if (!zend_jit_assign_dim(&ctx, opline, in zend_jit()
1724 OP2_INFO(), (opline->op2_type != IS_UNUSED) ? OP2_REG_ADDR() : 0, in zend_jit()
1725 (opline->op2_type != IS_UNUSED) ? OP2_RANGE() : NULL, in zend_jit()
1728 (opline->result_type != IS_UNUSED) ? RES_REG_ADDR() : 0, in zend_jit()
1730 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit()
1738 if (opline->op2_type != IS_CONST in zend_jit()
1739 || Z_TYPE_P(RT_CONSTANT(opline, opline->op2)) != IS_STRING in zend_jit()
1740 || Z_STRVAL_P(RT_CONSTANT(opline, opline->op2))[0] == '\0') { in zend_jit()
1749 if (opline->op1_type == IS_UNUSED) { in zend_jit()
1765 zend_ssa_op *ssa_op = &ssa->ops[opline - op_array->opcodes]; in zend_jit()
1775 if (!zend_jit_incdec_obj(&ctx, opline, op_array, ssa, ssa_op, in zend_jit()
1782 if (opline->result_type != IS_UNUSED) { in zend_jit()
1785 if (opline->op2_type != IS_CONST in zend_jit()
1786 || Z_TYPE_P(RT_CONSTANT(opline, opline->op2)) != IS_STRING in zend_jit()
1787 || Z_STRVAL_P(RT_CONSTANT(opline, opline->op2))[0] == '\0') { in zend_jit()
1794 opline->extended_value, MAY_BE_ANY, OP1_DATA_INFO())) { in zend_jit()
1800 if (opline->op1_type == IS_UNUSED) { in zend_jit()
1816 zend_ssa_op *ssa_op = &ssa->ops[opline - op_array->opcodes]; in zend_jit()
1826 if (!zend_jit_assign_obj_op(&ctx, opline, op_array, ssa, ssa_op, in zend_jit()
1833 if (opline->op2_type != IS_CONST in zend_jit()
1834 || Z_TYPE_P(RT_CONSTANT(opline, opline->op2)) != IS_STRING in zend_jit()
1835 || Z_STRVAL_P(RT_CONSTANT(opline, opline->op2))[0] == '\0') { in zend_jit()
1844 if (opline->op1_type == IS_UNUSED) { in zend_jit()
1860 zend_ssa_op *ssa_op = &ssa->ops[opline - op_array->opcodes]; in zend_jit()
1870 if (!zend_jit_assign_obj(&ctx, opline, op_array, ssa, ssa_op, in zend_jit()
1872 (opline->result_type != IS_UNUSED) ? RES_REG_ADDR() : 0, in zend_jit()
1874 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit()
1879 if (opline->op1_type != IS_CV) { in zend_jit()
1887 && ssa->ops[opline - op_array->opcodes].op2_def >= 0 in zend_jit()
1888 && !ssa->vars[ssa->ops[opline - op_array->opcodes].op2_def].no_val) { in zend_jit()
1897 if (opline->result_type == IS_UNUSED) { in zend_jit()
1905 && zend_jit_next_is_send_result(opline) in zend_jit()
1908 res_addr = ZEND_ADDR_MEM_ZVAL(ZREG_RX, (opline+1)->result.var); in zend_jit()
1914 if (!zend_jit_assign(&ctx, opline, in zend_jit()
1920 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit()
1927 && ssa->ops[opline - op_array->opcodes].op1_def >= 0 in zend_jit()
1928 && !ssa->vars[ssa->ops[opline - op_array->opcodes].op1_def].no_val) { in zend_jit()
1933 if (!zend_jit_qm_assign(&ctx, opline, in zend_jit()
1942 if (!zend_jit_init_fcall(&ctx, opline, b, op_array, ssa, ssa_op, call_level, NULL, 0)) { in zend_jit()
1948 if (opline->op2_type == IS_CONST) { in zend_jit()
1952 if (opline->opcode == ZEND_SEND_VAL_EX in zend_jit()
1953 && opline->op2.num > MAX_ARG_FLAG_NUM) { in zend_jit()
1956 if (!zend_jit_send_val(&ctx, opline, in zend_jit()
1962 if (opline->op2_type == IS_CONST) { in zend_jit()
1966 if (!zend_jit_send_ref(&ctx, opline, op_array, in zend_jit()
1976 if (opline->op2_type == IS_CONST) { in zend_jit()
1980 if ((opline->opcode == ZEND_SEND_VAR_EX in zend_jit()
1981 || opline->opcode == ZEND_SEND_VAR_NO_REF_EX) in zend_jit()
1982 && opline->op2.num > MAX_ARG_FLAG_NUM) { in zend_jit()
1987 && ssa->ops[opline - op_array->opcodes].op1_def >= 0 in zend_jit()
1988 && !ssa->vars[ssa->ops[opline - op_array->opcodes].op1_def].no_val) { in zend_jit()
1993 if (!zend_jit_send_var(&ctx, opline, op_array, in zend_jit()
1999 if (opline->op2_type == IS_CONST) { in zend_jit()
2003 if (opline->op2.num > MAX_ARG_FLAG_NUM) { in zend_jit()
2006 if (!zend_jit_check_func_arg(&ctx, opline)) { in zend_jit()
2011 if (!zend_jit_check_undef_args(&ctx, opline)) { in zend_jit()
2020 if (!zend_jit_do_fcall(&ctx, opline, op_array, ssa, call_level, b + 1, NULL)) { in zend_jit()
2030 if ((opline->result_type & IS_TMP_VAR) in zend_jit()
2032 && ((opline+1)->opcode == ZEND_JMPZ in zend_jit()
2033 || (opline+1)->opcode == ZEND_JMPNZ in zend_jit()
2034 || (opline+1)->opcode == ZEND_JMPZ_EX in zend_jit()
2035 || (opline+1)->opcode == ZEND_JMPNZ_EX) in zend_jit()
2036 && (opline+1)->op1_type == IS_TMP_VAR in zend_jit()
2037 && (opline+1)->op1.var == opline->result.var) { in zend_jit()
2039 smart_branch_opcode = (opline+1)->opcode; in zend_jit()
2043 if ((opline+1)->opcode == ZEND_JMPZ_EX in zend_jit()
2044 || (opline+1)->opcode == ZEND_JMPNZ_EX) { in zend_jit()
2045 res_addr = OP_REG_ADDR(opline + 1, ssa_op + 1, result_type, result, result_def); in zend_jit()
2051 if (!zend_jit_cmp(&ctx, opline, in zend_jit()
2055 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit()
2066 if ((opline->result_type & IS_TMP_VAR) in zend_jit()
2068 && ((opline+1)->opcode == ZEND_JMPZ in zend_jit()
2069 || (opline+1)->opcode == ZEND_JMPZ_EX in zend_jit()
2070 || (opline+1)->opcode == ZEND_JMPNZ_EX in zend_jit()
2071 || (opline+1)->opcode == ZEND_JMPNZ) in zend_jit()
2072 && (opline+1)->op1_type == IS_TMP_VAR in zend_jit()
2073 && (opline+1)->op1.var == opline->result.var) { in zend_jit()
2075 smart_branch_opcode = (opline+1)->opcode; in zend_jit()
2079 if ((opline+1)->opcode == ZEND_JMPZ_EX in zend_jit()
2080 || (opline+1)->opcode == ZEND_JMPNZ_EX) { in zend_jit()
2081 res_addr = OP_REG_ADDR(opline + 1, ssa_op + 1, result_type, result, result_def); in zend_jit()
2087 if (!zend_jit_identical(&ctx, opline, in zend_jit()
2091 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit()
2098 if ((opline->result_type & IS_TMP_VAR) in zend_jit()
2100 && ((opline+1)->opcode == ZEND_JMPZ in zend_jit()
2101 || (opline+1)->opcode == ZEND_JMPNZ) in zend_jit()
2102 && (opline+1)->op1_type == IS_TMP_VAR in zend_jit()
2103 && (opline+1)->op1.var == opline->result.var) { in zend_jit()
2105 smart_branch_opcode = (opline+1)->opcode; in zend_jit()
2112 if (!zend_jit_defined(&ctx, opline, smart_branch_opcode, target_label, target_label2, NULL)) { in zend_jit()
2117 if (opline->extended_value == MAY_BE_RESOURCE) { in zend_jit()
2121 if ((opline->result_type & IS_TMP_VAR) in zend_jit()
2123 && ((opline+1)->opcode == ZEND_JMPZ in zend_jit()
2124 || (opline+1)->opcode == ZEND_JMPNZ) in zend_jit()
2125 && (opline+1)->op1_type == IS_TMP_VAR in zend_jit()
2126 && (opline+1)->op1.var == opline->result.var) { in zend_jit()
2128 smart_branch_opcode = (opline+1)->opcode; in zend_jit()
2135 …if (!zend_jit_type_check(&ctx, opline, OP1_INFO(), smart_branch_opcode, target_label, target_label… in zend_jit()
2147 if (!zend_jit_tail_handler(&ctx, opline)) { in zend_jit()
2151 if (!zend_jit_return(&ctx, opline, op_array, in zend_jit()
2159 if (!zend_jit_bool_jmpznz(&ctx, opline, in zend_jit()
2162 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit()
2163 opline->opcode, NULL)) { in zend_jit()
2169 if (opline > op_array->opcodes + ssa->cfg.blocks[b].start && in zend_jit()
2170 ((opline-1)->result_type & (IS_SMART_BRANCH_JMPZ|IS_SMART_BRANCH_JMPNZ)) != 0) { in zend_jit()
2172 if (!zend_jit_cond_jmp(&ctx, opline + 1, ssa->cfg.blocks[b].successors[0])) { in zend_jit()
2180 if (opline->result_type == IS_UNDEF) { in zend_jit()
2185 if (!zend_jit_bool_jmpznz(&ctx, opline, in zend_jit()
2188 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit()
2189 opline->opcode, NULL)) { in zend_jit()
2194 if ((opline->extended_value & ZEND_ISEMPTY)) { in zend_jit()
2198 if ((opline->result_type & IS_TMP_VAR) in zend_jit()
2200 && ((opline+1)->opcode == ZEND_JMPZ in zend_jit()
2201 || (opline+1)->opcode == ZEND_JMPNZ) in zend_jit()
2202 && (opline+1)->op1_type == IS_TMP_VAR in zend_jit()
2203 && (opline+1)->op1.var == opline->result.var) { in zend_jit()
2205 smart_branch_opcode = (opline+1)->opcode; in zend_jit()
2212 if (!zend_jit_isset_isempty_cv(&ctx, opline, in zend_jit()
2220 if (opline->op1_type == IS_VAR || opline->op1_type == IS_TMP_VAR) { in zend_jit()
2227 if ((opline->result_type & IS_TMP_VAR) in zend_jit()
2229 && ((opline+1)->opcode == ZEND_JMPZ in zend_jit()
2230 || (opline+1)->opcode == ZEND_JMPNZ) in zend_jit()
2231 && (opline+1)->op1_type == IS_TMP_VAR in zend_jit()
2232 && (opline+1)->op1.var == opline->result.var) { in zend_jit()
2234 smart_branch_opcode = (opline+1)->opcode; in zend_jit()
2241 if (!zend_jit_in_array(&ctx, opline, in zend_jit()
2254 if (!zend_jit_fetch_dim_read(&ctx, opline, ssa, ssa_op, in zend_jit()
2268 if (opline->op1_type != IS_CV) { in zend_jit()
2271 if (!zend_jit_fetch_dim(&ctx, opline, in zend_jit()
2273 OP2_INFO(), (opline->op2_type != IS_UNUSED) ? OP2_REG_ADDR() : 0, in zend_jit()
2274 (opline->op2_type != IS_UNUSED) ? OP2_RANGE() : 0, in zend_jit()
2280 if ((opline->extended_value & ZEND_ISEMPTY)) { in zend_jit()
2287 if ((opline->result_type & IS_TMP_VAR) in zend_jit()
2289 && ((opline+1)->opcode == ZEND_JMPZ in zend_jit()
2290 || (opline+1)->opcode == ZEND_JMPNZ) in zend_jit()
2291 && (opline+1)->op1_type == IS_TMP_VAR in zend_jit()
2292 && (opline+1)->op1.var == opline->result.var) { in zend_jit()
2294 smart_branch_opcode = (opline+1)->opcode; in zend_jit()
2301 if (!zend_jit_isset_isempty_dim(&ctx, opline, in zend_jit()
2304 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit()
2313 if (opline->op2_type != IS_CONST in zend_jit()
2314 || Z_TYPE_P(RT_CONSTANT(opline, opline->op2)) != IS_STRING in zend_jit()
2315 || Z_STRVAL_P(RT_CONSTANT(opline, opline->op2))[0] == '\0') { in zend_jit()
2321 if (opline->op1_type == IS_UNUSED) { in zend_jit()
2337 zend_ssa_op *ssa_op = &ssa->ops[opline - op_array->opcodes]; in zend_jit()
2347 if (!zend_jit_fetch_obj(&ctx, opline, op_array, ssa, ssa_op, in zend_jit()
2350 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit()
2360 if (!zend_jit_bind_global(&ctx, opline, op1_info)) { in zend_jit()
2365 if (!zend_jit_recv(&ctx, opline, op_array)) { in zend_jit()
2370 if (!zend_jit_recv_init(&ctx, opline, op_array, in zend_jit()
2371 (opline + 1)->opcode != ZEND_RECV_INIT, in zend_jit()
2372 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit()
2378 if (!zend_jit_free(&ctx, opline, OP1_INFO(), in zend_jit()
2379 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit()
2388 if (!zend_jit_echo(&ctx, opline, op1_info)) { in zend_jit()
2397 if (!zend_jit_strlen(&ctx, opline, op1_info, OP1_REG_ADDR(), RES_REG_ADDR())) { in zend_jit()
2406 …if (!zend_jit_count(&ctx, opline, op1_info, OP1_REG_ADDR(), RES_REG_ADDR(), zend_may_throw(opline,… in zend_jit()
2411 if (!zend_jit_fetch_this(&ctx, opline, op_array, 0)) { in zend_jit()
2418 if (!zend_jit_switch(&ctx, opline, op_array, ssa, NULL, NULL)) { in zend_jit()
2423 if (opline->op1_type == IS_UNUSED) { in zend_jit()
2427 if (opline->op1_type == IS_CONST) { in zend_jit()
2439 if (!zend_jit_verify_return_type(&ctx, opline, op_array, OP1_INFO())) { in zend_jit()
2448 if (!zend_jit_fe_reset(&ctx, opline, op1_info)) { in zend_jit()
2457 if (!zend_jit_fe_fetch(&ctx, opline, op1_info, OP2_INFO(), in zend_jit()
2458 ssa->cfg.blocks[b].successors[0], opline->opcode, NULL)) { in zend_jit()
2463 if (!zend_jit_fetch_constant(&ctx, opline, op_array, ssa, ssa_op, RES_REG_ADDR())) { in zend_jit()
2468 if (opline->op2_type != IS_CONST in zend_jit()
2469 || Z_TYPE_P(RT_CONSTANT(opline, opline->op2)) != IS_STRING) { in zend_jit()
2475 if (opline->op1_type == IS_UNUSED) { in zend_jit()
2491 zend_ssa_op *ssa_op = &ssa->ops[opline - op_array->opcodes]; in zend_jit()
2501 if (!zend_jit_init_method_call(&ctx, opline, b, op_array, ssa, ssa_op, call_level, in zend_jit()
2516 if (!zend_jit_rope(&ctx, opline, op2_info)) { in zend_jit()
2525 switch (opline->opcode) { in zend_jit()
2528 if (opline == op_array->opcodes || in zend_jit()
2529 opline->opcode != op_array->opcodes[i-1].opcode) { in zend_jit()
2531 if (!zend_jit_handler(&ctx, opline, in zend_jit()
2532 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit()
2536 zend_jit_set_last_valid_opline(&ctx, opline+1); in zend_jit()
2546 if (!zend_jit_tail_handler(&ctx, opline)) { in zend_jit()
2552 const zend_op *target = OP_JMP_ADDR(opline, opline->op1); in zend_jit()
2572 if (!zend_jit_tail_handler(&ctx, opline)) { in zend_jit()
2584 if (!zend_jit_call(&ctx, opline, b + 1)) { in zend_jit()
2590 if (opline > op_array->opcodes + ssa->cfg.blocks[b].start && in zend_jit()
2591 ((opline-1)->result_type & (IS_SMART_BRANCH_JMPZ|IS_SMART_BRANCH_JMPNZ)) != 0) { in zend_jit()
2593 if (!zend_jit_cond_jmp(&ctx, opline + 1, ssa->cfg.blocks[b].successors[0])) { in zend_jit()
2610 if (!zend_jit_handler(&ctx, opline, in zend_jit()
2611 zend_may_throw(opline, ssa_op, op_array, ssa)) || in zend_jit()
2612 !zend_jit_cond_jmp(&ctx, opline + 1, ssa->cfg.blocks[b].successors[0])) { in zend_jit()
2617 if (!zend_jit_jmp_frameless(&ctx, opline, /* exit_addr */ NULL, /* guard */ 0)) { in zend_jit()
2622 if (!zend_jit_handler(&ctx, opline, 1)) { in zend_jit()
2625 if (opline->extended_value == 0 && (opline+1)->opcode == ZEND_DO_FCALL) { in zend_jit()
2630 … zend_ssa_var_info *res_ssa = &ssa->var_info[ssa->ops[opline - op_array->opcodes].result_def]; in zend_jit()
2636 if (opline->op1_type == IS_CONST) { in zend_jit()
2637 zval *zv = RT_CONSTANT(opline, opline->op1); in zend_jit()
2648 const zend_op *next_opline = opline + 1; in zend_jit()
2659 jit_frameless_icall0(jit, opline); in zend_jit()
2663 jit_frameless_icall1(jit, opline, op1_info); in zend_jit()
2668 jit_frameless_icall2(jit, opline, op1_info, op2_info); in zend_jit()
2673 jit_frameless_icall3(jit, opline, op1_info, op2_info, OP1_DATA_INFO()); in zend_jit()
2676 if (!zend_jit_handler(&ctx, opline, in zend_jit()
2677 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit()
2681 && (opline->result_type & (IS_SMART_BRANCH_JMPZ|IS_SMART_BRANCH_JMPNZ)) != 0) { in zend_jit()
2683 if (!zend_jit_set_cond(&ctx, opline + 2, opline->result.var)) { in zend_jit()
2689 switch (opline->opcode) { in zend_jit()
2880 zend_op *opline = op_array->opcodes; in zend_runtime_jit() local
2894 while (opline->opcode == ZEND_RECV || opline->opcode == ZEND_RECV_INIT) { in zend_runtime_jit()
2895 opline++; in zend_runtime_jit()
2899 opline->handler = jit_extension->orig_handler; in zend_runtime_jit()
2922 zend_op *opline; in zend_jit_check_funcs() local
2933 opline = op_array->opcodes; in zend_jit_check_funcs()
2935 while (opline->opcode == ZEND_RECV || opline->opcode == ZEND_RECV_INIT) { in zend_jit_check_funcs()
2936 opline++; in zend_jit_check_funcs()
2939 if (opline->handler == zend_jit_profile_jit_handler) { in zend_jit_check_funcs()
2946 opline->handler = jit_extension->orig_handler; in zend_jit_check_funcs()
2954 void ZEND_FASTCALL zend_jit_hot_func(zend_execute_data *execute_data, const zend_op *opline) in zend_jit_hot_func() argument
2974 zend_real_jit_func(op_array, NULL, opline, ZEND_JIT_ON_HOT_COUNTERS); in zend_jit_hot_func()
2994 zend_op *opline = op_array->opcodes; in zend_jit_setup_hot_counters_ex() local
2997 while (opline->opcode == ZEND_RECV || opline->opcode == ZEND_RECV_INIT) { in zend_jit_setup_hot_counters_ex()
2998 opline++; in zend_jit_setup_hot_counters_ex()
3002 opline->handler = (const void*)zend_jit_func_hot_counter_handler; in zend_jit_setup_hot_counters_ex()
3081 zend_op *opline = op_array->opcodes; in zend_jit_op_array() local
3092 while (opline->opcode == ZEND_RECV || opline->opcode == ZEND_RECV_INIT) { in zend_jit_op_array()
3093 opline++; in zend_jit_op_array()
3103 jit_extension->orig_handler = (void*)opline->handler; in zend_jit_op_array()
3105 opline->handler = (const void*)zend_jit_runtime_jit_handler; in zend_jit_op_array()
3111 zend_op *opline = op_array->opcodes; in zend_jit_op_array() local
3122 while (opline->opcode == ZEND_RECV || opline->opcode == ZEND_RECV_INIT) { in zend_jit_op_array()
3123 opline++; in zend_jit_op_array()
3133 jit_extension->orig_handler = (void*)opline->handler; in zend_jit_op_array()
3135 opline->handler = (const void*)zend_jit_profile_jit_handler; in zend_jit_op_array()
3688 zend_op *opline = op_array->opcodes; in zend_jit_restart_preloaded_op_array()
3693 while (opline->opcode == ZEND_RECV || opline->opcode == ZEND_RECV_INIT) { in zend_jit_restart_preloaded_op_array()
3694 opline++; in zend_jit_restart_preloaded_op_array()
3698 opline->handler = (const void*)zend_jit_runtime_jit_handler; in zend_jit_restart_preloaded_op_array()
3700 opline->handler = (const void*)zend_jit_profile_jit_handler; in zend_jit_restart_preloaded_op_array()