}
if (Z_ISREF_P(arg)) {
-//??? ALLOC_ZVAL(arg);
-//??? MAKE_COPY_ZVAL(arg_ptr, arg);
ZVAL_DUP(arg, Z_REFVAL_P(arg));
} else {
if (Z_REFCOUNTED_P(arg)) Z_ADDREF_P(arg);
SAVE_OPLINE();
function_name_ptr = function_name = opline->op2.zv;
- if (Z_ISREF_P(function_name)) {
- function_name = Z_REFVAL_P(function_name);
- }
+ ZVAL_DEREF(function_name);
if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
if (Z_STRVAL_P(function_name)[0] == '\\') {
lcname = STR_ALLOC(Z_STRLEN_P(function_name) - 1, 0);
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
ZVAL_UNDEF(&call->object);
} else {
+//???
if (!Z_ISREF(call->object)) {
Z_ADDREF(call->object); /* For $this pointer */
} else {
SAVE_OPLINE();
function_name_ptr = function_name = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- if (Z_ISREF_P(function_name)) {
- function_name = Z_REFVAL_P(function_name);
- }
+ ZVAL_DEREF(function_name);
if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
if (Z_STRVAL_P(function_name)[0] == '\\') {
lcname = STR_ALLOC(Z_STRLEN_P(function_name) - 1, 0);
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
ZVAL_UNDEF(&call->object);
} else {
+//???
if (!Z_ISREF(call->object)) {
Z_ADDREF(call->object); /* For $this pointer */
} else {
SAVE_OPLINE();
function_name_ptr = function_name = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- if (Z_ISREF_P(function_name)) {
- function_name = Z_REFVAL_P(function_name);
- }
+ ZVAL_DEREF(function_name);
if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
if (Z_STRVAL_P(function_name)[0] == '\\') {
lcname = STR_ALLOC(Z_STRLEN_P(function_name) - 1, 0);
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
ZVAL_UNDEF(&call->object);
} else {
+//???
if (!Z_ISREF(call->object)) {
Z_ADDREF(call->object); /* For $this pointer */
} else {
SAVE_OPLINE();
function_name_ptr = function_name = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
- if (Z_ISREF_P(function_name)) {
- function_name = Z_REFVAL_P(function_name);
- }
+ ZVAL_DEREF(function_name);
if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
if (Z_STRVAL_P(function_name)[0] == '\\') {
lcname = STR_ALLOC(Z_STRLEN_P(function_name) - 1, 0);
if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
ZVAL_UNDEF(&call->object);
} else {
+//???
if (!Z_ISREF(call->object)) {
Z_ADDREF(call->object); /* For $this pointer */
} else {
SAVE_OPLINE();
z = opline->op1.zv;
- if (UNEXPECTED(Z_ISREF_P(z))) {
- z = Z_REFVAL_P(z);
- }
-
zend_print_variable(z);
CHECK_EXCEPTION();
SAVE_OPLINE();
expr = opline->op1.zv;
-
- if (Z_ISREF_P(expr)) {
- expr = Z_REFVAL_P(expr);
- }
if (opline->extended_value != IS_STRING) {
ZVAL_COPY_VALUE(result, expr);
if (!0) {
if ((IS_CONST == IS_CV || IS_CONST == IS_VAR) &&
(opline->extended_value & ZEND_FE_RESET_VARIABLE)) {
array_ptr = array_ref = NULL;
- if (Z_ISREF_P(array_ref)) {
- array_ptr = Z_REFVAL_P(array_ptr);
- }
- if (Z_TYPE_P(array_ptr) == IS_NULL) {
+ ZVAL_DEREF(array_ptr);
+ if (Z_TYPE_P(array_ptr) == IS_ARRAY) {
+ if (!Z_ISREF_P(array_ref)) {
+ SEPARATE_ZVAL(array_ptr);
+ array_ref = array_ptr;
+ if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
+ ZVAL_NEW_REF(array_ptr, array_ptr);
+ array_ref = array_ptr;
+ array_ptr = Z_REFVAL_P(array_ptr);
+ }
+ }
+ if (Z_REFCOUNTED_P(array_ref)) Z_ADDREF_P(array_ref);
} else if (Z_TYPE_P(array_ptr) == IS_OBJECT) {
if(Z_OBJ_HT_P(array_ptr)->get_class_entry == NULL) {
zend_error(E_WARNING, "foreach() cannot iterate over objects without PHP class");
}
array_ref = array_ptr;
} else {
- if (Z_TYPE_P(array_ptr) == IS_ARRAY) {
- if (!Z_ISREF_P(array_ref)) {
- SEPARATE_ZVAL(array_ptr);
- array_ref = array_ptr;
- if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
- ZVAL_NEW_REF(array_ptr, array_ptr);
- array_ref = array_ptr;
- array_ptr = Z_REFVAL_P(array_ptr);
- }
- }
- }
if (Z_REFCOUNTED_P(array_ref)) Z_ADDREF_P(array_ref);
}
} else {
array_ptr = array_ref = opline->op1.zv;
- if (Z_ISREF_P(array_ref)) {
- array_ptr = Z_REFVAL_P(array_ptr);
- }
+ ZVAL_DEREF(array_ptr);
if (0) { /* IS_TMP_VAR */
zval tmp;
(opline->extended_value & ZEND_QUICK_SET)) {
if (Z_TYPE_P(EX_VAR_NUM(opline->op1.var)) != IS_UNDEF) {
value = EX_VAR_NUM(opline->op1.var);
- if (Z_ISREF_P(value)) {
- value = Z_REFVAL_P(value);
- }
+ ZVAL_DEREF(value);
} else {
isset = 0;
}
(opline->extended_value & ZEND_QUICK_SET)) {
if (Z_TYPE_P(EX_VAR_NUM(opline->op1.var)) != IS_UNDEF) {
value = EX_VAR_NUM(opline->op1.var);
- if (Z_ISREF_P(value)) {
- value = Z_REFVAL_P(value);
- }
+ ZVAL_DEREF(value);
} else {
isset = 0;
}
(opline->extended_value & ZEND_QUICK_SET)) {
if (Z_TYPE_P(EX_VAR_NUM(opline->op1.var)) != IS_UNDEF) {
value = EX_VAR_NUM(opline->op1.var);
- if (Z_ISREF_P(value)) {
- value = Z_REFVAL_P(value);
- }
+ ZVAL_DEREF(value);
} else {
isset = 0;
}
SAVE_OPLINE();
z = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (UNEXPECTED(Z_ISREF_P(z))) {
- z = Z_REFVAL_P(z);
- }
-
zend_print_variable(z);
zval_dtor(free_op1.var);
SAVE_OPLINE();
expr = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-
- if (Z_ISREF_P(expr)) {
- expr = Z_REFVAL_P(expr);
- }
if (opline->extended_value != IS_STRING) {
ZVAL_COPY_VALUE(result, expr);
if (!1) {
if ((IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) &&
(opline->extended_value & ZEND_FE_RESET_VARIABLE)) {
array_ptr = array_ref = NULL;
- if (Z_ISREF_P(array_ref)) {
- array_ptr = Z_REFVAL_P(array_ptr);
- }
- if (Z_TYPE_P(array_ptr) == IS_NULL) {
+ ZVAL_DEREF(array_ptr);
+ if (Z_TYPE_P(array_ptr) == IS_ARRAY) {
+ if (!Z_ISREF_P(array_ref)) {
+ SEPARATE_ZVAL(array_ptr);
+ array_ref = array_ptr;
+ if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
+ ZVAL_NEW_REF(array_ptr, array_ptr);
+ array_ref = array_ptr;
+ array_ptr = Z_REFVAL_P(array_ptr);
+ }
+ }
+ if (Z_REFCOUNTED_P(array_ref)) Z_ADDREF_P(array_ref);
} else if (Z_TYPE_P(array_ptr) == IS_OBJECT) {
if(Z_OBJ_HT_P(array_ptr)->get_class_entry == NULL) {
zend_error(E_WARNING, "foreach() cannot iterate over objects without PHP class");
}
array_ref = array_ptr;
} else {
- if (Z_TYPE_P(array_ptr) == IS_ARRAY) {
- if (!Z_ISREF_P(array_ref)) {
- SEPARATE_ZVAL(array_ptr);
- array_ref = array_ptr;
- if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
- ZVAL_NEW_REF(array_ptr, array_ptr);
- array_ref = array_ptr;
- array_ptr = Z_REFVAL_P(array_ptr);
- }
- }
- }
if (Z_REFCOUNTED_P(array_ref)) Z_ADDREF_P(array_ref);
}
} else {
array_ptr = array_ref = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (Z_ISREF_P(array_ref)) {
- array_ptr = Z_REFVAL_P(array_ptr);
- }
+ ZVAL_DEREF(array_ptr);
if (1) { /* IS_TMP_VAR */
zval tmp;
SAVE_OPLINE();
expr = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (Z_ISREF_P(expr)) {
- expr = Z_REFVAL_P(expr);
- }
if (Z_TYPE_P(expr) == IS_OBJECT && Z_OBJ_HT_P(expr)->get_class_entry) {
result = instanceof_function(Z_OBJCE_P(expr), Z_CE_P(EX_VAR(opline->op2.var)) TSRMLS_CC);
} else {
}
object = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
(opline->extended_value & ZEND_QUICK_SET)) {
if (Z_TYPE_P(EX_VAR_NUM(opline->op1.var)) != IS_UNDEF) {
value = EX_VAR_NUM(opline->op1.var);
- if (Z_ISREF_P(value)) {
- value = Z_REFVAL_P(value);
- }
+ ZVAL_DEREF(value);
} else {
isset = 0;
}
}
if (Z_TYPE_P(var) != IS_STRING) {
- if (Z_ISREF_P(var)) {
- var = Z_REFVAL_P(var);
- }
+ ZVAL_DEREF(var);
if (Z_TYPE_P(var) != IS_STRING) {
zend_make_printable_zval(var, &var_copy, &use_copy);
}
object = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
}
if (Z_TYPE_P(var) != IS_STRING) {
- if (Z_ISREF_P(var)) {
- var = Z_REFVAL_P(var);
- }
+ ZVAL_DEREF(var);
if (Z_TYPE_P(var) != IS_STRING) {
zend_make_printable_zval(var, &var_copy, &use_copy);
}
object = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
(opline->extended_value & ZEND_QUICK_SET)) {
if (Z_TYPE_P(EX_VAR_NUM(opline->op1.var)) != IS_UNDEF) {
value = EX_VAR_NUM(opline->op1.var);
- if (Z_ISREF_P(value)) {
- value = Z_REFVAL_P(value);
- }
+ ZVAL_DEREF(value);
} else {
isset = 0;
}
(opline->extended_value & ZEND_QUICK_SET)) {
if (Z_TYPE_P(EX_VAR_NUM(opline->op1.var)) != IS_UNDEF) {
value = EX_VAR_NUM(opline->op1.var);
- if (Z_ISREF_P(value)) {
- value = Z_REFVAL_P(value);
- }
+ ZVAL_DEREF(value);
} else {
isset = 0;
}
}
if (Z_TYPE_P(var) != IS_STRING) {
- if (Z_ISREF_P(var)) {
- var = Z_REFVAL_P(var);
- }
+ ZVAL_DEREF(var);
if (Z_TYPE_P(var) != IS_STRING) {
zend_make_printable_zval(var, &var_copy, &use_copy);
}
object = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
ZEND_VM_NEXT_OPCODE();
}
- if (Z_ISREF_P(var_ptr)) {
+ if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
var_ptr = Z_REFVAL_P(var_ptr);
} else {
SEPARATE_ZVAL(var_ptr);
ZEND_VM_NEXT_OPCODE();
}
- if (Z_ISREF_P(var_ptr)) {
+ if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
var_ptr = Z_REFVAL_P(var_ptr);
} else {
SEPARATE_ZVAL(var_ptr);
retval = EX_VAR(opline->result.var);
- if (Z_ISREF_P(var_ptr)) {
+ if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
var_ptr = Z_REFVAL_P(var_ptr);
ZVAL_DUP(retval, var_ptr);
} else {
retval = EX_VAR(opline->result.var);
- if (Z_ISREF_P(var_ptr)) {
+ if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
var_ptr = Z_REFVAL_P(var_ptr);
ZVAL_DUP(retval, var_ptr);
} else {
zval *z;
SAVE_OPLINE();
- z = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-
- if (UNEXPECTED(Z_ISREF_P(z))) {
- z = Z_REFVAL_P(z);
- }
+ z = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
zend_print_variable(z);
zval *result = EX_VAR(opline->result.var);
SAVE_OPLINE();
- expr = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-
- if (Z_ISREF_P(expr)) {
- expr = Z_REFVAL_P(expr);
- }
+ expr = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (opline->extended_value != IS_STRING) {
ZVAL_COPY_VALUE(result, expr);
if (!0) {
if ((IS_VAR == IS_CV || IS_VAR == IS_VAR) &&
(opline->extended_value & ZEND_FE_RESET_VARIABLE)) {
array_ptr = array_ref = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (Z_ISREF_P(array_ref)) {
- array_ptr = Z_REFVAL_P(array_ptr);
- }
- if (Z_TYPE_P(array_ptr) == IS_NULL) {
+ ZVAL_DEREF(array_ptr);
+ if (Z_TYPE_P(array_ptr) == IS_ARRAY) {
+ if (!Z_ISREF_P(array_ref)) {
+ SEPARATE_ZVAL(array_ptr);
+ array_ref = array_ptr;
+ if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
+ ZVAL_NEW_REF(array_ptr, array_ptr);
+ array_ref = array_ptr;
+ array_ptr = Z_REFVAL_P(array_ptr);
+ }
+ }
+ if (Z_REFCOUNTED_P(array_ref)) Z_ADDREF_P(array_ref);
} else if (Z_TYPE_P(array_ptr) == IS_OBJECT) {
if(Z_OBJ_HT_P(array_ptr)->get_class_entry == NULL) {
zend_error(E_WARNING, "foreach() cannot iterate over objects without PHP class");
}
array_ref = array_ptr;
} else {
- if (Z_TYPE_P(array_ptr) == IS_ARRAY) {
- if (!Z_ISREF_P(array_ref)) {
- SEPARATE_ZVAL(array_ptr);
- array_ref = array_ptr;
- if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
- ZVAL_NEW_REF(array_ptr, array_ptr);
- array_ref = array_ptr;
- array_ptr = Z_REFVAL_P(array_ptr);
- }
- }
- }
if (Z_REFCOUNTED_P(array_ref)) Z_ADDREF_P(array_ref);
}
} else {
array_ptr = array_ref = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (Z_ISREF_P(array_ref)) {
- array_ptr = Z_REFVAL_P(array_ptr);
- }
+ ZVAL_DEREF(array_ptr);
if (0) { /* IS_TMP_VAR */
zval tmp;
zval *key = NULL;
array = array_ref = EX_VAR(opline->op1.var);
- if (Z_ISREF_P(array)) {
- array = Z_REFVAL_P(array);
- }
+ ZVAL_DEREF(array);
if (opline->extended_value & ZEND_FE_FETCH_WITH_KEY) {
key = EX_VAR((opline+1)->result.var);
}
zend_bool result;
SAVE_OPLINE();
- expr = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ expr = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (Z_ISREF_P(expr)) {
- expr = Z_REFVAL_P(expr);
- }
if (Z_TYPE_P(expr) == IS_OBJECT && Z_OBJ_HT_P(expr)->get_class_entry) {
result = instanceof_function(Z_OBJCE_P(expr), Z_CE_P(EX_VAR(opline->op2.var)) TSRMLS_CC);
} else {
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ container = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
offset = opline->op2.zv;
- if (UNEXPECTED(Z_ISREF_P(container))) {
- container = Z_REFVAL_P(container);
- }
-
if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
zend_error(E_NOTICE, "Trying to get property of non-object");
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(object_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
- if (Z_ISREF_P(object_ptr) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
+ if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
object_ptr = Z_REFVAL_P(object_ptr);
}
if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
- object = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ object = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
(opline->extended_value & ZEND_QUICK_SET)) {
if (Z_TYPE_P(EX_VAR_NUM(opline->op1.var)) != IS_UNDEF) {
value = EX_VAR_NUM(opline->op1.var);
- if (Z_ISREF_P(value)) {
- value = Z_REFVAL_P(value);
- }
+ ZVAL_DEREF(value);
} else {
isset = 0;
}
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ container = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
offset = opline->op2.zv;
- if (Z_ISREF_P(container)) {
- container = Z_REFVAL_P(container);
- }
if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) {
HashTable *ht;
int isset = 0;
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ container = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- if (UNEXPECTED(Z_ISREF_P(container))) {
- container = Z_REFVAL_P(container);
- }
-
if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
zend_error(E_NOTICE, "Trying to get property of non-object");
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(object_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
- if (Z_ISREF_P(object_ptr) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
+ if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
object_ptr = Z_REFVAL_P(object_ptr);
}
if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
- object = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ object = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ container = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- if (Z_ISREF_P(container)) {
- container = Z_REFVAL_P(container);
- }
if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) {
HashTable *ht;
int isset = 0;
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ container = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- if (UNEXPECTED(Z_ISREF_P(container))) {
- container = Z_REFVAL_P(container);
- }
-
if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
zend_error(E_NOTICE, "Trying to get property of non-object");
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(object_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
- if (Z_ISREF_P(object_ptr) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
+ if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
object_ptr = Z_REFVAL_P(object_ptr);
}
if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
- object = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ object = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
(opline->extended_value & ZEND_QUICK_SET)) {
if (Z_TYPE_P(EX_VAR_NUM(opline->op1.var)) != IS_UNDEF) {
value = EX_VAR_NUM(opline->op1.var);
- if (Z_ISREF_P(value)) {
- value = Z_REFVAL_P(value);
- }
+ ZVAL_DEREF(value);
} else {
isset = 0;
}
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ container = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- if (Z_ISREF_P(container)) {
- container = Z_REFVAL_P(container);
- }
if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) {
HashTable *ht;
int isset = 0;
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(object_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
- if (Z_ISREF_P(object_ptr) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
+ if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
object_ptr = Z_REFVAL_P(object_ptr);
}
if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
(opline->extended_value & ZEND_QUICK_SET)) {
if (Z_TYPE_P(EX_VAR_NUM(opline->op1.var)) != IS_UNDEF) {
value = EX_VAR_NUM(opline->op1.var);
- if (Z_ISREF_P(value)) {
- value = Z_REFVAL_P(value);
- }
+ ZVAL_DEREF(value);
} else {
isset = 0;
}
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ container = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
- if (UNEXPECTED(Z_ISREF_P(container))) {
- container = Z_REFVAL_P(container);
- }
-
if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
zend_error(E_NOTICE, "Trying to get property of non-object");
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(object_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
- if (Z_ISREF_P(object_ptr) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
+ if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
object_ptr = Z_REFVAL_P(object_ptr);
}
if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
- object = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ object = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ container = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
- if (Z_ISREF_P(container)) {
- container = Z_REFVAL_P(container);
- }
if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) {
HashTable *ht;
int isset = 0;
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
container = _get_obj_zval_ptr_unused(TSRMLS_C);
offset = opline->op2.zv;
- if (UNEXPECTED(Z_ISREF_P(container))) {
- container = Z_REFVAL_P(container);
- }
-
if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
zend_error(E_NOTICE, "Trying to get property of non-object");
}
object = _get_obj_zval_ptr_unused(TSRMLS_C);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
container = _get_obj_zval_ptr_unused(TSRMLS_C);
offset = opline->op2.zv;
- if (Z_ISREF_P(container)) {
- container = Z_REFVAL_P(container);
- }
if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) {
HashTable *ht;
int isset = 0;
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
container = _get_obj_zval_ptr_unused(TSRMLS_C);
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- if (UNEXPECTED(Z_ISREF_P(container))) {
- container = Z_REFVAL_P(container);
- }
-
if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
zend_error(E_NOTICE, "Trying to get property of non-object");
}
if (Z_TYPE_P(var) != IS_STRING) {
- if (Z_ISREF_P(var)) {
- var = Z_REFVAL_P(var);
- }
+ ZVAL_DEREF(var);
if (Z_TYPE_P(var) != IS_STRING) {
zend_make_printable_zval(var, &var_copy, &use_copy);
}
object = _get_obj_zval_ptr_unused(TSRMLS_C);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
container = _get_obj_zval_ptr_unused(TSRMLS_C);
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- if (Z_ISREF_P(container)) {
- container = Z_REFVAL_P(container);
- }
if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) {
HashTable *ht;
int isset = 0;
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
container = _get_obj_zval_ptr_unused(TSRMLS_C);
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- if (UNEXPECTED(Z_ISREF_P(container))) {
- container = Z_REFVAL_P(container);
- }
-
if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
zend_error(E_NOTICE, "Trying to get property of non-object");
}
if (Z_TYPE_P(var) != IS_STRING) {
- if (Z_ISREF_P(var)) {
- var = Z_REFVAL_P(var);
- }
+ ZVAL_DEREF(var);
if (Z_TYPE_P(var) != IS_STRING) {
zend_make_printable_zval(var, &var_copy, &use_copy);
}
object = _get_obj_zval_ptr_unused(TSRMLS_C);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
container = _get_obj_zval_ptr_unused(TSRMLS_C);
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- if (Z_ISREF_P(container)) {
- container = Z_REFVAL_P(container);
- }
if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) {
HashTable *ht;
int isset = 0;
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
container = _get_obj_zval_ptr_unused(TSRMLS_C);
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
- if (UNEXPECTED(Z_ISREF_P(container))) {
- container = Z_REFVAL_P(container);
- }
-
if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
zend_error(E_NOTICE, "Trying to get property of non-object");
}
if (Z_TYPE_P(var) != IS_STRING) {
- if (Z_ISREF_P(var)) {
- var = Z_REFVAL_P(var);
- }
+ ZVAL_DEREF(var);
if (Z_TYPE_P(var) != IS_STRING) {
zend_make_printable_zval(var, &var_copy, &use_copy);
}
object = _get_obj_zval_ptr_unused(TSRMLS_C);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
container = _get_obj_zval_ptr_unused(TSRMLS_C);
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
- if (Z_ISREF_P(container)) {
- container = Z_REFVAL_P(container);
- }
if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) {
HashTable *ht;
int isset = 0;
ZEND_VM_NEXT_OPCODE();
}
- if (Z_ISREF_P(var_ptr)) {
+ if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
var_ptr = Z_REFVAL_P(var_ptr);
} else {
SEPARATE_ZVAL(var_ptr);
ZEND_VM_NEXT_OPCODE();
}
- if (Z_ISREF_P(var_ptr)) {
+ if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
var_ptr = Z_REFVAL_P(var_ptr);
} else {
SEPARATE_ZVAL(var_ptr);
retval = EX_VAR(opline->result.var);
- if (Z_ISREF_P(var_ptr)) {
+ if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
var_ptr = Z_REFVAL_P(var_ptr);
ZVAL_DUP(retval, var_ptr);
} else {
retval = EX_VAR(opline->result.var);
- if (Z_ISREF_P(var_ptr)) {
+ if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
var_ptr = Z_REFVAL_P(var_ptr);
ZVAL_DUP(retval, var_ptr);
} else {
zval *z;
SAVE_OPLINE();
- z = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
-
- if (UNEXPECTED(Z_ISREF_P(z))) {
- z = Z_REFVAL_P(z);
- }
+ z = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
zend_print_variable(z);
zval *result = EX_VAR(opline->result.var);
SAVE_OPLINE();
- expr = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
-
- if (Z_ISREF_P(expr)) {
- expr = Z_REFVAL_P(expr);
- }
+ expr = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
if (opline->extended_value != IS_STRING) {
ZVAL_COPY_VALUE(result, expr);
if (!0) {
if ((IS_CV == IS_CV || IS_CV == IS_VAR) &&
(opline->extended_value & ZEND_FE_RESET_VARIABLE)) {
array_ptr = array_ref = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
- if (Z_ISREF_P(array_ref)) {
- array_ptr = Z_REFVAL_P(array_ptr);
- }
- if (Z_TYPE_P(array_ptr) == IS_NULL) {
+ ZVAL_DEREF(array_ptr);
+ if (Z_TYPE_P(array_ptr) == IS_ARRAY) {
+ if (!Z_ISREF_P(array_ref)) {
+ SEPARATE_ZVAL(array_ptr);
+ array_ref = array_ptr;
+ if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
+ ZVAL_NEW_REF(array_ptr, array_ptr);
+ array_ref = array_ptr;
+ array_ptr = Z_REFVAL_P(array_ptr);
+ }
+ }
+ if (Z_REFCOUNTED_P(array_ref)) Z_ADDREF_P(array_ref);
} else if (Z_TYPE_P(array_ptr) == IS_OBJECT) {
if(Z_OBJ_HT_P(array_ptr)->get_class_entry == NULL) {
zend_error(E_WARNING, "foreach() cannot iterate over objects without PHP class");
}
array_ref = array_ptr;
} else {
- if (Z_TYPE_P(array_ptr) == IS_ARRAY) {
- if (!Z_ISREF_P(array_ref)) {
- SEPARATE_ZVAL(array_ptr);
- array_ref = array_ptr;
- if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
- ZVAL_NEW_REF(array_ptr, array_ptr);
- array_ref = array_ptr;
- array_ptr = Z_REFVAL_P(array_ptr);
- }
- }
- }
if (Z_REFCOUNTED_P(array_ref)) Z_ADDREF_P(array_ref);
}
} else {
array_ptr = array_ref = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
- if (Z_ISREF_P(array_ref)) {
- array_ptr = Z_REFVAL_P(array_ptr);
- }
+ ZVAL_DEREF(array_ptr);
if (0) { /* IS_TMP_VAR */
zval tmp;
zend_bool result;
SAVE_OPLINE();
- expr = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+ expr = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
- if (Z_ISREF_P(expr)) {
- expr = Z_REFVAL_P(expr);
- }
if (Z_TYPE_P(expr) == IS_OBJECT && Z_OBJ_HT_P(expr)->get_class_entry) {
result = instanceof_function(Z_OBJCE_P(expr), Z_CE_P(EX_VAR(opline->op2.var)) TSRMLS_CC);
} else {
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+ container = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
offset = opline->op2.zv;
- if (UNEXPECTED(Z_ISREF_P(container))) {
- container = Z_REFVAL_P(container);
- }
-
if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
zend_error(E_NOTICE, "Trying to get property of non-object");
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(object_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
- if (Z_ISREF_P(object_ptr) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
+ if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
object_ptr = Z_REFVAL_P(object_ptr);
}
if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
- object = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+ object = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
(opline->extended_value & ZEND_QUICK_SET)) {
if (Z_TYPE_P(EX_VAR_NUM(opline->op1.var)) != IS_UNDEF) {
value = EX_VAR_NUM(opline->op1.var);
- if (Z_ISREF_P(value)) {
- value = Z_REFVAL_P(value);
- }
+ ZVAL_DEREF(value);
} else {
isset = 0;
}
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC);
+ container = _get_zval_ptr_cv_deref_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC);
offset = opline->op2.zv;
- if (Z_ISREF_P(container)) {
- container = Z_REFVAL_P(container);
- }
if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) {
HashTable *ht;
int isset = 0;
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+ container = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- if (UNEXPECTED(Z_ISREF_P(container))) {
- container = Z_REFVAL_P(container);
- }
-
if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
zend_error(E_NOTICE, "Trying to get property of non-object");
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(object_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
- if (Z_ISREF_P(object_ptr) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
+ if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
object_ptr = Z_REFVAL_P(object_ptr);
}
if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
- object = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+ object = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC);
+ container = _get_zval_ptr_cv_deref_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC);
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- if (Z_ISREF_P(container)) {
- container = Z_REFVAL_P(container);
- }
if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) {
HashTable *ht;
int isset = 0;
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+ container = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- if (UNEXPECTED(Z_ISREF_P(container))) {
- container = Z_REFVAL_P(container);
- }
-
if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
zend_error(E_NOTICE, "Trying to get property of non-object");
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(object_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
- if (Z_ISREF_P(object_ptr) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
+ if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
object_ptr = Z_REFVAL_P(object_ptr);
}
if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
- object = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+ object = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
(opline->extended_value & ZEND_QUICK_SET)) {
if (Z_TYPE_P(EX_VAR_NUM(opline->op1.var)) != IS_UNDEF) {
value = EX_VAR_NUM(opline->op1.var);
- if (Z_ISREF_P(value)) {
- value = Z_REFVAL_P(value);
- }
+ ZVAL_DEREF(value);
} else {
isset = 0;
}
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC);
+ container = _get_zval_ptr_cv_deref_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC);
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- if (Z_ISREF_P(container)) {
- container = Z_REFVAL_P(container);
- }
if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) {
HashTable *ht;
int isset = 0;
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(object_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
- if (Z_ISREF_P(object_ptr) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
+ if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
object_ptr = Z_REFVAL_P(object_ptr);
}
if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
(opline->extended_value & ZEND_QUICK_SET)) {
if (Z_TYPE_P(EX_VAR_NUM(opline->op1.var)) != IS_UNDEF) {
value = EX_VAR_NUM(opline->op1.var);
- if (Z_ISREF_P(value)) {
- value = Z_REFVAL_P(value);
- }
+ ZVAL_DEREF(value);
} else {
isset = 0;
}
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
make_real_object(object TSRMLS_CC);
}
- if (UNEXPECTED(Z_ISREF_P(object))) {
- object = Z_REFVAL_P(object);
- }
+ ZVAL_DEREF(object);
value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
Z_OBJ_HANDLER_P(var_ptr, set)(var_ptr, objval TSRMLS_CC);
zval_ptr_dtor(objval);
} else {
-//???deref
- if (Z_ISREF_P(var_ptr)) {
- var_ptr = Z_REFVAL_P(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
binary_op(var_ptr, var_ptr, value TSRMLS_CC);
}
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+ container = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
- if (UNEXPECTED(Z_ISREF_P(container))) {
- container = Z_REFVAL_P(container);
- }
-
if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
zend_error(E_NOTICE, "Trying to get property of non-object");
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(object_ptr) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
- if (Z_ISREF_P(object_ptr) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
+ if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
object_ptr = Z_REFVAL_P(object_ptr);
}
if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
zend_error_noreturn(E_ERROR, "Method name must be a string");
}
- object = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+ object = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+ ZVAL_COPY_VALUE(&call->object, object);
+/*???
if (Z_ISREF_P(object)) {
ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object));
} else {
ZVAL_COPY_VALUE(&call->object, object);
}
+*/
if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) &&
EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) {
zval *offset;
SAVE_OPLINE();
- container = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC);
+ container = _get_zval_ptr_cv_deref_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC);
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
- if (Z_ISREF_P(container)) {
- container = Z_REFVAL_P(container);
- }
if (Z_TYPE_P(container) == IS_ARRAY && !prop_dim) {
HashTable *ht;
int isset = 0;