From: Dmitry Stogov Date: Wed, 10 May 2017 10:27:37 +0000 (+0300) Subject: Avoid useless checks X-Git-Tag: php-7.2.0alpha2~15^2~34 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c8f073d0d73b822c3190484be5a9053a92027015;p=php Avoid useless checks --- diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index b787fd4031..a1cfcd3650 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1974,7 +1974,8 @@ static zend_always_inline zval* zend_fetch_static_property_address(zend_execute_ ce = Z_CE_P(EX_VAR(op2.var)); } if (varname_type == IS_CONST && - (retval = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(varname), ce)) != NULL) { + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(varname)) == ce)) { + retval = CACHED_PTR(Z_CACHE_SLOT_P(varname) + sizeof(void*)); /* check if static properties were destoyed */ if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) { diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 8784adbe59..79c81a6c9e 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2980,8 +2980,10 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, CONST|TMPVAR|UNUSED|THIS|CV, CONST|T obj = Z_OBJ_P(object); called_scope = obj->ce; - if (OP2_TYPE != IS_CONST || - UNEXPECTED((fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope)) == NULL)) { + if (OP2_TYPE == IS_CONST && + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*)); + } else { zend_object *orig_obj = obj; if (UNEXPECTED(obj->handlers->get_method == NULL)) { @@ -3075,8 +3077,8 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, UNUSED|CLASS_FETCH|CONST|VAR, /* nothing to do */ } else if (OP1_TYPE != IS_CONST && OP2_TYPE == IS_CONST && - (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { - /* do nothing */ + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); } else if (OP2_TYPE != IS_UNUSED) { zend_free_op free_op2; @@ -4976,7 +4978,8 @@ ZEND_VM_HANDLER(181, ZEND_FETCH_CLASS_CONSTANT, VAR|CONST|UNUSED|CLASS_FETCH, CO } else { ce = Z_CE_P(EX_VAR(opline->op1.var)); } - if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce)) != NULL) { + if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); break; } } @@ -6320,7 +6323,9 @@ ZEND_VM_HANDLER(180, ZEND_ISSET_ISEMPTY_STATIC_PROP, CONST|TMPVAR|CV, UNUSED|CLA ce = Z_CE_P(EX_VAR(opline->op2.var)); } if (OP1_TYPE == IS_CONST && - (value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce)) != NULL) { + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) { + + value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*)); /* check if static properties were destoyed */ if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) { diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 5ece46b0fd..0fd8681862 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -5360,8 +5360,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CONST_CO obj = Z_OBJ_P(object); called_scope = obj->ce; - if (IS_CONST != IS_CONST || - UNEXPECTED((fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope)) == NULL)) { + if (IS_CONST == IS_CONST && + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*)); + } else { zend_object *orig_obj = obj; if (UNEXPECTED(obj->handlers->get_method == NULL)) { @@ -5453,8 +5455,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C /* nothing to do */ } else if (IS_CONST != IS_CONST && IS_CONST == IS_CONST && - (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { - /* do nothing */ + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); } else if (IS_CONST != IS_UNUSED) { @@ -5750,7 +5752,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_CONSTANT_SPEC_CONS } else { ce = Z_CE_P(EX_VAR(opline->op1.var)); } - if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce)) != NULL) { + if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); break; } } @@ -6029,7 +6032,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC ce = Z_CE_P(EX_VAR(opline->op2.var)); } if (IS_CONST == IS_CONST && - (value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce)) != NULL) { + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) { + + value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*)); /* check if static properties were destoyed */ if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) { @@ -6899,7 +6904,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC ce = Z_CE_P(EX_VAR(opline->op2.var)); } if (IS_CONST == IS_CONST && - (value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce)) != NULL) { + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) { + + value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*)); /* check if static properties were destoyed */ if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) { @@ -7376,8 +7383,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C /* nothing to do */ } else if (IS_CONST != IS_CONST && IS_UNUSED == IS_CONST && - (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { - /* do nothing */ + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); } else if (IS_UNUSED != IS_UNUSED) { @@ -7882,7 +7889,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC ce = Z_CE_P(EX_VAR(opline->op2.var)); } if (IS_CONST == IS_CONST && - (value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce)) != NULL) { + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) { + + value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*)); /* check if static properties were destoyed */ if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) { @@ -9210,8 +9219,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CONST_CV obj = Z_OBJ_P(object); called_scope = obj->ce; - if (IS_CV != IS_CONST || - UNEXPECTED((fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope)) == NULL)) { + if (IS_CV == IS_CONST && + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*)); + } else { zend_object *orig_obj = obj; if (UNEXPECTED(obj->handlers->get_method == NULL)) { @@ -9303,8 +9314,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C /* nothing to do */ } else if (IS_CONST != IS_CONST && IS_CV == IS_CONST && - (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { - /* do nothing */ + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); } else if (IS_CV != IS_UNUSED) { @@ -11201,8 +11212,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CONST_TM obj = Z_OBJ_P(object); called_scope = obj->ce; - if ((IS_TMP_VAR|IS_VAR) != IS_CONST || - UNEXPECTED((fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope)) == NULL)) { + if ((IS_TMP_VAR|IS_VAR) == IS_CONST && + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*)); + } else { zend_object *orig_obj = obj; if (UNEXPECTED(obj->handlers->get_method == NULL)) { @@ -11295,8 +11308,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C /* nothing to do */ } else if (IS_CONST != IS_CONST && (IS_TMP_VAR|IS_VAR) == IS_CONST && - (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { - /* do nothing */ + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); } else if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) { zend_free_op free_op2; @@ -19353,8 +19366,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V /* nothing to do */ } else if (IS_VAR != IS_CONST && IS_CONST == IS_CONST && - (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { - /* do nothing */ + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); } else if (IS_CONST != IS_UNUSED) { @@ -19508,7 +19521,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_ } else { ce = Z_CE_P(EX_VAR(opline->op1.var)); } - if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce)) != NULL) { + if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); break; } } @@ -21115,8 +21129,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V /* nothing to do */ } else if (IS_VAR != IS_CONST && IS_UNUSED == IS_CONST && - (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { - /* do nothing */ + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); } else if (IS_UNUSED != IS_UNUSED) { @@ -23639,8 +23653,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V /* nothing to do */ } else if (IS_VAR != IS_CONST && IS_CV == IS_CONST && - (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { - /* do nothing */ + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); } else if (IS_CV != IS_UNUSED) { @@ -26055,8 +26069,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V /* nothing to do */ } else if (IS_VAR != IS_CONST && (IS_TMP_VAR|IS_VAR) == IS_CONST && - (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { - /* do nothing */ + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); } else if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) { zend_free_op free_op2; @@ -27907,8 +27921,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_C obj = Z_OBJ_P(object); called_scope = obj->ce; - if (IS_CONST != IS_CONST || - UNEXPECTED((fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope)) == NULL)) { + if (IS_CONST == IS_CONST && + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*)); + } else { zend_object *orig_obj = obj; if (UNEXPECTED(obj->handlers->get_method == NULL)) { @@ -28000,8 +28016,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U /* nothing to do */ } else if (IS_UNUSED != IS_CONST && IS_CONST == IS_CONST && - (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { - /* do nothing */ + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); } else if (IS_CONST != IS_UNUSED) { @@ -28200,7 +28216,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUS } else { ce = Z_CE_P(EX_VAR(opline->op1.var)); } - if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce)) != NULL) { + if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); break; } } @@ -28808,8 +28825,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U /* nothing to do */ } else if (IS_UNUSED != IS_CONST && IS_UNUSED == IS_CONST && - (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { - /* do nothing */ + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); } else if (IS_UNUSED != IS_UNUSED) { @@ -30469,8 +30486,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_C obj = Z_OBJ_P(object); called_scope = obj->ce; - if (IS_CV != IS_CONST || - UNEXPECTED((fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope)) == NULL)) { + if (IS_CV == IS_CONST && + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*)); + } else { zend_object *orig_obj = obj; if (UNEXPECTED(obj->handlers->get_method == NULL)) { @@ -30562,8 +30581,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U /* nothing to do */ } else if (IS_UNUSED != IS_CONST && IS_CV == IS_CONST && - (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { - /* do nothing */ + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); } else if (IS_CV != IS_UNUSED) { @@ -32233,8 +32252,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_T obj = Z_OBJ_P(object); called_scope = obj->ce; - if ((IS_TMP_VAR|IS_VAR) != IS_CONST || - UNEXPECTED((fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope)) == NULL)) { + if ((IS_TMP_VAR|IS_VAR) == IS_CONST && + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*)); + } else { zend_object *orig_obj = obj; if (UNEXPECTED(obj->handlers->get_method == NULL)) { @@ -32327,8 +32348,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U /* nothing to do */ } else if (IS_UNUSED != IS_CONST && (IS_TMP_VAR|IS_VAR) == IS_CONST && - (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { - /* do nothing */ + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*)); } else if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) { zend_free_op free_op2; @@ -37345,8 +37366,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST obj = Z_OBJ_P(object); called_scope = obj->ce; - if (IS_CONST != IS_CONST || - UNEXPECTED((fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope)) == NULL)) { + if (IS_CONST == IS_CONST && + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*)); + } else { zend_object *orig_obj = obj; if (UNEXPECTED(obj->handlers->get_method == NULL)) { @@ -37828,7 +37851,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC ce = Z_CE_P(EX_VAR(opline->op2.var)); } if (IS_CV == IS_CONST && - (value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce)) != NULL) { + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) { + + value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*)); /* check if static properties were destoyed */ if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) { @@ -39023,7 +39048,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC ce = Z_CE_P(EX_VAR(opline->op2.var)); } if (IS_CV == IS_CONST && - (value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce)) != NULL) { + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) { + + value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*)); /* check if static properties were destoyed */ if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) { @@ -40476,7 +40503,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC ce = Z_CE_P(EX_VAR(opline->op2.var)); } if (IS_CV == IS_CONST && - (value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce)) != NULL) { + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) { + + value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*)); /* check if static properties were destoyed */ if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) { @@ -43691,8 +43720,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HA obj = Z_OBJ_P(object); called_scope = obj->ce; - if (IS_CV != IS_CONST || - UNEXPECTED((fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope)) == NULL)) { + if (IS_CV == IS_CONST && + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*)); + } else { zend_object *orig_obj = obj; if (UNEXPECTED(obj->handlers->get_method == NULL)) { @@ -47242,8 +47273,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVA obj = Z_OBJ_P(object); called_scope = obj->ce; - if ((IS_TMP_VAR|IS_VAR) != IS_CONST || - UNEXPECTED((fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope)) == NULL)) { + if ((IS_TMP_VAR|IS_VAR) == IS_CONST && + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*)); + } else { zend_object *orig_obj = obj; if (UNEXPECTED(obj->handlers->get_method == NULL)) { @@ -49394,8 +49427,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_C obj = Z_OBJ_P(object); called_scope = obj->ce; - if (IS_CONST != IS_CONST || - UNEXPECTED((fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope)) == NULL)) { + if (IS_CONST == IS_CONST && + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*)); + } else { zend_object *orig_obj = obj; if (UNEXPECTED(obj->handlers->get_method == NULL)) { @@ -49623,7 +49658,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC ce = Z_CE_P(EX_VAR(opline->op2.var)); } if ((IS_TMP_VAR|IS_VAR) == IS_CONST && - (value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce)) != NULL) { + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) { + + value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*)); /* check if static properties were destoyed */ if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) { @@ -50169,7 +50206,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC ce = Z_CE_P(EX_VAR(opline->op2.var)); } if ((IS_TMP_VAR|IS_VAR) == IS_CONST && - (value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce)) != NULL) { + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) { + + value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*)); /* check if static properties were destoyed */ if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) { @@ -50699,7 +50738,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC ce = Z_CE_P(EX_VAR(opline->op2.var)); } if ((IS_TMP_VAR|IS_VAR) == IS_CONST && - (value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce)) != NULL) { + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) { + + value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*)); /* check if static properties were destoyed */ if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) { @@ -51726,8 +51767,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_C obj = Z_OBJ_P(object); called_scope = obj->ce; - if (IS_CV != IS_CONST || - UNEXPECTED((fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope)) == NULL)) { + if (IS_CV == IS_CONST && + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*)); + } else { zend_object *orig_obj = obj; if (UNEXPECTED(obj->handlers->get_method == NULL)) { @@ -53018,8 +53061,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_T obj = Z_OBJ_P(object); called_scope = obj->ce; - if ((IS_TMP_VAR|IS_VAR) != IS_CONST || - UNEXPECTED((fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope)) == NULL)) { + if ((IS_TMP_VAR|IS_VAR) == IS_CONST && + EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) { + fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*)); + } else { zend_object *orig_obj = obj; if (UNEXPECTED(obj->handlers->get_method == NULL)) {