if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
OBJ_RELEASE((zend_object*)old_execute_data->func->op_array.prototype);
}
- if (call_info & ZEND_CALL_RELEASE_THIS) {
+ if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) {
object = Z_OBJ(old_execute_data->This);
#if 0
if (UNEXPECTED(EG(exception) != NULL) && (EX(opline)->op1.num & ZEND_CALL_CTOR)) {
}
fcall_end_change_scope:
- if (ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS) {
+ if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) {
object = Z_OBJ(call->This);
#if 0
if (UNEXPECTED(EG(exception) != NULL) && (opline->op1.num & ZEND_CALL_CTOR)) {
opline = EX(opline);
- if (call_info & ZEND_CALL_RELEASE_THIS) {
+ if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) {
object = Z_OBJ(call->This);
OBJ_RELEASE(object);
}
}
if (IS_CONST != IS_UNUSED) {
- ZVAL_DEREF(object);
- if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ do {
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
+ object = Z_REFVAL_P(object);
+ if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
+ break;
+ }
+ }
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
- HANDLE_EXCEPTION();
- }
+ HANDLE_EXCEPTION();
+ }
+ } while (0);
}
obj = Z_OBJ_P(object);
}
if (IS_CONST != IS_UNUSED) {
- ZVAL_DEREF(object);
- if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ do {
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
+ object = Z_REFVAL_P(object);
+ if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
+ break;
+ }
+ }
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
- HANDLE_EXCEPTION();
- }
+ HANDLE_EXCEPTION();
+ }
+ } while (0);
}
obj = Z_OBJ_P(object);
}
if (IS_CONST != IS_UNUSED) {
- ZVAL_DEREF(object);
- if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (UNEXPECTED(EG(exception) != NULL)) {
+ do {
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
+ object = Z_REFVAL_P(object);
+ if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
+ break;
+ }
+ }
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zval_ptr_dtor_nogc(free_op2);
+
HANDLE_EXCEPTION();
}
- zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
- zval_ptr_dtor_nogc(free_op2);
-
- HANDLE_EXCEPTION();
- }
+ } while (0);
}
obj = Z_OBJ_P(object);
}
if (IS_UNUSED != IS_UNUSED) {
- ZVAL_DEREF(object);
- if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ do {
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
+ object = Z_REFVAL_P(object);
+ if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
+ break;
+ }
+ }
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
- HANDLE_EXCEPTION();
- }
+ HANDLE_EXCEPTION();
+ }
+ } while (0);
}
obj = Z_OBJ_P(object);
}
if (IS_UNUSED != IS_UNUSED) {
- ZVAL_DEREF(object);
- if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ do {
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
+ object = Z_REFVAL_P(object);
+ if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
+ break;
+ }
+ }
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
- HANDLE_EXCEPTION();
- }
+ HANDLE_EXCEPTION();
+ }
+ } while (0);
}
obj = Z_OBJ_P(object);
}
if (IS_UNUSED != IS_UNUSED) {
- ZVAL_DEREF(object);
- if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (UNEXPECTED(EG(exception) != NULL)) {
+ do {
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
+ object = Z_REFVAL_P(object);
+ if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
+ break;
+ }
+ }
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zval_ptr_dtor_nogc(free_op2);
+
HANDLE_EXCEPTION();
}
- zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
- zval_ptr_dtor_nogc(free_op2);
-
- HANDLE_EXCEPTION();
- }
+ } while (0);
}
obj = Z_OBJ_P(object);
}
if (IS_CV != IS_UNUSED) {
- ZVAL_DEREF(object);
- if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ do {
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
+ object = Z_REFVAL_P(object);
+ if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
+ break;
+ }
+ }
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
- HANDLE_EXCEPTION();
- }
+ HANDLE_EXCEPTION();
+ }
+ } while (0);
}
obj = Z_OBJ_P(object);
}
if (IS_CV != IS_UNUSED) {
- ZVAL_DEREF(object);
- if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ do {
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
+ object = Z_REFVAL_P(object);
+ if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
+ break;
+ }
+ }
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
- HANDLE_EXCEPTION();
- }
+ HANDLE_EXCEPTION();
+ }
+ } while (0);
}
obj = Z_OBJ_P(object);
}
if (IS_CV != IS_UNUSED) {
- ZVAL_DEREF(object);
- if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (UNEXPECTED(EG(exception) != NULL)) {
+ do {
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
+ object = Z_REFVAL_P(object);
+ if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
+ break;
+ }
+ }
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zval_ptr_dtor_nogc(free_op2);
+
HANDLE_EXCEPTION();
}
- zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
- zval_ptr_dtor_nogc(free_op2);
-
- HANDLE_EXCEPTION();
- }
+ } while (0);
}
obj = Z_OBJ_P(object);
}
if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
- ZVAL_DEREF(object);
- if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (UNEXPECTED(EG(exception) != NULL)) {
+ do {
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
+ object = Z_REFVAL_P(object);
+ if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
+ break;
+ }
+ }
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+
+ zval_ptr_dtor_nogc(free_op1);
HANDLE_EXCEPTION();
}
- zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
-
- zval_ptr_dtor_nogc(free_op1);
- HANDLE_EXCEPTION();
- }
+ } while (0);
}
obj = Z_OBJ_P(object);
}
if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
- ZVAL_DEREF(object);
- if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (UNEXPECTED(EG(exception) != NULL)) {
+ do {
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
+ object = Z_REFVAL_P(object);
+ if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
+ break;
+ }
+ }
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+
+ zval_ptr_dtor_nogc(free_op1);
HANDLE_EXCEPTION();
}
- zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
-
- zval_ptr_dtor_nogc(free_op1);
- HANDLE_EXCEPTION();
- }
+ } while (0);
}
obj = Z_OBJ_P(object);
}
if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
- ZVAL_DEREF(object);
- if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (UNEXPECTED(EG(exception) != NULL)) {
+ do {
+ if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
+ object = Z_REFVAL_P(object);
+ if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
+ break;
+ }
+ }
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zval_ptr_dtor_nogc(free_op2);
+ zval_ptr_dtor_nogc(free_op1);
HANDLE_EXCEPTION();
}
- zend_error(E_EXCEPTION | E_ERROR, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
- zval_ptr_dtor_nogc(free_op2);
- zval_ptr_dtor_nogc(free_op1);
- HANDLE_EXCEPTION();
- }
+ } while (0);
}
obj = Z_OBJ_P(object);