com php-src: Rewrite code to use ZEND_VM_JMP() instea d of repeated ZEND_VM_INC_OPCODE() calls: Zend/zend_vm_def.h Zend/zend_vm_execute.h

From: Date: Sat, 12 Jul 2014 14:40:27 +0000
Subject: com php-src: Rewrite code to use ZEND_VM_JMP() instea d of repeated ZEND_VM_INC_OPCODE() calls: Zend/zend_vm_def.h Zend/zend_vm_execute.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-82129@lists.php.net to get a copy of this message
Commit: a49ca6fde80021ae4a95b6b483d51e871850a0a8 Author: Timm Friebe <thekid@thekid.de> Sat, 12 Jul 2014 16:40:27 +0200 Parents: a9653b613e5dffb9e280802286143b8ebda448f0 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=a49ca6fde80021ae4a95b6b483d51e871850a0a8 Log: Rewrite code to use ZEND_VM_JMP() instead of repeated ZEND_VM_INC_OPCODE() calls Changed paths: M Zend/zend_vm_def.h M Zend/zend_vm_execute.h

diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 42d3f60..5346f86 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2477,9 +2477,8 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV) /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -2487,12 +2486,11 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV) EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 9db7aed..52a9988 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -9333,9 +9333,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -9343,12 +9342,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -10226,9 +10224,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -10236,12 +10233,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -11120,9 +11116,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -11130,12 +11125,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -12594,9 +12588,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_ /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -12604,12 +12597,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_ EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -15861,9 +15853,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -15871,12 +15862,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -18236,9 +18226,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -18246,12 +18235,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -20572,9 +20560,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -20582,12 +20569,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -24058,9 +24044,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_ /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -24068,12 +24053,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_ EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -25728,9 +25712,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -25738,12 +25721,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -27164,9 +27146,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPC /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -27174,12 +27155,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPC EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -28506,9 +28486,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPC /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -28516,12 +28495,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPC EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -30276,9 +30254,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -30286,12 +30263,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -33543,9 +33519,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -33553,12 +33528,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -35683,9 +35657,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_ /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -35693,12 +35666,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_ EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -37878,9 +37850,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_ /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -37888,12 +37859,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_ EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -41074,9 +41044,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H /* No exception raised: Skip over arguments until fcall opcode with correct * nesting level. Return NULL (except when return value unused) */ do { - ZEND_VM_INC_OPCODE(); opline++; - } while (opline->opcode == ZEND_DO_FCALL_BY_NAME ? opline->op2.num > nesting : 1); + } while (opline->opcode != ZEND_DO_FCALL_BY_NAME || opline->op2.num > nesting); if (RETURN_VALUE_USED(opline)) { ALLOC_INIT_ZVAL(EX_T(opline->result.var).var.ptr); @@ -41084,12 +41053,11 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } + /* We've skipped EXT_FCALL_BEGIND, so also skip the ending opcode */ if ((opline + 1)->opcode == ZEND_EXT_FCALL_END) { - ZEND_VM_INC_OPCODE(); + opline++; } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + ZEND_VM_JMP(++opline); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
« previous php.cvs (#82129) next »