summaryrefslogtreecommitdiff
path: root/Zend/zend_vm_execute.h
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2019-03-19 02:02:37 +0300
committerDmitry Stogov <dmitry@zend.com>2019-03-19 02:02:37 +0300
commit61548042f785bab84059f19a1e9d7dc2e5d206a7 (patch)
tree00bd088672687133cd571c1a2bc3f5596c30b8c0 /Zend/zend_vm_execute.h
parent747713c1916e293202e9b25ed361808011bb7660 (diff)
parent9357953babf7863e27d6e42897f636f443819a8e (diff)
downloadphp-git-61548042f785bab84059f19a1e9d7dc2e5d206a7.tar.gz
Merge branch 'PHP-7.4'
* PHP-7.4: micro-optimization
Diffstat (limited to 'Zend/zend_vm_execute.h')
-rw-r--r--Zend/zend_vm_execute.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 9306a1b58f..ed8ae4e084 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -5894,6 +5894,14 @@ num_index_prop:
/* > IS_NULL means not IS_UNDEF and not IS_NULL */
result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
+
+ if (IS_CONST & (IS_CONST|IS_CV)) {
+ /* avoid exception check */
+
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ }
} else {
result = (value == NULL || !i_zend_is_true(value));
}
@@ -7994,6 +8002,14 @@ num_index_prop:
/* > IS_NULL means not IS_UNDEF and not IS_NULL */
result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
+
+ if (IS_CONST & (IS_CONST|IS_CV)) {
+ /* avoid exception check */
+
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ }
} else {
result = (value == NULL || !i_zend_is_true(value));
}
@@ -10912,6 +10928,14 @@ num_index_prop:
/* > IS_NULL means not IS_UNDEF and not IS_NULL */
result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
+
+ if (IS_CONST & (IS_CONST|IS_CV)) {
+ /* avoid exception check */
+
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ }
} else {
result = (value == NULL || !i_zend_is_true(value));
}
@@ -14393,6 +14417,14 @@ num_index_prop:
/* > IS_NULL means not IS_UNDEF and not IS_NULL */
result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
+
+ if ((IS_TMP_VAR|IS_VAR) & (IS_CONST|IS_CV)) {
+ /* avoid exception check */
+ zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ }
} else {
result = (value == NULL || !i_zend_is_true(value));
}
@@ -15919,6 +15951,14 @@ num_index_prop:
/* > IS_NULL means not IS_UNDEF and not IS_NULL */
result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
+
+ if ((IS_TMP_VAR|IS_VAR) & (IS_CONST|IS_CV)) {
+ /* avoid exception check */
+ zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ }
} else {
result = (value == NULL || !i_zend_is_true(value));
}
@@ -17559,6 +17599,14 @@ num_index_prop:
/* > IS_NULL means not IS_UNDEF and not IS_NULL */
result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
+
+ if ((IS_TMP_VAR|IS_VAR) & (IS_CONST|IS_CV)) {
+ /* avoid exception check */
+ zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ }
} else {
result = (value == NULL || !i_zend_is_true(value));
}
@@ -44717,6 +44765,14 @@ num_index_prop:
/* > IS_NULL means not IS_UNDEF and not IS_NULL */
result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
+
+ if (IS_CV & (IS_CONST|IS_CV)) {
+ /* avoid exception check */
+
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ }
} else {
result = (value == NULL || !i_zend_is_true(value));
}
@@ -48827,6 +48883,14 @@ num_index_prop:
/* > IS_NULL means not IS_UNDEF and not IS_NULL */
result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
+
+ if (IS_CV & (IS_CONST|IS_CV)) {
+ /* avoid exception check */
+
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ }
} else {
result = (value == NULL || !i_zend_is_true(value));
}
@@ -54939,6 +55003,14 @@ num_index_prop:
/* > IS_NULL means not IS_UNDEF and not IS_NULL */
result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
+
+ if (IS_CV & (IS_CONST|IS_CV)) {
+ /* avoid exception check */
+
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ }
} else {
result = (value == NULL || !i_zend_is_true(value));
}