Lines Matching refs:ssa_op
424 CHECK_OP_TRACE_TYPE(opline->op1.var, ssa_op->op1_use, op1_info, op1_type)
426 CHECK_OP_TRACE_TYPE(opline->op2.var, ssa_op->op2_use, op2_info, op2_type)
428 CHECK_OP_TRACE_TYPE((opline+1)->op1.var, (ssa_op+1)->op1_use, op1_data_info, op3_type)
1101 static int find_return_ssa_var(zend_jit_trace_rec *p, zend_ssa_op *ssa_op) in find_return_ssa_var() argument
1109 return ssa_op->result_def; in find_return_ssa_var()
2860 const zend_ssa_op *ssa_op; in zend_jit_trace_allocate_registers() local
2945 ssa_op = ssa->ops; in zend_jit_trace_allocate_registers()
2954 zend_jit_opline_supports_reg(op_array, ssa, opline, ssa_op, p); in zend_jit_trace_allocate_registers()
2959 && ssa_op->op1_def >= 0 in zend_jit_trace_allocate_registers()
2960 && ssa->vars[ssa_op->op1_def].alias != NO_ALIAS) { in zend_jit_trace_allocate_registers()
2965 if (ssa_op->op1_use >= 0 in zend_jit_trace_allocate_registers()
2966 && RA_HAS_IVAL(ssa_op->op1_use)) { in zend_jit_trace_allocate_registers()
2968 RA_IVAL_DEL(ssa_op->op1_use); in zend_jit_trace_allocate_registers()
2970 } else if (!zend_ssa_is_no_val_use(opline, ssa_op, ssa_op->op1_use)) { in zend_jit_trace_allocate_registers()
2971 zend_jit_trace_use_var(idx, ssa_op->op1_use, ssa_op->op1_def, ssa_op->op1_use_chain, in zend_jit_trace_allocate_registers()
2989 RA_IVAL_FLAGS(ssa_op->op1_use) |= ZREG_STORE; in zend_jit_trace_allocate_registers()
2991 RA_IVAL_FLAGS(ssa_op->op1_use) |= ZREG_LAST_USE; in zend_jit_trace_allocate_registers()
2996 if (ssa_op->op2_use >= 0 in zend_jit_trace_allocate_registers()
2997 && ssa_op->op2_use != ssa_op->op1_use in zend_jit_trace_allocate_registers()
2998 && RA_HAS_IVAL(ssa_op->op2_use)) { in zend_jit_trace_allocate_registers()
3000 RA_IVAL_DEL(ssa_op->op2_use); in zend_jit_trace_allocate_registers()
3002 } else if (!zend_ssa_is_no_val_use(opline, ssa_op, ssa_op->op2_use)) { in zend_jit_trace_allocate_registers()
3003 zend_jit_trace_use_var(idx, ssa_op->op2_use, ssa_op->op2_def, ssa_op->op2_use_chain, in zend_jit_trace_allocate_registers()
3007 RA_IVAL_FLAGS(ssa_op->op2_use) |= ZREG_LAST_USE; in zend_jit_trace_allocate_registers()
3011 if (ssa_op->result_use >= 0 in zend_jit_trace_allocate_registers()
3012 && ssa_op->result_use != ssa_op->op1_use in zend_jit_trace_allocate_registers()
3013 && ssa_op->result_use != ssa_op->op2_use in zend_jit_trace_allocate_registers()
3014 && RA_HAS_IVAL(ssa_op->result_use)) { in zend_jit_trace_allocate_registers()
3016 RA_IVAL_DEL(ssa_op->result_use); in zend_jit_trace_allocate_registers()
3018 } else if (!zend_ssa_is_no_val_use(opline, ssa_op, ssa_op->result_use)) { in zend_jit_trace_allocate_registers()
3019 zend_jit_trace_use_var(idx, ssa_op->result_use, ssa_op->result_def, ssa_op->res_use_chain, in zend_jit_trace_allocate_registers()
3025 if (ssa_op->op1_def >= 0) { in zend_jit_trace_allocate_registers()
3027 SET_STACK_VAR(stack, EX_VAR_TO_NUM(opline->op1.var), ssa_op->op1_def); in zend_jit_trace_allocate_registers()
3029 if (ssa_op->op2_def >= 0) { in zend_jit_trace_allocate_registers()
3031 SET_STACK_VAR(stack, EX_VAR_TO_NUM(opline->op2.var), ssa_op->op2_def); in zend_jit_trace_allocate_registers()
3033 if (ssa_op->result_def >= 0) { in zend_jit_trace_allocate_registers()
3035 SET_STACK_VAR(stack, EX_VAR_TO_NUM(opline->result.var), ssa_op->result_def); in zend_jit_trace_allocate_registers()
3039 if (ssa_op->result_def >= 0 in zend_jit_trace_allocate_registers()
3040 && (ssa->vars[ssa_op->result_def].use_chain >= 0 in zend_jit_trace_allocate_registers()
3041 || ssa->vars[ssa_op->result_def].phi_use_chain) in zend_jit_trace_allocate_registers()
3042 && ssa->vars[ssa_op->result_def].alias == NO_ALIAS in zend_jit_trace_allocate_registers()
3043 && zend_jit_var_supports_reg(ssa, ssa_op->result_def)) { in zend_jit_trace_allocate_registers()
3044 if (!(ssa->var_info[ssa_op->result_def].type & MAY_BE_GUARD) in zend_jit_trace_allocate_registers()
3055 if (!(ssa->var_info[ssa_op->result_def].type & MAY_BE_DOUBLE) in zend_jit_trace_allocate_registers()
3057 vars_op_array[ssa_op->result_def] = op_array; in zend_jit_trace_allocate_registers()
3058 RA_IVAL_START(ssa_op->result_def, idx); in zend_jit_trace_allocate_registers()
3063 if (ssa_op->op1_def >= 0 in zend_jit_trace_allocate_registers()
3064 && (ssa->vars[ssa_op->op1_def].use_chain >= 0 in zend_jit_trace_allocate_registers()
3065 || ssa->vars[ssa_op->op1_def].phi_use_chain) in zend_jit_trace_allocate_registers()
3066 && ssa->vars[ssa_op->op1_def].alias == NO_ALIAS in zend_jit_trace_allocate_registers()
3067 && zend_jit_var_supports_reg(ssa, ssa_op->op1_def) in zend_jit_trace_allocate_registers()
3068 && (!(ssa->var_info[ssa_op->op1_def].type & MAY_BE_GUARD) in zend_jit_trace_allocate_registers()
3073 vars_op_array[ssa_op->op1_def] = op_array; in zend_jit_trace_allocate_registers()
3074 RA_IVAL_START(ssa_op->op1_def, idx); in zend_jit_trace_allocate_registers()
3077 if (ssa_op->op2_def >= 0 in zend_jit_trace_allocate_registers()
3078 && (ssa->vars[ssa_op->op2_def].use_chain >= 0 in zend_jit_trace_allocate_registers()
3079 || ssa->vars[ssa_op->op2_def].phi_use_chain) in zend_jit_trace_allocate_registers()
3080 && ssa->vars[ssa_op->op2_def].alias == NO_ALIAS in zend_jit_trace_allocate_registers()
3081 && zend_jit_var_supports_reg(ssa, ssa_op->op2_def) in zend_jit_trace_allocate_registers()
3082 && !(ssa->var_info[ssa_op->op2_def].type & MAY_BE_GUARD)) { in zend_jit_trace_allocate_registers()
3083 vars_op_array[ssa_op->op2_def] = op_array; in zend_jit_trace_allocate_registers()
3084 RA_IVAL_START(ssa_op->op2_def, idx); in zend_jit_trace_allocate_registers()
3101 ssa_op++; in zend_jit_trace_allocate_registers()
3103 if (ssa_op->op1_use >= 0 in zend_jit_trace_allocate_registers()
3104 && RA_HAS_IVAL(ssa_op->op1_use) in zend_jit_trace_allocate_registers()
3105 && !zend_ssa_is_no_val_use(opline, ssa_op, ssa_op->op1_use)) { in zend_jit_trace_allocate_registers()
3107 zend_jit_trace_use_var(idx, ssa_op->op1_use, ssa_op->op1_def, ssa_op->op1_use_chain, in zend_jit_trace_allocate_registers()
3111 RA_IVAL_FLAGS(ssa_op->op1_use) |= ZREG_LAST_USE; in zend_jit_trace_allocate_registers()
3114 RA_IVAL_DEL(ssa_op->op1_use); in zend_jit_trace_allocate_registers()
3118 if (ssa_op->op1_def >= 0) { in zend_jit_trace_allocate_registers()
3120 SET_STACK_VAR(stack, EX_VAR_TO_NUM(opline->op1.var), ssa_op->op1_def); in zend_jit_trace_allocate_registers()
3122 && (ssa->vars[ssa_op->op1_def].use_chain >= 0 in zend_jit_trace_allocate_registers()
3123 || ssa->vars[ssa_op->op1_def].phi_use_chain) in zend_jit_trace_allocate_registers()
3124 && ssa->vars[ssa_op->op1_def].alias == NO_ALIAS in zend_jit_trace_allocate_registers()
3125 && zend_jit_var_supports_reg(ssa, ssa_op->op1_def) in zend_jit_trace_allocate_registers()
3126 && !(ssa->var_info[ssa_op->op1_def].type & MAY_BE_GUARD)) { in zend_jit_trace_allocate_registers()
3127 vars_op_array[ssa_op->op1_def] = op_array; in zend_jit_trace_allocate_registers()
3128 RA_IVAL_START(ssa_op->op1_def, idx); in zend_jit_trace_allocate_registers()
3132 ssa_op++; in zend_jit_trace_allocate_registers()
3137 ssa_op++; in zend_jit_trace_allocate_registers()
3142 if (ssa_op->result_use >= 0 && RA_HAS_IVAL(ssa_op->result_use)) { in zend_jit_trace_allocate_registers()
3143 RA_IVAL_DEL(ssa_op->result_use); in zend_jit_trace_allocate_registers()
3146 if (ssa_op->result_def >= 0) { in zend_jit_trace_allocate_registers()
3148 SET_STACK_VAR(stack, EX_VAR_TO_NUM(opline->result.var), ssa_op->result_def); in zend_jit_trace_allocate_registers()
3150 ssa_op++; in zend_jit_trace_allocate_registers()
3156 ssa_op++; in zend_jit_trace_allocate_registers()
3161 if (ssa_op->op1_def >= 0) { in zend_jit_trace_allocate_registers()
3163 SET_STACK_VAR(stack, EX_VAR_TO_NUM(opline->op1.var), ssa_op->op1_def); in zend_jit_trace_allocate_registers()
3165 ssa_op++; in zend_jit_trace_allocate_registers()
3171 ssa_op += len; in zend_jit_trace_allocate_registers()
3382 …, zend_jit_trace_stack *stack, const zend_op *opline, const zend_ssa_op *ssa_op, const zend_ssa *s… in zend_jit_trace_cleanup_stack() argument
3384 if (ssa_op->op1_use >= 0 in zend_jit_trace_cleanup_stack()
3385 && jit->ra[ssa_op->op1_use].ref in zend_jit_trace_cleanup_stack()
3386 && (jit->ra[ssa_op->op1_use].flags & ZREG_LAST_USE) in zend_jit_trace_cleanup_stack()
3387 && (ssa_op->op1_use_chain == -1 in zend_jit_trace_cleanup_stack()
3388 …|| zend_ssa_is_no_val_use(ssa_opcodes[ssa_op->op1_use_chain], ssa->ops + ssa_op->op1_use_chain, ss… in zend_jit_trace_cleanup_stack()
3391 if (ssa_op->op2_use >= 0 in zend_jit_trace_cleanup_stack()
3392 && ssa_op->op2_use != ssa_op->op1_use in zend_jit_trace_cleanup_stack()
3393 && jit->ra[ssa_op->op2_use].ref in zend_jit_trace_cleanup_stack()
3394 && (jit->ra[ssa_op->op2_use].flags & ZREG_LAST_USE) in zend_jit_trace_cleanup_stack()
3395 && (ssa_op->op2_use_chain == -1 in zend_jit_trace_cleanup_stack()
3396 …|| zend_ssa_is_no_val_use(ssa_opcodes[ssa_op->op2_use_chain], ssa->ops + ssa_op->op2_use_chain, ss… in zend_jit_trace_cleanup_stack()
3399 if (ssa_op->result_use >= 0 in zend_jit_trace_cleanup_stack()
3400 && ssa_op->result_use != ssa_op->op1_use in zend_jit_trace_cleanup_stack()
3401 && ssa_op->result_use != ssa_op->op2_use in zend_jit_trace_cleanup_stack()
3402 && jit->ra[ssa_op->result_use].ref in zend_jit_trace_cleanup_stack()
3403 && (jit->ra[ssa_op->result_use].flags & ZREG_LAST_USE) in zend_jit_trace_cleanup_stack()
3404 && (ssa_op->res_use_chain == -1 in zend_jit_trace_cleanup_stack()
3405 …|| zend_ssa_is_no_val_use(ssa_opcodes[ssa_op->res_use_chain], ssa->ops + ssa_op->res_use_chain, ss… in zend_jit_trace_cleanup_stack()
3426 …nst zend_op_array *op_array, zend_ssa *ssa, const zend_op **ssa_opcodes, const zend_ssa_op *ssa_op) in zend_jit_may_delay_fetch_this() argument
3428 int var = ssa_op->result_def; in zend_jit_may_delay_fetch_this()
3697 static void zend_jit_trace_update_condition_ranges(const zend_op *opline, const zend_ssa_op *ssa_op… in zend_jit_trace_update_condition_ranges() argument
3719 if (ssa_op->op1_use >= 0) { in zend_jit_trace_update_condition_ranges()
3721 &ssa->var_info[ssa_op->op1_use], in zend_jit_trace_update_condition_ranges()
3725 if (ssa_op->op2_use >= 0) { in zend_jit_trace_update_condition_ranges()
3727 &ssa->var_info[ssa_op->op2_use], in zend_jit_trace_update_condition_ranges()
3736 if (ssa_op->op1_use >= 0) { in zend_jit_trace_update_condition_ranges()
3738 &ssa->var_info[ssa_op->op1_use], in zend_jit_trace_update_condition_ranges()
3742 if (ssa_op->op2_use >= 0) { in zend_jit_trace_update_condition_ranges()
3744 &ssa->var_info[ssa_op->op2_use], in zend_jit_trace_update_condition_ranges()
3753 if (ssa_op->op1_use >= 0) { in zend_jit_trace_update_condition_ranges()
3755 &ssa->var_info[ssa_op->op1_use], in zend_jit_trace_update_condition_ranges()
3759 if (ssa_op->op2_use >= 0) { in zend_jit_trace_update_condition_ranges()
3761 &ssa->var_info[ssa_op->op2_use], in zend_jit_trace_update_condition_ranges()
3767 if (ssa_op->op1_use >= 0) { in zend_jit_trace_update_condition_ranges()
3769 &ssa->var_info[ssa_op->op1_use], in zend_jit_trace_update_condition_ranges()
3773 if (ssa_op->op2_use >= 0) { in zend_jit_trace_update_condition_ranges()
3775 &ssa->var_info[ssa_op->op2_use], in zend_jit_trace_update_condition_ranges()
3784 if (ssa_op->op1_use >= 0) { in zend_jit_trace_update_condition_ranges()
3786 &ssa->var_info[ssa_op->op1_use], in zend_jit_trace_update_condition_ranges()
3790 if (ssa_op->op2_use >= 0) { in zend_jit_trace_update_condition_ranges()
3792 &ssa->var_info[ssa_op->op2_use], in zend_jit_trace_update_condition_ranges()
3798 if (ssa_op->op1_use >= 0) { in zend_jit_trace_update_condition_ranges()
3800 &ssa->var_info[ssa_op->op1_use], in zend_jit_trace_update_condition_ranges()
3804 if (ssa_op->op2_use >= 0) { in zend_jit_trace_update_condition_ranges()
3806 &ssa->var_info[ssa_op->op2_use], in zend_jit_trace_update_condition_ranges()
3815 static bool zend_jit_may_skip_comparison(const zend_op *opline, const zend_ssa_op *ssa_op, const ze… in zend_jit_may_skip_comparison() argument
3822 if (ssa_op->op2_use >= 0) { in zend_jit_may_skip_comparison()
3823 if ((ssa_op-1)->op1_def == ssa_op->op2_use) { in zend_jit_may_skip_comparison()
3824 ssa_op--; in zend_jit_may_skip_comparison()
3825 opline = ssa_opcodes[ssa_op - ssa->ops]; in zend_jit_may_skip_comparison()
3833 } else if ((ssa_op-1)->result_def == ssa_op->op2_use) { in zend_jit_may_skip_comparison()
3834 ssa_op--; in zend_jit_may_skip_comparison()
3835 opline = ssa_opcodes[ssa_op - ssa->ops]; in zend_jit_may_skip_comparison()
3847 if (ssa_op->op1_use >= 0) { in zend_jit_may_skip_comparison()
3848 if ((ssa_op-1)->op1_def == ssa_op->op1_use) { in zend_jit_may_skip_comparison()
3849 ssa_op--; in zend_jit_may_skip_comparison()
3850 opline = ssa_opcodes[ssa_op - ssa->ops]; in zend_jit_may_skip_comparison()
3858 } else if ((ssa_op-1)->result_def == ssa_op->op1_use) { in zend_jit_may_skip_comparison()
3859 ssa_op--; in zend_jit_may_skip_comparison()
3860 opline = ssa_opcodes[ssa_op - ssa->ops]; in zend_jit_may_skip_comparison()
3870 const zend_ssa_op *prev_ssa_op = ssa_op - 1; in zend_jit_may_skip_comparison()
3881 if (ssa_op->op1_use == prev_ssa_op->op1_use in zend_jit_may_skip_comparison()
3882 && ssa_op->op2_use == prev_ssa_op->op2_use) { in zend_jit_may_skip_comparison()
3891 if (ssa_op->op1_use < 0) { in zend_jit_may_skip_comparison()
3896 if (ssa_op->op2_use < 0) { in zend_jit_may_skip_comparison()
3945 const zend_ssa_op *ssa_op; in zend_jit_find_ssa_var() local
3950 ssa_op = ssa->ops + opline_num; in zend_jit_find_ssa_var()
3951 ssa_var = ssa_op->result_def; in zend_jit_find_ssa_var()
3955 ssa_var = ssa_op->op2_def; in zend_jit_find_ssa_var()
3959 ssa_var = ssa_op->op1_def; in zend_jit_find_ssa_var()
3997 ssa_op = ssa->ops + opline_num; in zend_jit_find_ssa_var()
3998 ssa_var = ssa_op->result_def; in zend_jit_find_ssa_var()
4002 ssa_var = ssa_op->op2_def; in zend_jit_find_ssa_var()
4006 ssa_var = ssa_op->op1_def; in zend_jit_find_ssa_var()
4058 const zend_ssa_op *ssa_op, in zend_jit_trace_may_throw() argument
4081 return zend_may_throw_ex(opline, ssa_op, op_array, ssa, t1, t2); in zend_jit_trace_may_throw()
4120 const zend_ssa_op *ssa_op, *orig_ssa_op; in zend_jit_trace() local
4382 ssa_op = (JIT_G(opt_level) >= ZEND_JIT_LEVEL_INLINE) ? ssa->ops : NULL; in zend_jit_trace()
4475 … (op1_def_info & (MAY_BE_DOUBLE|MAY_BE_GUARD)) && zend_may_overflow(opline, ssa_op, op_array, ssa), in zend_jit_trace()
4476 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
4481 ssa->var_info[ssa_op->op1_def].type &= ~MAY_BE_GUARD; in zend_jit_trace()
4483 ssa->var_info[ssa_op->result_def].type &= ~MAY_BE_GUARD; in zend_jit_trace()
4487 ssa->var_info[ssa_op->op1_def].type &= ~MAY_BE_GUARD; in zend_jit_trace()
4489 ssa->var_info[ssa_op->result_def].type &= ~MAY_BE_GUARD; in zend_jit_trace()
4495 ssa->var_info[ssa_op->result_def].type &= ~MAY_BE_GUARD; in zend_jit_trace()
4499 ssa->var_info[ssa_op->result_def].type &= ~MAY_BE_GUARD; in zend_jit_trace()
4537 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
4565 !ssa->var_info[ssa_op->op1_use].guarded_reference, 1)) { in zend_jit_trace()
4568 if (ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) { in zend_jit_trace()
4569 ssa->var_info[ssa_op->op1_use].guarded_reference = 1; in zend_jit_trace()
4579 !ssa->var_info[ssa_op->op2_use].guarded_reference, 1)) { in zend_jit_trace()
4582 if (ssa->vars[ssa_op->op2_use].alias == NO_ALIAS) { in zend_jit_trace()
4583 ssa->var_info[ssa_op->op2_use].guarded_reference = 1; in zend_jit_trace()
4612 …) && (res_info & (MAY_BE_DOUBLE|MAY_BE_GUARD)) && zend_may_overflow(opline, ssa_op, op_array, ssa); in zend_jit_trace()
4622 zend_jit_trace_cleanup_stack(&ctx, stack, opline, ssa_op, ssa, ssa_opcodes); in zend_jit_trace()
4629 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
4638 ssa->var_info[ssa_op->result_def].type &= ~MAY_BE_GUARD; in zend_jit_trace()
4665 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
4699 … (op1_def_info & (MAY_BE_DOUBLE|MAY_BE_GUARD)) && zend_may_overflow(opline, ssa_op, op_array, ssa), in zend_jit_trace()
4700 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
4706 ssa->var_info[ssa_op->op1_def].type &= ~MAY_BE_GUARD; in zend_jit_trace()
4708 ssa->var_info[ssa_op->result_def].type &= ~MAY_BE_GUARD; in zend_jit_trace()
4734 &op1_info, &op1_addr, !ssa->var_info[ssa_op->op1_use].indirect_reference)) { in zend_jit_trace()
4742 !ssa->var_info[ssa_op->op1_use].guarded_reference, 1)) { in zend_jit_trace()
4746 && ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) { in zend_jit_trace()
4747 ssa->var_info[ssa_op->op1_def].guarded_reference = 1; in zend_jit_trace()
4762 zend_jit_trace_may_throw(opline, ssa_op, op_array, ssa, in zend_jit_trace()
4793 if (ssa_op->op1_use >= 0) { in zend_jit_trace()
4794 delayed_fetch_this = ssa->var_info[ssa_op->op1_use].delayed_fetch_this; in zend_jit_trace()
4806 &op1_info, &op1_addr, !ssa->var_info[ssa_op->op1_use].indirect_reference)) { in zend_jit_trace()
4814 !ssa->var_info[ssa_op->op1_use].guarded_reference, 1)) { in zend_jit_trace()
4818 && ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) { in zend_jit_trace()
4819 ssa->var_info[ssa_op->op1_def].guarded_reference = 1; in zend_jit_trace()
4828 if (ssa_op->op1_use >= 0) { in zend_jit_trace()
4829 zend_ssa_var_info *op1_ssa = ssa->var_info + ssa_op->op1_use; in zend_jit_trace()
4838 } else if (ssa_op->op1_use >= 0 && ssa->vars[ssa_op->op1_use].definition >= 0) { in zend_jit_trace()
4839 on_this = ssa_opcodes[ssa->vars[ssa_op->op1_use].definition]->opcode == ZEND_FETCH_THIS; in zend_jit_trace()
4847 if (!zend_jit_incdec_obj(&ctx, opline, op_array, ssa, ssa_op, in zend_jit_trace()
4887 if (ssa_op->op1_use >= 0) { in zend_jit_trace()
4888 delayed_fetch_this = ssa->var_info[ssa_op->op1_use].delayed_fetch_this; in zend_jit_trace()
4900 &op1_info, &op1_addr, !ssa->var_info[ssa_op->op1_use].indirect_reference)) { in zend_jit_trace()
4908 !ssa->var_info[ssa_op->op1_use].guarded_reference, 1)) { in zend_jit_trace()
4912 && ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) { in zend_jit_trace()
4913 ssa->var_info[ssa_op->op1_def].guarded_reference = 1; in zend_jit_trace()
4922 if (ssa_op->op1_use >= 0) { in zend_jit_trace()
4923 zend_ssa_var_info *op1_ssa = ssa->var_info + ssa_op->op1_use; in zend_jit_trace()
4932 } else if (ssa_op->op1_use >= 0 && ssa->vars[ssa_op->op1_use].definition >= 0) { in zend_jit_trace()
4933 on_this = ssa_opcodes[ssa->vars[ssa_op->op1_use].definition]->opcode == ZEND_FETCH_THIS; in zend_jit_trace()
4943 if (!zend_jit_assign_obj_op(&ctx, opline, op_array, ssa, ssa_op, in zend_jit_trace()
4970 if (ssa_op->op1_use >= 0) { in zend_jit_trace()
4971 delayed_fetch_this = ssa->var_info[ssa_op->op1_use].delayed_fetch_this; in zend_jit_trace()
4983 &op1_info, &op1_addr, !ssa->var_info[ssa_op->op1_use].indirect_reference)) { in zend_jit_trace()
4991 !ssa->var_info[ssa_op->op1_use].guarded_reference, 1)) { in zend_jit_trace()
4995 && ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) { in zend_jit_trace()
4996 ssa->var_info[ssa_op->op1_def].guarded_reference = 1; in zend_jit_trace()
5005 if (ssa_op->op1_use >= 0) { in zend_jit_trace()
5006 zend_ssa_var_info *op1_ssa = ssa->var_info + ssa_op->op1_use; in zend_jit_trace()
5015 } else if (ssa_op->op1_use >= 0 && ssa->vars[ssa_op->op1_use].definition >= 0) { in zend_jit_trace()
5016 on_this = ssa_opcodes[ssa->vars[ssa_op->op1_use].definition]->opcode == ZEND_FETCH_THIS; in zend_jit_trace()
5026 if (!zend_jit_assign_obj(&ctx, opline, op_array, ssa, ssa_op, in zend_jit_trace()
5031 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
5035 && (ssa_op+1)->op1_def >= 0 in zend_jit_trace()
5036 && ssa->vars[(ssa_op+1)->op1_def].alias == NO_ALIAS) { in zend_jit_trace()
5037 …ssa->var_info[(ssa_op+1)->op1_def].guarded_reference = ssa->var_info[(ssa_op+1)->op1_use].guarded_… in zend_jit_trace()
5055 &op1_info, &op1_addr, !ssa->var_info[ssa_op->op1_use].indirect_reference)) { in zend_jit_trace()
5063 !ssa->var_info[ssa_op->op1_use].guarded_reference, 1)) { in zend_jit_trace()
5067 && ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) { in zend_jit_trace()
5068 ssa->var_info[ssa_op->op1_def].guarded_reference = 1; in zend_jit_trace()
5082 (ctx.ra && (ssa_op+1)->op1_def >= 0) ? OP1_DATA_DEF_REG_ADDR() : 0, in zend_jit_trace()
5085 zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info))) { in zend_jit_trace()
5089 && (ssa_op+1)->op1_def >= 0 in zend_jit_trace()
5090 && ssa->vars[(ssa_op+1)->op1_def].alias == NO_ALIAS) { in zend_jit_trace()
5091 …ssa->var_info[(ssa_op+1)->op1_def].guarded_reference = ssa->var_info[(ssa_op+1)->op1_use].guarded_… in zend_jit_trace()
5105 … if (ssa_op->op2_def < 0 || (Z_MODE(op2_addr) == IS_REG && ssa->vars[ssa_op->op2_def].no_val)) { in zend_jit_trace()
5135 !ssa->var_info[ssa_op->op1_use].guarded_reference)) { in zend_jit_trace()
5140 && ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) { in zend_jit_trace()
5141 ssa->var_info[ssa_op->op1_def].guarded_reference = 1; in zend_jit_trace()
5187 zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info))) { in zend_jit_trace()
5190 if (ssa_op->op2_def >= 0 in zend_jit_trace()
5192 && ssa->vars[ssa_op->op2_def].no_val) { in zend_jit_trace()
5197 && ssa->vars[ssa_op->op2_def].use_chain < 0 in zend_jit_trace()
5198 && !ssa->vars[ssa_op->op2_def].phi_use_chain) { in zend_jit_trace()
5206 && ssa_op->op2_def >= 0 in zend_jit_trace()
5207 && ssa->vars[ssa_op->op2_def].alias == NO_ALIAS) { in zend_jit_trace()
5208 …ssa->var_info[ssa_op->op2_def].guarded_reference = ssa->var_info[ssa_op->op2_use].guarded_referenc… in zend_jit_trace()
5218 … if (ssa_op->op1_def < 0 || (Z_MODE(op1_addr) == IS_REG && ssa->vars[ssa_op->op1_def].no_val)) { in zend_jit_trace()
5243 if (ssa_op->op1_def >= 0 in zend_jit_trace()
5245 && ssa->vars[ssa_op->op1_def].no_val) { in zend_jit_trace()
5250 && ssa->vars[ssa_op->op1_def].use_chain < 0 in zend_jit_trace()
5251 && !ssa->vars[ssa_op->op1_def].phi_use_chain) { in zend_jit_trace()
5259 && ssa_op->op1_def >= 0 in zend_jit_trace()
5260 && ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) { in zend_jit_trace()
5261 …ssa->var_info[ssa_op->op1_def].guarded_reference = ssa->var_info[ssa_op->op1_use].guarded_referenc… in zend_jit_trace()
5268 …? op_array_ssa->cfg.map[opline - op_array->opcodes] : -1, op_array, ssa, ssa_op, frame->call_level… in zend_jit_trace()
5310 && ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) { in zend_jit_trace()
5311 ssa->var_info[ssa_op->op1_def].guarded_reference = 1; in zend_jit_trace()
5329 … if (ssa_op->op1_def < 0 || (Z_MODE(op1_addr) == IS_REG && ssa->vars[ssa_op->op1_def].no_val)) { in zend_jit_trace()
5340 if (ssa_op->op1_def >= 0 in zend_jit_trace()
5342 && ssa->vars[ssa_op->op1_def].no_val) { in zend_jit_trace()
5347 && ssa->vars[ssa_op->op1_def].use_chain < 0 in zend_jit_trace()
5348 && !ssa->vars[ssa_op->op1_def].phi_use_chain) { in zend_jit_trace()
5356 && ssa_op->op1_def >= 0 in zend_jit_trace()
5357 && ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) { in zend_jit_trace()
5358 …ssa->var_info[ssa_op->op1_def].guarded_reference = ssa->var_info[ssa_op->op1_use].guarded_referenc… in zend_jit_trace()
5415 ssa_op != ssa->ops && in zend_jit_trace()
5418 zend_jit_may_skip_comparison(opline, ssa_op, ssa, ssa_opcodes, op_array); in zend_jit_trace()
5427 zend_jit_trace_cleanup_stack(&ctx, stack, opline, ssa_op, ssa, ssa_opcodes); in zend_jit_trace()
5439 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit_trace()
5443 zend_jit_trace_update_condition_ranges(opline, ssa_op, op_array, ssa, exit_if_true); in zend_jit_trace()
5451 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit_trace()
5463 ssa_op != ssa->ops && in zend_jit_trace()
5466 zend_jit_may_skip_comparison(opline, ssa_op, ssa, ssa_opcodes, op_array); in zend_jit_trace()
5475 zend_jit_trace_cleanup_stack(&ctx, stack, opline, ssa_op, ssa, ssa_opcodes); in zend_jit_trace()
5490 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit_trace()
5494 zend_jit_trace_update_condition_ranges(opline, ssa_op, op_array, ssa, exit_if_true); in zend_jit_trace()
5502 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit_trace()
5540 zend_jit_trace_cleanup_stack(&ctx, stack, opline, ssa_op, ssa, ssa_opcodes); in zend_jit_trace()
5572 …if (!zend_jit_trace_handler(&ctx, op_array, opline, zend_may_throw(opline, ssa_op, op_array, ssa),… in zend_jit_trace()
5641 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit_trace()
5676 zend_jit_trace_cleanup_stack(&ctx, stack, opline, ssa_op, ssa, ssa_opcodes); in zend_jit_trace()
5711 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit_trace()
5753 !ssa->var_info[ssa_op->op1_use].guarded_reference, 1)) { in zend_jit_trace()
5757 && ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) { in zend_jit_trace()
5758 ssa->var_info[ssa_op->op1_use].guarded_reference = 1; in zend_jit_trace()
5829 !ssa->var_info[ssa_op->op1_use].guarded_reference, 1)) { in zend_jit_trace()
5833 && ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) { in zend_jit_trace()
5834 ssa->var_info[ssa_op->op1_use].guarded_reference = 1; in zend_jit_trace()
5835 if (ssa_op->op1_def >= 0) { in zend_jit_trace()
5836 ssa->var_info[ssa_op->op1_def].guarded_reference = 1; in zend_jit_trace()
5846 ssa_op->op1_use >= 0 && in zend_jit_trace()
5847 ssa->var_info[ssa_op->op1_use].avoid_refcounting; in zend_jit_trace()
5849 ssa->var_info[ssa_op->op1_use].type &= ~MAY_BE_PACKED_GUARD; in zend_jit_trace()
5859 … ssa->var_info[ssa_op->op1_use].type &= ~(MAY_BE_ARRAY_NUMERIC_HASH|MAY_BE_ARRAY_STRING_HASH); in zend_jit_trace()
5864 ssa->var_info[ssa_op->op1_use].type &= ~MAY_BE_ARRAY_PACKED; in zend_jit_trace()
5868 if (!zend_jit_fetch_dim_read(&ctx, opline, ssa, ssa_op, in zend_jit_trace()
5874 if (ssa_op->op1_def >= 0 && op1_type != IS_UNKNOWN) { in zend_jit_trace()
5875 ssa->var_info[ssa_op->op1_def].type = ssa->var_info[ssa_op->op1_use].type; in zend_jit_trace()
5893 &op1_info, &op1_addr, !ssa->var_info[ssa_op->op1_use].indirect_reference)) { in zend_jit_trace()
5903 !ssa->var_info[ssa_op->op1_use].guarded_reference, 1)) { in zend_jit_trace()
5907 && ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) { in zend_jit_trace()
5908 ssa->var_info[ssa_op->op1_def].guarded_reference = 1; in zend_jit_trace()
5923 if (ssa_op->result_def >= 0 in zend_jit_trace()
5927 ssa->var_info[ssa_op->result_def].indirect_reference = 1; in zend_jit_trace()
5940 !ssa->var_info[ssa_op->op1_use].guarded_reference, 1)) { in zend_jit_trace()
5944 && ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) { in zend_jit_trace()
5945 ssa->var_info[ssa_op->op1_use].guarded_reference = 1; in zend_jit_trace()
5964 zend_jit_trace_cleanup_stack(&ctx, stack, opline, ssa_op, ssa, ssa_opcodes); in zend_jit_trace()
5966 if (ssa_op->op1_use >= 0 in zend_jit_trace()
5967 && ssa->var_info[ssa_op->op1_use].avoid_refcounting) { in zend_jit_trace()
5990 ssa_op->op1_use >= 0 && in zend_jit_trace()
5991 ssa->var_info[ssa_op->op1_use].avoid_refcounting; in zend_jit_trace()
5993 ssa->var_info[ssa_op->op1_use].type &= ~MAY_BE_PACKED_GUARD; in zend_jit_trace()
6009 zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info), in zend_jit_trace()
6057 &op1_info, &op1_addr, !ssa->var_info[ssa_op->op1_use].indirect_reference)) { in zend_jit_trace()
6065 !ssa->var_info[ssa_op->op1_use].guarded_reference, 1)) { in zend_jit_trace()
6069 && ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) { in zend_jit_trace()
6070 … ssa->var_info[ssa_op->op1_def >= 0 ? ssa_op->op1_def : ssa_op->op1_use].guarded_reference = 1; in zend_jit_trace()
6079 if (ssa_op->op1_use >= 0) { in zend_jit_trace()
6080 zend_ssa_var_info *op1_ssa = ssa->var_info + ssa_op->op1_use; in zend_jit_trace()
6087 if (ssa_op->op1_use >= 0) { in zend_jit_trace()
6088 delayed_fetch_this = ssa->var_info[ssa_op->op1_use].delayed_fetch_this; in zend_jit_trace()
6089 avoid_refcounting = ssa->var_info[ssa_op->op1_use].avoid_refcounting; in zend_jit_trace()
6093 } else if (ssa_op->op1_use >= 0 && ssa->vars[ssa_op->op1_use].definition >= 0) { in zend_jit_trace()
6094 on_this = ssa_opcodes[ssa->vars[ssa_op->op1_use].definition]->opcode == ZEND_FETCH_THIS; in zend_jit_trace()
6102 if (!zend_jit_fetch_obj(&ctx, opline, op_array, ssa, ssa_op, in zend_jit_trace()
6106 zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, MAY_BE_STRING))) { in zend_jit_trace()
6135 orig_ssa_op = ssa_op; in zend_jit_trace()
6142 if (ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) { in zend_jit_trace()
6143 ssa->var_info[ssa_op->op1_def].guarded_reference = 1; in zend_jit_trace()
6150 ssa_op++; in zend_jit_trace()
6156 ssa_op = orig_ssa_op; in zend_jit_trace()
6165 orig_ssa_op = ssa_op; in zend_jit_trace()
6169 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
6174 ssa_op++; in zend_jit_trace()
6180 ssa_op = orig_ssa_op; in zend_jit_trace()
6186 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
6205 !ssa->var_info[ssa_op->op1_use].guarded_reference, 1)) { in zend_jit_trace()
6209 && ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) { in zend_jit_trace()
6210 ssa->var_info[ssa_op->op1_use].guarded_reference = 1; in zend_jit_trace()
6227 !ssa->var_info[ssa_op->op1_use].guarded_reference, 1)) { in zend_jit_trace()
6231 && ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) { in zend_jit_trace()
6232 ssa->var_info[ssa_op->op1_use].guarded_reference = 1; in zend_jit_trace()
6240 …&ctx, opline, op1_info, op1_addr, RES_REG_ADDR(), zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
6246 if (ssa_op->result_def >= 0 && opline->result_type != IS_CV) { in zend_jit_trace()
6247 if (zend_jit_may_delay_fetch_this(op_array, ssa, ssa_opcodes, ssa_op)) { in zend_jit_trace()
6248 ssa->var_info[ssa_op->result_def].delayed_fetch_this = 1; in zend_jit_trace()
6330 if (!zend_jit_fetch_constant(&ctx, opline, op_array, ssa, ssa_op, RES_REG_ADDR())) { in zend_jit_trace()
6359 !ssa->var_info[ssa_op->op1_use].guarded_reference, 1)) { in zend_jit_trace()
6363 && ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) { in zend_jit_trace()
6364 ssa->var_info[ssa_op->op1_use].guarded_reference = 1; in zend_jit_trace()
6370 if (ssa_op->op1_use >= 0) { in zend_jit_trace()
6371 zend_ssa_var_info *op1_ssa = ssa->var_info + ssa_op->op1_use; in zend_jit_trace()
6378 if (ssa_op->op1_use >= 0) { in zend_jit_trace()
6379 delayed_fetch_this = ssa->var_info[ssa_op->op1_use].delayed_fetch_this; in zend_jit_trace()
6383 } else if (ssa_op->op1_use >= 0 && ssa->vars[ssa_op->op1_use].definition >= 0) { in zend_jit_trace()
6384 on_this = ssa_opcodes[ssa->vars[ssa_op->op1_use].definition]->opcode == ZEND_FETCH_THIS; in zend_jit_trace()
6395 op_array, ssa, ssa_op, frame->call_level, in zend_jit_trace()
6414 op_array, ssa, ssa_op, frame->call_level, in zend_jit_trace()
6426 …? op_array_ssa->cfg.map[opline - op_array->opcodes] : -1, op_array, ssa, ssa_op, frame->call_level… in zend_jit_trace()
6482 zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info), p + 1)) { in zend_jit_trace()
6510 zend_jit_trace_cleanup_stack(&ctx, stack, opline, ssa_op, ssa, ssa_opcodes); in zend_jit_trace()
6531 if (ssa_op) { in zend_jit_trace()
6535 if (ssa_op->result_def >= 0) { in zend_jit_trace()
6542 } else if (!(ssa->var_info[ssa_op->result_def].type & MAY_BE_GUARD) in zend_jit_trace()
6543 && has_concrete_type(ssa->var_info[ssa_op->result_def].type)) { in zend_jit_trace()
6544 type = concrete_type(ssa->var_info[ssa_op->result_def].type); in zend_jit_trace()
6552 && ssa_op->op1_use >= 0 in zend_jit_trace()
6554 && (ssa->var_info[ssa_op->op1_use].type & MAY_BE_REF) == 0) { in zend_jit_trace()
6573 (gen_handler || type == IS_UNKNOWN || !ra || !RA_HAS_REG(ssa_op->result_def))); in zend_jit_trace()
6578 if (!gen_handler && type != IS_UNKNOWN && ra && RA_HAS_REG(ssa_op->result_def)) { in zend_jit_trace()
6592 const zend_ssa_op *next_ssa_op = ssa_op + zend_jit_trace_op_len(opline); in zend_jit_trace()
6624 if (ssa->var_info[ssa_op->result_def].type & MAY_BE_INDIRECT) { in zend_jit_trace()
6628 ssa->var_info[ssa_op->result_def].type &= ~MAY_BE_GUARD; in zend_jit_trace()
6632 } else if (ssa->var_info[ssa_op->result_def].avoid_refcounting) { in zend_jit_trace()
6634 } else if (ra && RA_HAS_REG(ssa_op->result_def)) { in zend_jit_trace()
6635 SET_STACK_REF_EX(stack, EX_VAR_TO_NUM(opline->result.var), ra[ssa_op->result_def].ref, in zend_jit_trace()
6636 RA_REG_FLAGS(ssa_op->result_def) & ZREG_STORE); in zend_jit_trace()
6642 && zend_inference_propagate_range(op_array, ssa, opline, ssa_op, ssa_op->result_def, &tmp)) { in zend_jit_trace()
6643 ssa->var_info[ssa_op->result_def].range.min = tmp.min; in zend_jit_trace()
6644 ssa->var_info[ssa_op->result_def].range.max = tmp.max; in zend_jit_trace()
6645 ssa->var_info[ssa_op->result_def].range.underflow = 0; in zend_jit_trace()
6646 ssa->var_info[ssa_op->result_def].range.overflow = 0; in zend_jit_trace()
6647 ssa->var_info[ssa_op->result_def].has_range = 1; in zend_jit_trace()
6650 if (ssa_op->op1_def >= 0 in zend_jit_trace()
6656 if (!(ssa->var_info[ssa_op->op1_def].type & MAY_BE_GUARD) in zend_jit_trace()
6657 && has_concrete_type(ssa->var_info[ssa_op->op1_def].type)) { in zend_jit_trace()
6658 type = concrete_type(ssa->var_info[ssa_op->op1_def].type); in zend_jit_trace()
6679 (!RA_HAS_REG(ssa_op->op1_def) && in zend_jit_trace()
6680 !(ssa->vars[ssa_op->op1_def].no_val && in zend_jit_trace()
6689 ssa->var_info[ssa_op->op1_def].type &= ~MAY_BE_GUARD; in zend_jit_trace()
6690 if (ra && RA_HAS_REG(ssa_op->op1_def)) { in zend_jit_trace()
6691 uint8_t flags = RA_REG_FLAGS(ssa_op->op1_def) & ZREG_STORE; in zend_jit_trace()
6693 if (ssa_op->op1_use >= 0) { in zend_jit_trace()
6701 if (!RA_HAS_REG(ssa_op->op1_use)) { in zend_jit_trace()
6706 SET_STACK_REF_EX(stack, EX_VAR_TO_NUM(opline->op1.var), ra[ssa_op->op1_def].ref, flags); in zend_jit_trace()
6710 && zend_inference_propagate_range(op_array, ssa, opline, ssa_op, ssa_op->op1_def, &tmp)) { in zend_jit_trace()
6711 ssa->var_info[ssa_op->op1_def].range.min = tmp.min; in zend_jit_trace()
6712 ssa->var_info[ssa_op->op1_def].range.max = tmp.max; in zend_jit_trace()
6713 ssa->var_info[ssa_op->op1_def].range.underflow = 0; in zend_jit_trace()
6714 ssa->var_info[ssa_op->op1_def].range.overflow = 0; in zend_jit_trace()
6715 ssa->var_info[ssa_op->op1_def].has_range = 1; in zend_jit_trace()
6718 if (ssa_op->op2_def >= 0 in zend_jit_trace()
6724 if (!(ssa->var_info[ssa_op->op2_def].type & MAY_BE_GUARD) in zend_jit_trace()
6725 && has_concrete_type(ssa->var_info[ssa_op->op2_def].type)) { in zend_jit_trace()
6726 type = concrete_type(ssa->var_info[ssa_op->op2_def].type); in zend_jit_trace()
6733 (!RA_HAS_REG(ssa_op->op2_def) && in zend_jit_trace()
6734 !(ssa->vars[ssa_op->op2_def].no_val && in zend_jit_trace()
6738 ssa->var_info[ssa_op->op2_def].type &= ~MAY_BE_GUARD; in zend_jit_trace()
6739 if (ra && RA_HAS_REG(ssa_op->op2_def)) { in zend_jit_trace()
6740 uint8_t flags = RA_REG_FLAGS(ssa_op->op2_def) & ZREG_STORE; in zend_jit_trace()
6742 if (ssa_op->op2_use >= 0) { in zend_jit_trace()
6744 if (!RA_HAS_REG(ssa_op->op2_use) in zend_jit_trace()
6750 SET_STACK_REF_EX(stack, EX_VAR_TO_NUM(opline->op2.var), ra[ssa_op->op2_def].ref, flags); in zend_jit_trace()
6754 && zend_inference_propagate_range(op_array, ssa, opline, ssa_op, ssa_op->op2_def, &tmp)) { in zend_jit_trace()
6755 ssa->var_info[ssa_op->op2_def].range.min = tmp.min; in zend_jit_trace()
6756 ssa->var_info[ssa_op->op2_def].range.max = tmp.max; in zend_jit_trace()
6757 ssa->var_info[ssa_op->op2_def].range.underflow = 0; in zend_jit_trace()
6758 ssa->var_info[ssa_op->op2_def].range.overflow = 0; in zend_jit_trace()
6759 ssa->var_info[ssa_op->op2_def].has_range = 1; in zend_jit_trace()
6773 ssa_op++; in zend_jit_trace()
6775 if (ssa_op->op1_def >= 0) { in zend_jit_trace()
6778 if (!(ssa->var_info[ssa_op->op1_def].type & MAY_BE_GUARD) in zend_jit_trace()
6779 && has_concrete_type(ssa->var_info[ssa_op->op1_def].type)) { in zend_jit_trace()
6780 type = concrete_type(ssa->var_info[ssa_op->op1_def].type); in zend_jit_trace()
6788 (gen_handler || type == IS_UNKNOWN || !ra || !RA_HAS_REG(ssa_op->op1_def))); in zend_jit_trace()
6790 ssa->var_info[ssa_op->op1_def].type &= ~MAY_BE_GUARD; in zend_jit_trace()
6791 if (ra && RA_HAS_REG(ssa_op->op1_def)) { in zend_jit_trace()
6792 SET_STACK_REF_EX(stack, EX_VAR_TO_NUM(opline->op1.var), ra[ssa_op->op1_def].ref, in zend_jit_trace()
6793 RA_REG_FLAGS(ssa_op->op1_def) & ZREG_STORE); in zend_jit_trace()
6797 && zend_inference_propagate_range(op_array, ssa, opline, ssa_op, ssa_op->op1_def, &tmp)) { in zend_jit_trace()
6798 ssa->var_info[ssa_op->op1_def].range.min = tmp.min; in zend_jit_trace()
6799 ssa->var_info[ssa_op->op1_def].range.max = tmp.max; in zend_jit_trace()
6800 ssa->var_info[ssa_op->op1_def].range.underflow = 0; in zend_jit_trace()
6801 ssa->var_info[ssa_op->op1_def].range.overflow = 0; in zend_jit_trace()
6802 ssa->var_info[ssa_op->op1_def].has_range = 1; in zend_jit_trace()
6805 ssa_op++; in zend_jit_trace()
6808 ssa_op++; in zend_jit_trace()
6811 if (ssa_op->result_def >= 0) { in zend_jit_trace()
6814 if (!(ssa->var_info[ssa_op->result_def].type & MAY_BE_GUARD) in zend_jit_trace()
6815 && has_concrete_type(ssa->var_info[ssa_op->result_def].type)) { in zend_jit_trace()
6816 type = concrete_type(ssa->var_info[ssa_op->result_def].type); in zend_jit_trace()
6819 (gen_handler || !ra || !RA_HAS_REG(ssa_op->result_def))); in zend_jit_trace()
6820 if (ra && RA_HAS_REG(ssa_op->result_def)) { in zend_jit_trace()
6821 SET_STACK_REF_EX(stack, EX_VAR_TO_NUM(opline->result.var), ra[ssa_op->result_def].ref, in zend_jit_trace()
6822 RA_REG_FLAGS(ssa_op->result_def) & ZREG_STORE); in zend_jit_trace()
6825 ssa_op++; in zend_jit_trace()
6830 ssa_op++; in zend_jit_trace()
6833 if (ssa_op->op1_def >= 0) { in zend_jit_trace()
6836 if (!(ssa->var_info[ssa_op->op1_def].type & MAY_BE_GUARD) in zend_jit_trace()
6837 && has_concrete_type(ssa->var_info[ssa_op->op1_def].type)) { in zend_jit_trace()
6838 type = concrete_type(ssa->var_info[ssa_op->op1_def].type); in zend_jit_trace()
6841 (gen_handler || !ra || !RA_HAS_REG(ssa_op->op1_def))); in zend_jit_trace()
6842 if (ra && RA_HAS_REG(ssa_op->op1_def)) { in zend_jit_trace()
6843 SET_STACK_REF_EX(stack, EX_VAR_TO_NUM(opline->op1.var), ra[ssa_op->op1_def].ref, in zend_jit_trace()
6844 RA_REG_FLAGS(ssa_op->op1_def) & ZREG_STORE); in zend_jit_trace()
6847 ssa_op++; in zend_jit_trace()
6852 ssa_op += zend_jit_trace_op_len(opline); in zend_jit_trace()
6857 ssa_op++; in zend_jit_trace()
7028 && ssa_op in zend_jit_trace()
7029 && (ssa_op-1)->op1_use >=0 in zend_jit_trace()
7030 && ssa->var_info[(ssa_op-1)->op1_use].delayed_fetch_this)) in zend_jit_trace()