static zend_always_inline void i_free_compiled_variables(zend_execute_data *execute_data) /* {{{ */
{
zval *cv = EX_VAR_NUM(0);
- zval *end = cv + EX(func)->op_array.last_var;
- while (EXPECTED(cv != end)) {
+ int count = EX(func)->op_array.last_var;
+ while (EXPECTED(count != 0)) {
if (Z_REFCOUNTED_P(cv)) {
zend_refcounted *r = Z_COUNTED_P(cv);
if (!GC_DELREF(r)) {
}
}
cv++;
- }
+ count--;
+ }
}
/* }}} */
static zend_always_inline void zend_init_cvs(uint32_t first, uint32_t last EXECUTE_DATA_DC)
{
if (EXPECTED(first < last)) {
+ uint32_t count = last - first;
zval *var = EX_VAR_NUM(first);
- zval *end = EX_VAR_NUM(last);
do {
ZVAL_UNDEF(var);
var++;
- } while (var != end);
+ } while (--count);
}
}
static zend_always_inline void zend_vm_stack_free_extra_args_ex(uint32_t call_info, zend_execute_data *call)
{
if (UNEXPECTED(call_info & ZEND_CALL_FREE_EXTRA_ARGS)) {
- zval *end = ZEND_CALL_VAR_NUM(call, call->func->op_array.last_var + call->func->op_array.T);
- zval *p = end + (ZEND_CALL_NUM_ARGS(call) - call->func->op_array.num_args);
+ uint32_t count = ZEND_CALL_NUM_ARGS(call) - call->func->op_array.num_args;
+ zval *p = ZEND_CALL_VAR_NUM(call, call->func->op_array.last_var + call->func->op_array.T + count);
do {
p--;
if (Z_REFCOUNTED_P(p)) {
gc_check_possible_root(r);
}
}
- } while (p != end);
+ } while (--count);
}
}