ZEND_VM_NEXT_OPCODE();
} else {
zend_string *lcname;
-
+ zend_free_op free_op2;
zend_class_entry *called_scope;
zend_object *object;
- zval *function_name_ptr;
SAVE_OPLINE();
- function_name_ptr = function_name = opline->op2.zv;
+ function_name = opline->op2.zv;
- ZVAL_DEREF(function_name);
if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
if (Z_STRVAL_P(function_name)[0] == '\\') {
lcname = zend_string_alloc(Z_STRLEN_P(function_name) - 1, 0);
if (object) {
GC_REFCOUNT(object)++;
}
- if (IS_CONST == IS_VAR && Z_REFCOUNT_P(function_name) == 1 &&
- fbc->common.fn_flags & ZEND_ACC_CLOSURE) {
+ if (IS_CONST == IS_VAR && (fbc->common.fn_flags & ZEND_ACC_CLOSURE)) {
/* Delay closure destruction until its invocation */
- fbc->common.prototype = (zend_function*)Z_OBJ_P(function_name_ptr);
+ fbc->common.prototype = (zend_function*)Z_OBJ_P(free_op2);
} else if (IS_CONST == IS_CV) {
}
zend_free_op free_op2;
zend_class_entry *called_scope;
zend_object *object;
- zval *function_name_ptr;
SAVE_OPLINE();
- function_name_ptr = function_name = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2);
+ function_name = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2);
- ZVAL_DEREF(function_name);
if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
if (Z_STRVAL_P(function_name)[0] == '\\') {
lcname = zend_string_alloc(Z_STRLEN_P(function_name) - 1, 0);
if (object) {
GC_REFCOUNT(object)++;
}
- if (IS_TMP_VAR == IS_VAR && Z_REFCOUNT_P(function_name) == 1 &&
- fbc->common.fn_flags & ZEND_ACC_CLOSURE) {
+ if (IS_TMP_VAR == IS_VAR && (fbc->common.fn_flags & ZEND_ACC_CLOSURE)) {
/* Delay closure destruction until its invocation */
- fbc->common.prototype = (zend_function*)Z_OBJ_P(function_name_ptr);
+ fbc->common.prototype = (zend_function*)Z_OBJ_P(free_op2);
} else if (IS_TMP_VAR == IS_CV) {
zval_ptr_dtor_nogc(free_op2);
}
zend_free_op free_op2;
zend_class_entry *called_scope;
zend_object *object;
- zval *function_name_ptr;
SAVE_OPLINE();
- function_name_ptr = function_name = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
+ function_name = _get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2);
- ZVAL_DEREF(function_name);
if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
if (Z_STRVAL_P(function_name)[0] == '\\') {
lcname = zend_string_alloc(Z_STRLEN_P(function_name) - 1, 0);
if (object) {
GC_REFCOUNT(object)++;
}
- if (IS_VAR == IS_VAR && Z_REFCOUNT_P(function_name) == 1 &&
- fbc->common.fn_flags & ZEND_ACC_CLOSURE) {
+ if (IS_VAR == IS_VAR && (fbc->common.fn_flags & ZEND_ACC_CLOSURE)) {
/* Delay closure destruction until its invocation */
- fbc->common.prototype = (zend_function*)Z_OBJ_P(function_name_ptr);
+ fbc->common.prototype = (zend_function*)Z_OBJ_P(free_op2);
} else if (IS_VAR == IS_CV) {
zval_ptr_dtor_nogc(free_op2);
}
ZEND_VM_NEXT_OPCODE();
} else {
zend_string *lcname;
-
+ zend_free_op free_op2;
zend_class_entry *called_scope;
zend_object *object;
- zval *function_name_ptr;
SAVE_OPLINE();
- function_name_ptr = function_name = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
+ function_name = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
- ZVAL_DEREF(function_name);
if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
if (Z_STRVAL_P(function_name)[0] == '\\') {
lcname = zend_string_alloc(Z_STRLEN_P(function_name) - 1, 0);
if (object) {
GC_REFCOUNT(object)++;
}
- if (IS_CV == IS_VAR && Z_REFCOUNT_P(function_name) == 1 &&
- fbc->common.fn_flags & ZEND_ACC_CLOSURE) {
+ if (IS_CV == IS_VAR && (fbc->common.fn_flags & ZEND_ACC_CLOSURE)) {
/* Delay closure destruction until its invocation */
- fbc->common.prototype = (zend_function*)Z_OBJ_P(function_name_ptr);
+ fbc->common.prototype = (zend_function*)Z_OBJ_P(free_op2);
} else if (IS_CV == IS_CV) {
}
}
if (Z_TYPE_P(var) != IS_STRING) {
- ZVAL_DEREF(var);
+ if (IS_TMP_VAR != IS_TMP_VAR) {
+ ZVAL_DEREF(var);
+ }
if (Z_TYPE_P(var) != IS_STRING) {
use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC);
}
if (Z_TYPE_P(var) != IS_STRING) {
- ZVAL_DEREF(var);
+ if (IS_VAR != IS_TMP_VAR) {
+ ZVAL_DEREF(var);
+ }
if (Z_TYPE_P(var) != IS_STRING) {
use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC);
}
if (Z_TYPE_P(var) != IS_STRING) {
- ZVAL_DEREF(var);
+ if (IS_CV != IS_TMP_VAR) {
+ ZVAL_DEREF(var);
+ }
if (Z_TYPE_P(var) != IS_STRING) {
use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC);
}
if (IS_VAR != IS_UNUSED) {
ZVAL_DEREF(container);
- SEPARATE_ZVAL_NOREF(container);
}
+ SEPARATE_ZVAL_NOREF(container);
offset = opline->op2.zv;
if (IS_VAR != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
}
offset = opline->op2.zv;
- ZVAL_DEREF(container);
+ if (IS_VAR != IS_UNUSED) {
+ ZVAL_DEREF(container);
+ }
if (IS_VAR == IS_UNUSED || Z_TYPE_P(container) == IS_OBJECT) {
if (Z_OBJ_HT_P(container)->unset_property) {
Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC);
}
if (IS_VAR != IS_UNUSED) {
ZVAL_DEREF(container);
- SEPARATE_ZVAL_NOREF(container);
}
+ SEPARATE_ZVAL_NOREF(container);
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2);
if (IS_VAR != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
}
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2);
- ZVAL_DEREF(container);
+ if (IS_VAR != IS_UNUSED) {
+ ZVAL_DEREF(container);
+ }
if (IS_VAR == IS_UNUSED || Z_TYPE_P(container) == IS_OBJECT) {
if (Z_OBJ_HT_P(container)->unset_property) {
Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_TMP_VAR == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC);
}
if (IS_VAR != IS_UNUSED) {
ZVAL_DEREF(container);
- SEPARATE_ZVAL_NOREF(container);
}
+ SEPARATE_ZVAL_NOREF(container);
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
if (IS_VAR != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
}
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- ZVAL_DEREF(container);
+ if (IS_VAR != IS_UNUSED) {
+ ZVAL_DEREF(container);
+ }
if (IS_VAR == IS_UNUSED || Z_TYPE_P(container) == IS_OBJECT) {
if (Z_OBJ_HT_P(container)->unset_property) {
Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_VAR == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC);
}
if (IS_VAR != IS_UNUSED) {
ZVAL_DEREF(container);
- SEPARATE_ZVAL_NOREF(container);
}
+ SEPARATE_ZVAL_NOREF(container);
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
if (IS_VAR != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
}
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
- ZVAL_DEREF(container);
+ if (IS_VAR != IS_UNUSED) {
+ ZVAL_DEREF(container);
+ }
if (IS_VAR == IS_UNUSED || Z_TYPE_P(container) == IS_OBJECT) {
if (Z_OBJ_HT_P(container)->unset_property) {
Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC);
}
if (IS_UNUSED != IS_UNUSED) {
ZVAL_DEREF(container);
- SEPARATE_ZVAL_NOREF(container);
}
+ SEPARATE_ZVAL_NOREF(container);
offset = opline->op2.zv;
if (IS_UNUSED != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
}
offset = opline->op2.zv;
- ZVAL_DEREF(container);
+ if (IS_UNUSED != IS_UNUSED) {
+ ZVAL_DEREF(container);
+ }
if (IS_UNUSED == IS_UNUSED || Z_TYPE_P(container) == IS_OBJECT) {
if (Z_OBJ_HT_P(container)->unset_property) {
Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC);
}
if (Z_TYPE_P(var) != IS_STRING) {
- ZVAL_DEREF(var);
+ if (IS_TMP_VAR != IS_TMP_VAR) {
+ ZVAL_DEREF(var);
+ }
if (Z_TYPE_P(var) != IS_STRING) {
use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC);
}
if (IS_UNUSED != IS_UNUSED) {
ZVAL_DEREF(container);
- SEPARATE_ZVAL_NOREF(container);
}
+ SEPARATE_ZVAL_NOREF(container);
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2);
if (IS_UNUSED != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
}
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2);
- ZVAL_DEREF(container);
+ if (IS_UNUSED != IS_UNUSED) {
+ ZVAL_DEREF(container);
+ }
if (IS_UNUSED == IS_UNUSED || Z_TYPE_P(container) == IS_OBJECT) {
if (Z_OBJ_HT_P(container)->unset_property) {
Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_TMP_VAR == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC);
}
if (Z_TYPE_P(var) != IS_STRING) {
- ZVAL_DEREF(var);
+ if (IS_VAR != IS_TMP_VAR) {
+ ZVAL_DEREF(var);
+ }
if (Z_TYPE_P(var) != IS_STRING) {
use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC);
}
if (IS_UNUSED != IS_UNUSED) {
ZVAL_DEREF(container);
- SEPARATE_ZVAL_NOREF(container);
}
+ SEPARATE_ZVAL_NOREF(container);
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
if (IS_UNUSED != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
}
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- ZVAL_DEREF(container);
+ if (IS_UNUSED != IS_UNUSED) {
+ ZVAL_DEREF(container);
+ }
if (IS_UNUSED == IS_UNUSED || Z_TYPE_P(container) == IS_OBJECT) {
if (Z_OBJ_HT_P(container)->unset_property) {
Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_VAR == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC);
}
if (Z_TYPE_P(var) != IS_STRING) {
- ZVAL_DEREF(var);
+ if (IS_CV != IS_TMP_VAR) {
+ ZVAL_DEREF(var);
+ }
if (Z_TYPE_P(var) != IS_STRING) {
use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC);
}
if (IS_UNUSED != IS_UNUSED) {
ZVAL_DEREF(container);
- SEPARATE_ZVAL_NOREF(container);
}
+ SEPARATE_ZVAL_NOREF(container);
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
if (IS_UNUSED != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
}
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
- ZVAL_DEREF(container);
+ if (IS_UNUSED != IS_UNUSED) {
+ ZVAL_DEREF(container);
+ }
if (IS_UNUSED == IS_UNUSED || Z_TYPE_P(container) == IS_OBJECT) {
if (Z_OBJ_HT_P(container)->unset_property) {
Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC);
}
if (IS_CV != IS_UNUSED) {
ZVAL_DEREF(container);
- SEPARATE_ZVAL_NOREF(container);
}
+ SEPARATE_ZVAL_NOREF(container);
offset = opline->op2.zv;
if (IS_CV != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
}
offset = opline->op2.zv;
- ZVAL_DEREF(container);
+ if (IS_CV != IS_UNUSED) {
+ ZVAL_DEREF(container);
+ }
if (IS_CV == IS_UNUSED || Z_TYPE_P(container) == IS_OBJECT) {
if (Z_OBJ_HT_P(container)->unset_property) {
Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC);
}
if (IS_CV != IS_UNUSED) {
ZVAL_DEREF(container);
- SEPARATE_ZVAL_NOREF(container);
}
+ SEPARATE_ZVAL_NOREF(container);
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2);
if (IS_CV != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
}
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2);
- ZVAL_DEREF(container);
+ if (IS_CV != IS_UNUSED) {
+ ZVAL_DEREF(container);
+ }
if (IS_CV == IS_UNUSED || Z_TYPE_P(container) == IS_OBJECT) {
if (Z_OBJ_HT_P(container)->unset_property) {
Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_TMP_VAR == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC);
}
if (IS_CV != IS_UNUSED) {
ZVAL_DEREF(container);
- SEPARATE_ZVAL_NOREF(container);
}
+ SEPARATE_ZVAL_NOREF(container);
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
if (IS_CV != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
}
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- ZVAL_DEREF(container);
+ if (IS_CV != IS_UNUSED) {
+ ZVAL_DEREF(container);
+ }
if (IS_CV == IS_UNUSED || Z_TYPE_P(container) == IS_OBJECT) {
if (Z_OBJ_HT_P(container)->unset_property) {
Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_VAR == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC);
}
if (IS_CV != IS_UNUSED) {
ZVAL_DEREF(container);
- SEPARATE_ZVAL_NOREF(container);
}
+ SEPARATE_ZVAL_NOREF(container);
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
if (IS_CV != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
}
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
- ZVAL_DEREF(container);
+ if (IS_CV != IS_UNUSED) {
+ ZVAL_DEREF(container);
+ }
if (IS_CV == IS_UNUSED || Z_TYPE_P(container) == IS_OBJECT) {
if (Z_OBJ_HT_P(container)->unset_property) {
Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC);