diff options
author | Dmitry Stogov <dmitry@zend.com> | 2017-11-20 12:38:31 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2017-11-20 12:38:31 +0300 |
commit | efa4d8d3acead0cf21315f57ac2da1a08efa86ab (patch) | |
tree | 85ff5ca9d7f092cd6e9c48533a7db24ca262e00f | |
parent | f5dbe081efcc840048f2a5f454690621f0676beb (diff) | |
download | php-git-efa4d8d3acead0cf21315f57ac2da1a08efa86ab.tar.gz |
Optimized zend_is_true() for objects (in most cases, it doesn't need to call the conversion handler).
-rw-r--r-- | Zend/zend_operators.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h index 913ab710c4..366fa1ed5e 100644 --- a/Zend/zend_operators.h +++ b/Zend/zend_operators.h @@ -38,6 +38,7 @@ #include "zend_portability.h" #include "zend_strtod.h" #include "zend_multiply.h" +#include "zend_object_handlers.h" #define LONG_SIGN_MASK (((zend_long)1) << (8*sizeof(zend_long)-1)) @@ -335,7 +336,11 @@ again: } break; case IS_OBJECT: - result = zend_object_is_true(op); + if (EXPECTED(Z_OBJ_HT_P(op)->cast_object == zend_std_cast_object_tostring)) { + result = 1; + } else { + result = zend_object_is_true(op); + } break; case IS_RESOURCE: if (EXPECTED(Z_RES_HANDLE_P(op))) { |