SAVE_OPLINE();
var_ptr = GET_OP1_ZVAL_PTR_PTR(BP_VAR_RW);
+ if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+ fast_increment_function(var_ptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ }
+ ZEND_VM_NEXT_OPCODE();
+ }
+
if (OP1_TYPE == IS_VAR && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, val TSRMLS_CC);
zval_ptr_dtor(val);
} else {
- fast_increment_function(var_ptr);
+ increment_function(var_ptr);
}
if (RETURN_VALUE_USED(opline)) {
SAVE_OPLINE();
var_ptr = GET_OP1_ZVAL_PTR_PTR(BP_VAR_RW);
+ if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+ fast_decrement_function(var_ptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ }
+ ZEND_VM_NEXT_OPCODE();
+ }
+
if (OP1_TYPE == IS_VAR && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, val TSRMLS_CC);
zval_ptr_dtor(val);
} else {
- fast_decrement_function(var_ptr);
+ decrement_function(var_ptr);
}
if (RETURN_VALUE_USED(opline)) {
SAVE_OPLINE();
var_ptr = GET_OP1_ZVAL_PTR_PTR(BP_VAR_RW);
+ if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ fast_increment_function(var_ptr);
+ ZEND_VM_NEXT_OPCODE();
+ }
+
if (OP1_TYPE == IS_VAR && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, val TSRMLS_CC);
zval_ptr_dtor(val);
} else {
- fast_increment_function(var_ptr);
+ increment_function(var_ptr);
}
FREE_OP1_VAR_PTR();
SAVE_OPLINE();
var_ptr = GET_OP1_ZVAL_PTR_PTR(BP_VAR_RW);
+ if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ fast_decrement_function(var_ptr);
+ ZEND_VM_NEXT_OPCODE();
+ }
+
if (OP1_TYPE == IS_VAR && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, val TSRMLS_CC);
zval_ptr_dtor(val);
} else {
- fast_decrement_function(var_ptr);
+ decrement_function(var_ptr);
}
FREE_OP1_VAR_PTR();
SAVE_OPLINE();
var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+ fast_increment_function(var_ptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ }
+ ZEND_VM_NEXT_OPCODE();
+ }
+
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, val TSRMLS_CC);
zval_ptr_dtor(val);
} else {
- fast_increment_function(var_ptr);
+ increment_function(var_ptr);
}
if (RETURN_VALUE_USED(opline)) {
SAVE_OPLINE();
var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+ fast_decrement_function(var_ptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ }
+ ZEND_VM_NEXT_OPCODE();
+ }
+
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, val TSRMLS_CC);
zval_ptr_dtor(val);
} else {
- fast_decrement_function(var_ptr);
+ decrement_function(var_ptr);
}
if (RETURN_VALUE_USED(opline)) {
SAVE_OPLINE();
var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ fast_increment_function(var_ptr);
+ ZEND_VM_NEXT_OPCODE();
+ }
+
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, val TSRMLS_CC);
zval_ptr_dtor(val);
} else {
- fast_increment_function(var_ptr);
+ increment_function(var_ptr);
}
if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
SAVE_OPLINE();
var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ fast_decrement_function(var_ptr);
+ ZEND_VM_NEXT_OPCODE();
+ }
+
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, val TSRMLS_CC);
zval_ptr_dtor(val);
} else {
- fast_decrement_function(var_ptr);
+ decrement_function(var_ptr);
}
if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
SAVE_OPLINE();
var_ptr = _get_zval_ptr_cv_BP_VAR_RW(execute_data, opline->op1.var TSRMLS_CC);
+ if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+ fast_increment_function(var_ptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ }
+ ZEND_VM_NEXT_OPCODE();
+ }
+
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, val TSRMLS_CC);
zval_ptr_dtor(val);
} else {
- fast_increment_function(var_ptr);
+ increment_function(var_ptr);
}
if (RETURN_VALUE_USED(opline)) {
SAVE_OPLINE();
var_ptr = _get_zval_ptr_cv_BP_VAR_RW(execute_data, opline->op1.var TSRMLS_CC);
+ if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+ fast_decrement_function(var_ptr);
+ if (RETURN_VALUE_USED(opline)) {
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ }
+ ZEND_VM_NEXT_OPCODE();
+ }
+
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, val TSRMLS_CC);
zval_ptr_dtor(val);
} else {
- fast_decrement_function(var_ptr);
+ decrement_function(var_ptr);
}
if (RETURN_VALUE_USED(opline)) {
SAVE_OPLINE();
var_ptr = _get_zval_ptr_cv_BP_VAR_RW(execute_data, opline->op1.var TSRMLS_CC);
+ if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ fast_increment_function(var_ptr);
+ ZEND_VM_NEXT_OPCODE();
+ }
+
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, val TSRMLS_CC);
zval_ptr_dtor(val);
} else {
- fast_increment_function(var_ptr);
+ increment_function(var_ptr);
}
CHECK_EXCEPTION();
SAVE_OPLINE();
var_ptr = _get_zval_ptr_cv_BP_VAR_RW(execute_data, opline->op1.var TSRMLS_CC);
+ if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ fast_decrement_function(var_ptr);
+ ZEND_VM_NEXT_OPCODE();
+ }
+
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, val TSRMLS_CC);
zval_ptr_dtor(val);
} else {
- fast_decrement_function(var_ptr);
+ decrement_function(var_ptr);
}
CHECK_EXCEPTION();