]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.4'
authorNikita Popov <nikita.ppv@gmail.com>
Wed, 4 Sep 2019 13:33:16 +0000 (15:33 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Wed, 4 Sep 2019 13:33:16 +0000 (15:33 +0200)
1  2 
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index b58130c6d50d4537be2785b4f48a22f97266d88c,428e2a12b46cc48728ec8da0605acd9ac5bbfbdb..102a81cb92abff169b011a6319b745f5a4dde954
@@@ -4186,10 -4178,7 +4196,8 @@@ ZEND_VM_C_LABEL(fcall_except)
                        ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
                        zend_execute_ex(call);
                }
 -      } else if (EXPECTED(fbc->type < ZEND_USER_FUNCTION)) {
 +      } else {
-               zval retval;
 +              ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
                call->prev_execute_data = execute_data;
                EG(current_execute_data) = call;
  
@@@ -4228,9 -4213,21 +4237,8 @@@ ZEND_VM_C_LABEL(fcall_end)
                if (!RETURN_VALUE_USED(opline)) {
                        i_zval_ptr_dtor(ret);
                }
 -      } else { /* ZEND_OVERLOADED_FUNCTION */
 -              ret = RETURN_VALUE_USED(opline) ? EX_VAR(opline->result.var) : &retval;
 -
 -              call->prev_execute_data = execute_data;
 -
 -              if (UNEXPECTED(!zend_do_fcall_overloaded(call, ret))) {
 -                      UNDEF_RESULT();
 -                      HANDLE_EXCEPTION();
 -              }
 -
 -              if (!RETURN_VALUE_USED(opline)) {
 -                      zval_ptr_dtor(ret);
 -              }
        }
  
- ZEND_VM_C_LABEL(fcall_end):
        if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) {
                OBJ_RELEASE(Z_OBJ(call->This));
        }
@@@ -8293,8 -8297,8 +8301,7 @@@ ZEND_VM_HANDLER(158, ZEND_CALL_TRAMPOLI
  
                EG(current_execute_data) = call->prev_execute_data;
  
 -ZEND_VM_C_LABEL(call_trampoline_end):
                zend_vm_stack_free_args(call);
                if (ret == &retval) {
                        zval_ptr_dtor(ret);
                }
index 2585277ab26df2327611ef703ceb5bdb59562b5f,47f7d1e15e1768676ad74307f9c8a8a5462d1d51..75db1ba9318c2257f9fe41e1f2d5ada7f4c1701a
@@@ -1598,10 -1600,7 +1614,8 @@@ fcall_except
                        ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
                        zend_execute_ex(call);
                }
 -      } else if (EXPECTED(fbc->type < ZEND_USER_FUNCTION)) {
 +      } else {
-               zval retval;
 +              ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
                call->prev_execute_data = execute_data;
                EG(current_execute_data) = call;
  
@@@ -1640,9 -1635,21 +1655,8 @@@ fcall_end
                if (!0) {
                        i_zval_ptr_dtor(ret);
                }
 -      } else { /* ZEND_OVERLOADED_FUNCTION */
 -              ret = 0 ? EX_VAR(opline->result.var) : &retval;
 -
 -              call->prev_execute_data = execute_data;
 -
 -              if (UNEXPECTED(!zend_do_fcall_overloaded(call, ret))) {
 -                      UNDEF_RESULT();
 -                      HANDLE_EXCEPTION();
 -              }
 -
 -              if (!0) {
 -                      zval_ptr_dtor(ret);
 -              }
        }
  
- fcall_end:
        if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) {
                OBJ_RELEASE(Z_OBJ(call->This));
        }
@@@ -1701,10 -1712,7 +1719,8 @@@ fcall_except
                        ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
                        zend_execute_ex(call);
                }
 -      } else if (EXPECTED(fbc->type < ZEND_USER_FUNCTION)) {
 +      } else {
-               zval retval;
 +              ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
                call->prev_execute_data = execute_data;
                EG(current_execute_data) = call;
  
@@@ -1743,9 -1747,21 +1760,8 @@@ fcall_end
                if (!1) {
                        i_zval_ptr_dtor(ret);
                }
 -      } else { /* ZEND_OVERLOADED_FUNCTION */
 -              ret = 1 ? EX_VAR(opline->result.var) : &retval;
 -
 -              call->prev_execute_data = execute_data;
 -
 -              if (UNEXPECTED(!zend_do_fcall_overloaded(call, ret))) {
 -                      UNDEF_RESULT();
 -                      HANDLE_EXCEPTION();
 -              }
 -
 -              if (!1) {
 -                      zval_ptr_dtor(ret);
 -              }
        }
  
- fcall_end:
        if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) {
                OBJ_RELEASE(Z_OBJ(call->This));
        }
@@@ -2805,8 -2822,8 +2821,7 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
  
                EG(current_execute_data) = call->prev_execute_data;
  
 -call_trampoline_end:
                zend_vm_stack_free_args(call);
                if (ret == &retval) {
                        zval_ptr_dtor(ret);
                }