if (UNEXPECTED(EG(exception) != NULL)) {
zend_throw_exception_internal(NULL TSRMLS_CC);
- if (RETURN_VALUE_USED(opline) /*???&& EX_VAR(opline->result.var) */) {
+ if (RETURN_VALUE_USED(opline)) {
zval_ptr_dtor(EX_VAR(opline->result.var));
}
HANDLE_EXCEPTION_LEAVE();
if (UNEXPECTED(EG(exception) != NULL)) {
zend_throw_exception_internal(NULL TSRMLS_CC);
- if (RETURN_VALUE_USED(opline) /*???&& EX_T(opline->result.var).var.ptr*/) {
+ if (RETURN_VALUE_USED(opline)) {
zval_ptr_dtor(EX_VAR(opline->result.var));
}
HANDLE_EXCEPTION();
}
varptr = GET_OP1_ZVAL_PTR(BP_VAR_R);
-//??? if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
-//??? EX_T(opline->op1.var).var.fcall_returned_reference) &&
-//??? (Z_ISREF_P(varptr) || Z_REFCOUNT_P(varptr) == 1)) {
-//??? Z_SET_ISREF_P(varptr);
-//??? if (OP1_TYPE == IS_CV) {
-//??? Z_ADDREF_P(varptr);
-//??? }
-//??? zend_vm_stack_push(varptr TSRMLS_CC);
-//??? } else {
+//???
+#if 0
+ if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
+ EX_T(opline->op1.var).var.fcall_returned_reference) &&
+ (Z_ISREF_P(varptr) || Z_REFCOUNT_P(varptr) == 1)) {
+ Z_SET_ISREF_P(varptr);
+ if (OP1_TYPE == IS_CV) {
+ Z_ADDREF_P(varptr);
+ }
+ zend_vm_stack_push(varptr TSRMLS_CC);
+#else
+ if (Z_ISREF_P(varptr)) {
+ if (OP1_TYPE == IS_CV) {
+ Z_ADDREF_P(varptr);
+ }
+ zend_vm_stack_push(varptr TSRMLS_CC);
+ } else if (!Z_REFCOUNTED_P(varptr) || Z_REFCOUNT_P(varptr) == 1) {
+ ZVAL_NEW_REF(varptr, varptr);
+ if (OP1_TYPE == IS_CV) {
+ Z_ADDREF_P(varptr);
+ }
+ zend_vm_stack_push(varptr TSRMLS_CC);
+#endif
+ } else {
zval val;
if ((opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) ?
}
FREE_OP1_IF_VAR();
zend_vm_stack_push(&val TSRMLS_CC);
-//??? }
+ }
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
if (UNEXPECTED(EG(exception) != NULL)) {
zend_throw_exception_internal(NULL TSRMLS_CC);
- if (RETURN_VALUE_USED(opline) /*???&& EX_VAR(opline->result.var) */) {
+ if (RETURN_VALUE_USED(opline)) {
zval_ptr_dtor(EX_VAR(opline->result.var));
}
HANDLE_EXCEPTION_LEAVE();
if (UNEXPECTED(EG(exception) != NULL)) {
zend_throw_exception_internal(NULL TSRMLS_CC);
- if (RETURN_VALUE_USED(opline) /*???&& EX_T(opline->result.var).var.ptr*/) {
+ if (RETURN_VALUE_USED(opline)) {
zval_ptr_dtor(EX_VAR(opline->result.var));
}
HANDLE_EXCEPTION();
}
varptr = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-//??? if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
-//??? EX_T(opline->op1.var).var.fcall_returned_reference) &&
-//??? (Z_ISREF_P(varptr) || Z_REFCOUNT_P(varptr) == 1)) {
-//??? Z_SET_ISREF_P(varptr);
-//??? if (IS_VAR == IS_CV) {
-//??? Z_ADDREF_P(varptr);
-//??? }
-//??? zend_vm_stack_push(varptr TSRMLS_CC);
-//??? } else {
+//???
+#if 0
+ if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
+ EX_T(opline->op1.var).var.fcall_returned_reference) &&
+ (Z_ISREF_P(varptr) || Z_REFCOUNT_P(varptr) == 1)) {
+ Z_SET_ISREF_P(varptr);
+ if (IS_VAR == IS_CV) {
+ Z_ADDREF_P(varptr);
+ }
+ zend_vm_stack_push(varptr TSRMLS_CC);
+#else
+ if (Z_ISREF_P(varptr)) {
+ if (IS_VAR == IS_CV) {
+ Z_ADDREF_P(varptr);
+ }
+ zend_vm_stack_push(varptr TSRMLS_CC);
+ } else if (!Z_REFCOUNTED_P(varptr) || Z_REFCOUNT_P(varptr) == 1) {
+ ZVAL_NEW_REF(varptr, varptr);
+ if (IS_VAR == IS_CV) {
+ Z_ADDREF_P(varptr);
+ }
+ zend_vm_stack_push(varptr TSRMLS_CC);
+#endif
+ } else {
zval val;
if ((opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) ?
}
zval_ptr_dtor_nogc(free_op1.var);
zend_vm_stack_push(&val TSRMLS_CC);
-//??? }
+ }
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
}
varptr = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
-//??? if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
-//??? EX_T(opline->op1.var).var.fcall_returned_reference) &&
-//??? (Z_ISREF_P(varptr) || Z_REFCOUNT_P(varptr) == 1)) {
-//??? Z_SET_ISREF_P(varptr);
-//??? if (IS_CV == IS_CV) {
-//??? Z_ADDREF_P(varptr);
-//??? }
-//??? zend_vm_stack_push(varptr TSRMLS_CC);
-//??? } else {
+//???
+#if 0
+ if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
+ EX_T(opline->op1.var).var.fcall_returned_reference) &&
+ (Z_ISREF_P(varptr) || Z_REFCOUNT_P(varptr) == 1)) {
+ Z_SET_ISREF_P(varptr);
+ if (IS_CV == IS_CV) {
+ Z_ADDREF_P(varptr);
+ }
+ zend_vm_stack_push(varptr TSRMLS_CC);
+#else
+ if (Z_ISREF_P(varptr)) {
+ if (IS_CV == IS_CV) {
+ Z_ADDREF_P(varptr);
+ }
+ zend_vm_stack_push(varptr TSRMLS_CC);
+ } else if (!Z_REFCOUNTED_P(varptr) || Z_REFCOUNT_P(varptr) == 1) {
+ ZVAL_NEW_REF(varptr, varptr);
+ if (IS_CV == IS_CV) {
+ Z_ADDREF_P(varptr);
+ }
+ zend_vm_stack_push(varptr TSRMLS_CC);
+#endif
+ } else {
zval val;
if ((opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) ?
}
zend_vm_stack_push(&val TSRMLS_CC);
-//??? }
+ }
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}