From: Dmitry Stogov Date: Wed, 29 Jul 2020 07:42:12 +0000 (+0300) Subject: Use inline function instead of macro X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=709925a03ac6d98548265a819c6c20e3fc462fc1;p=php Use inline function instead of macro --- diff --git a/ext/opcache/jit/zend_jit_trace.c b/ext/opcache/jit/zend_jit_trace.c index 6ef493e3ed..4f210a1a8a 100644 --- a/ext/opcache/jit/zend_jit_trace.c +++ b/ext/opcache/jit/zend_jit_trace.c @@ -366,14 +366,27 @@ static zend_always_inline int zend_jit_var_may_be_modified_indirectly(const zend SET_STACK_TYPE(stack, EX_VAR_TO_NUM(_var), _type); \ } while (0) -#define ADD_OP_GUARD(_var, _op_type) do { \ - if (_var >= 0 && _op_type != IS_UNKNOWN) { \ - zend_ssa_var_info *info = &ssa_var_info[_var]; \ - if (zend_jit_var_may_be_modified_indirectly(op_array, ssa, ssa_vars[_var].var)) { \ - info->type = MAY_BE_GUARD | zend_jit_trace_type_to_info(_op_type); \ - } else if ((info->type & (MAY_BE_ANY|MAY_BE_UNDEF)) != (1 << _op_type)) { \ - info->type = MAY_BE_GUARD | zend_jit_trace_type_to_info_ex(_op_type, info->type); \ - } \ + + +static zend_always_inline void zend_jit_trace_add_op_guard(const zend_op_array *op_array, + const zend_ssa *ssa, + zend_ssa *tssa, + uint32_t var, + int ssa_var, + uint8_t op_type) +{ + zend_ssa_var_info *info = &tssa->var_info[ssa_var]; + + if (zend_jit_var_may_be_modified_indirectly(op_array, ssa, EX_VAR_TO_NUM(var))) { + info->type = MAY_BE_GUARD | zend_jit_trace_type_to_info(op_type); + } else if ((info->type & (MAY_BE_ANY|MAY_BE_UNDEF)) != (1 << op_type)) { + info->type = MAY_BE_GUARD | zend_jit_trace_type_to_info_ex(op_type, info->type); + } +} + +#define ADD_OP_GUARD(_var, _ssa_var, _op_type) do { \ + if (_ssa_var >= 0 && _op_type != IS_UNKNOWN) { \ + zend_jit_trace_add_op_guard(op_array, ssa, tssa, _var, _ssa_var, _op_type); \ } \ } while (0) @@ -396,11 +409,11 @@ static zend_always_inline int zend_jit_var_may_be_modified_indirectly(const zend } while (0) #define ADD_OP1_TRACE_GUARD() \ - ADD_OP_GUARD(tssa->ops[idx].op1_use, op1_type) + ADD_OP_GUARD(opline->op1.var, tssa->ops[idx].op1_use, op1_type) #define ADD_OP2_TRACE_GUARD() \ - ADD_OP_GUARD(tssa->ops[idx].op2_use, op2_type) + ADD_OP_GUARD(opline->op2.var, tssa->ops[idx].op2_use, op2_type) #define ADD_OP1_DATA_TRACE_GUARD() \ - ADD_OP_GUARD(tssa->ops[idx+1].op1_use, op3_type) + ADD_OP_GUARD((opline+1)->op1.var, tssa->ops[idx+1].op1_use, op3_type) #define CHECK_OP1_TRACE_TYPE() \ CHECK_OP_TRACE_TYPE(opline->op1.var, ssa_op->op1_use, op1_info, op1_type)