Merge branch 'PHP-7.1'

* PHP-7.1:
  Micro optimizations
This commit is contained in:
Dmitry Stogov 2016-12-06 10:01:38 +03:00
commit a722970033
2 changed files with 28 additions and 48 deletions

View File

@ -2608,11 +2608,9 @@ ZEND_VM_HANDLER(45, ZEND_JMPZNZ, CONST|TMPVAR|CV, JMP_ADDR, JMP_ADDR)
ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
ZEND_VM_CONTINUE(); ZEND_VM_CONTINUE();
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) { } else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
if (OP1_TYPE == IS_CV) { if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
if (UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) { SAVE_OPLINE();
SAVE_OPLINE(); GET_OP1_UNDEF_CV(val, BP_VAR_R);
GET_OP1_UNDEF_CV(val, BP_VAR_R);
}
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else { } else {
ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
@ -2641,15 +2639,12 @@ ZEND_VM_HANDLER(46, ZEND_JMPZ_EX, CONST|TMPVAR|CV, JMP_ADDR)
if (Z_TYPE_INFO_P(val) == IS_TRUE) { if (Z_TYPE_INFO_P(val) == IS_TRUE) {
ZVAL_TRUE(EX_VAR(opline->result.var)); ZVAL_TRUE(EX_VAR(opline->result.var));
ZEND_VM_SET_NEXT_OPCODE(opline + 1); ZEND_VM_NEXT_OPCODE();
ZEND_VM_CONTINUE();
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) { } else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
ZVAL_FALSE(EX_VAR(opline->result.var)); ZVAL_FALSE(EX_VAR(opline->result.var));
if (OP1_TYPE == IS_CV) { if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
if (UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) { SAVE_OPLINE();
SAVE_OPLINE(); GET_OP1_UNDEF_CV(val, BP_VAR_R);
GET_OP1_UNDEF_CV(val, BP_VAR_R);
}
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else { } else {
ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));

View File

@ -2750,11 +2750,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZNZ_SPEC_CONST_HANDLER(ZEND
ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
ZEND_VM_CONTINUE(); ZEND_VM_CONTINUE();
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) { } else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
if (IS_CONST == IS_CV) { if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
if (UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) { SAVE_OPLINE();
SAVE_OPLINE(); GET_OP1_UNDEF_CV(val, BP_VAR_R);
GET_OP1_UNDEF_CV(val, BP_VAR_R);
}
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else { } else {
ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
@ -2783,15 +2781,12 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CONST_HANDLER(ZEN
if (Z_TYPE_INFO_P(val) == IS_TRUE) { if (Z_TYPE_INFO_P(val) == IS_TRUE) {
ZVAL_TRUE(EX_VAR(opline->result.var)); ZVAL_TRUE(EX_VAR(opline->result.var));
ZEND_VM_SET_NEXT_OPCODE(opline + 1); ZEND_VM_NEXT_OPCODE();
ZEND_VM_CONTINUE();
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) { } else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
ZVAL_FALSE(EX_VAR(opline->result.var)); ZVAL_FALSE(EX_VAR(opline->result.var));
if (IS_CONST == IS_CV) { if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
if (UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) { SAVE_OPLINE();
SAVE_OPLINE(); GET_OP1_UNDEF_CV(val, BP_VAR_R);
GET_OP1_UNDEF_CV(val, BP_VAR_R);
}
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else { } else {
ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
@ -32766,11 +32761,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZNZ_SPEC_CV_HANDLER(ZEND_OP
ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
ZEND_VM_CONTINUE(); ZEND_VM_CONTINUE();
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) { } else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
if (IS_CV == IS_CV) { if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
if (UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) { SAVE_OPLINE();
SAVE_OPLINE(); GET_OP1_UNDEF_CV(val, BP_VAR_R);
GET_OP1_UNDEF_CV(val, BP_VAR_R);
}
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else { } else {
ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
@ -32799,15 +32792,12 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CV_HANDLER(ZEND_O
if (Z_TYPE_INFO_P(val) == IS_TRUE) { if (Z_TYPE_INFO_P(val) == IS_TRUE) {
ZVAL_TRUE(EX_VAR(opline->result.var)); ZVAL_TRUE(EX_VAR(opline->result.var));
ZEND_VM_SET_NEXT_OPCODE(opline + 1); ZEND_VM_NEXT_OPCODE();
ZEND_VM_CONTINUE();
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) { } else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
ZVAL_FALSE(EX_VAR(opline->result.var)); ZVAL_FALSE(EX_VAR(opline->result.var));
if (IS_CV == IS_CV) { if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
if (UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) { SAVE_OPLINE();
SAVE_OPLINE(); GET_OP1_UNDEF_CV(val, BP_VAR_R);
GET_OP1_UNDEF_CV(val, BP_VAR_R);
}
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else { } else {
ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
@ -47845,11 +47835,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER(ZEN
ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
ZEND_VM_CONTINUE(); ZEND_VM_CONTINUE();
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) { } else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
if ((IS_TMP_VAR|IS_VAR) == IS_CV) { if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
if (UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) { SAVE_OPLINE();
SAVE_OPLINE(); GET_OP1_UNDEF_CV(val, BP_VAR_R);
GET_OP1_UNDEF_CV(val, BP_VAR_R);
}
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else { } else {
ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
@ -47878,15 +47866,12 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER(ZE
if (Z_TYPE_INFO_P(val) == IS_TRUE) { if (Z_TYPE_INFO_P(val) == IS_TRUE) {
ZVAL_TRUE(EX_VAR(opline->result.var)); ZVAL_TRUE(EX_VAR(opline->result.var));
ZEND_VM_SET_NEXT_OPCODE(opline + 1); ZEND_VM_NEXT_OPCODE();
ZEND_VM_CONTINUE();
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) { } else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
ZVAL_FALSE(EX_VAR(opline->result.var)); ZVAL_FALSE(EX_VAR(opline->result.var));
if ((IS_TMP_VAR|IS_VAR) == IS_CV) { if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
if (UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) { SAVE_OPLINE();
SAVE_OPLINE(); GET_OP1_UNDEF_CV(val, BP_VAR_R);
GET_OP1_UNDEF_CV(val, BP_VAR_R);
}
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
} else { } else {
ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));