summaryrefslogtreecommitdiff
path: root/ext/opcache/Optimizer/zend_dump.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2017-11-23 15:58:34 +0300
committerDmitry Stogov <dmitry@zend.com>2017-11-23 15:58:34 +0300
commit33b094479b7d2a61ecee52e7ce2bd389426349e9 (patch)
treef5fde750c141368666985d5813435848e498a6b1 /ext/opcache/Optimizer/zend_dump.c
parentd5dd27987f98ad7215d115e18837114da2e4f35d (diff)
downloadphp-git-33b094479b7d2a61ecee52e7ce2bd389426349e9.tar.gz
TYPE_CHECK instruction changed. Now it keeps in extended_value a type mask.
This makes check for "boolean" cheaper and allows check combination e.g. (is_string($a) || is_null($a))
Diffstat (limited to 'ext/opcache/Optimizer/zend_dump.c')
-rw-r--r--ext/opcache/Optimizer/zend_dump.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/ext/opcache/Optimizer/zend_dump.c b/ext/opcache/Optimizer/zend_dump.c
index 3910631335..280a77034b 100644
--- a/ext/opcache/Optimizer/zend_dump.c
+++ b/ext/opcache/Optimizer/zend_dump.c
@@ -500,6 +500,42 @@ static void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *
fprintf(stderr, " (\?\?\?)");
break;
}
+ } else if (ZEND_VM_EXT_TYPE_MASK == (flags & ZEND_VM_EXT_MASK)) {
+ switch (opline->extended_value) {
+ case (1<<IS_NULL):
+ fprintf(stderr, " (null)");
+ break;
+ case (1<<IS_FALSE):
+ fprintf(stderr, " (false)");
+ break;
+ case (1<<IS_TRUE):
+ fprintf(stderr, " (true)");
+ break;
+ case (1<<IS_LONG):
+ fprintf(stderr, " (long)");
+ break;
+ case (1<<IS_DOUBLE):
+ fprintf(stderr, " (double)");
+ break;
+ case (1<<IS_STRING):
+ fprintf(stderr, " (string)");
+ break;
+ case (1<<IS_ARRAY):
+ fprintf(stderr, " (array)");
+ break;
+ case (1<<IS_OBJECT):
+ fprintf(stderr, " (object)");
+ break;
+ case (1<<IS_RESOURCE):
+ fprintf(stderr, " (resource)");
+ break;
+ case ((1<<IS_FALSE)||(1<<IS_TRUE)):
+ fprintf(stderr, " (bool)");
+ break;
+ default:
+ fprintf(stderr, " (\?\?\?)");
+ break;
+ }
} else if (ZEND_VM_EXT_EVAL == (flags & ZEND_VM_EXT_MASK)) {
switch (opline->extended_value) {
case ZEND_EVAL: