static zend_always_inline void i_free_compiled_variables(zend_execute_data *execute_data TSRMLS_DC) /* {{{ */
{
- zval *cv = EX_VAR_NUM(0);
- zval *end = cv + EX(op_array)->last_var;
- while (cv != end) {
- zval_ptr_dtor(cv);
- cv++;
- }
+ if (EXPECTED(EX(op_array)->last_var > 0)) {
+ zval *cv = EX_VAR_NUM(0);
+ zval *end = cv + EX(op_array)->last_var;
+ do {
+ zval_ptr_dtor(cv);
+ cv++;
+ } while (cv != end);
+ }
}
/* }}} */
static zend_always_inline void zend_vm_stack_clear_multiple(int nested TSRMLS_DC)
{
zval *p = EG(argument_stack)->top - 1;
- zval *end = p - Z_LVAL_P(p);
- while (p != end) {
- p--;
- i_zval_ptr_dtor_nogc(p ZEND_FILE_LINE_CC TSRMLS_CC);
+ if (EXPECTED(Z_LVAL_P(p) > 0)) {
+ zval *end = p - Z_LVAL_P(p);
+
+ do {
+ p--;
+ i_zval_ptr_dtor_nogc(p ZEND_FILE_LINE_CC TSRMLS_CC);
+ } while (p != end);
}
if (nested) {
EG(argument_stack)->top = p;