Lines Matching refs:opline

40 …_ssa_##opN##_has_range(const zend_op_array *op_array, const zend_ssa *ssa, const zend_op *opline) \
42 if (opline->opN##_type == IS_CONST) { \
43 zval *zv = CRT_CONSTANT_EX(op_array, opline->opN, ssa->rt_constants); \
46 return (opline->opN##_type != IS_UNUSED && \
49 ssa->ops[opline - op_array->opcodes].opN##_use >= 0 && \
50 ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].has_range); \
56 …_ssa_##opN##_min_range(const zend_op_array *op_array, const zend_ssa *ssa, const zend_op *opline) \
58 if (opline->opN##_type == IS_CONST) { \
59 zval *zv = CRT_CONSTANT_EX(op_array, opline->opN, ssa->rt_constants); \
69 } else if (opline->opN##_type != IS_UNUSED && \
72 ssa->ops[opline - op_array->opcodes].opN##_use >= 0 && \
73 ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].has_range) { \
74 return ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].range.min; \
80 …_ssa_##opN##_max_range(const zend_op_array *op_array, const zend_ssa *ssa, const zend_op *opline) \
82 if (opline->opN##_type == IS_CONST) { \
83 zval *zv = CRT_CONSTANT_EX(op_array, opline->opN, ssa->rt_constants); \
93 } else if (opline->opN##_type != IS_UNUSED && \
96 ssa->ops[opline - op_array->opcodes].opN##_use >= 0 && \
97 ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].has_range) { \
98 return ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].range.max; \
104 …#opN##_range_underflow(const zend_op_array *op_array, const zend_ssa *ssa, const zend_op *opline) \
106 if (opline->opN##_type == IS_CONST) { \
107 zval *zv = CRT_CONSTANT_EX(op_array, opline->opN, ssa->rt_constants); \
111 } else if (opline->opN##_type != IS_UNUSED && \
114 ssa->ops[opline - op_array->opcodes].opN##_use >= 0 && \
115 ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].has_range) { \
116 return ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].range.underflow; \
122 …##opN##_range_overflow(const zend_op_array *op_array, const zend_ssa *ssa, const zend_op *opline) \
124 if (opline->opN##_type == IS_CONST) { \
125 zval *zv = CRT_CONSTANT_EX(op_array, opline->opN, ssa->rt_constants); \
129 } else if (opline->opN##_type != IS_UNUSED && \
132 ssa->ops[opline - op_array->opcodes].opN##_use >= 0 && \
133 ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].has_range) { \
134 return ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].range.overflow; \
150 #define OP1_HAS_RANGE() (_ssa_op1_has_range (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
151 #define OP1_MIN_RANGE() (_ssa_op1_min_range (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
152 #define OP1_MAX_RANGE() (_ssa_op1_max_range (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
153 #define OP1_RANGE_UNDERFLOW() (_ssa_op1_range_underflow (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
154 #define OP1_RANGE_OVERFLOW() (_ssa_op1_range_overflow (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
155 #define OP2_HAS_RANGE() (_ssa_op2_has_range (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
156 #define OP2_MIN_RANGE() (_ssa_op2_min_range (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
157 #define OP2_MAX_RANGE() (_ssa_op2_max_range (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
158 #define OP2_RANGE_UNDERFLOW() (_ssa_op2_range_underflow (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
159 #define OP2_RANGE_OVERFLOW() (_ssa_op2_range_overflow (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
209 …32_t _ssa_##opN##_info(const zend_op_array *op_array, const zend_ssa *ssa, const zend_op *opline) \
211 if (opline->opN##_type == IS_CONST) { \
212 return _const_op_type(CRT_CONSTANT_EX(op_array, opline->opN, ssa->rt_constants)); \
214 return get_ssa_var_info(ssa, ssa->ops ? ssa->ops[opline - op_array->opcodes].opN##_use : -1); \
219 … _ssa_##opN##_def_info(const zend_op_array *op_array, const zend_ssa *ssa, const zend_op *opline) \
221 return get_ssa_var_info(ssa, ssa->ops ? ssa->ops[opline - op_array->opcodes].opN##_def : -1); \
232 #define OP1_INFO() (_ssa_op1_info(op_array, ssa, opline))
233 #define OP2_INFO() (_ssa_op2_info(op_array, ssa, opline))
234 #define OP1_DATA_INFO() (_ssa_op1_info(op_array, ssa, (opline+1)))
235 #define OP2_DATA_INFO() (_ssa_op2_info(op_array, ssa, (opline+1)))
236 #define RES_USE_INFO() (_ssa_result_info(op_array, ssa, opline))
237 #define OP1_DEF_INFO() (_ssa_op1_def_info(op_array, ssa, opline))
238 #define OP2_DEF_INFO() (_ssa_op2_def_info(op_array, ssa, opline))
239 #define OP1_DATA_DEF_INFO() (_ssa_op1_def_info(op_array, ssa, (opline+1)))
240 #define OP2_DATA_DEF_INFO() (_ssa_op2_def_info(op_array, ssa, (opline+1)))
241 #define RES_INFO() (_ssa_result_def_info(op_array, ssa, opline))
269 int zend_may_throw(const zend_op *opline, zend_op_array *op_array, zend_ssa *ssa);