Commit 39fa31b98ae for php
commit 39fa31b98ae25243ebf24779762bb285bc3085e4
Author: Ilija Tovilo <ilija.tovilo@me.com>
Date: Mon Nov 2 21:55:00 2026 +0100
Remove redundant check in DECLARE_LAMBDA_FUNCTION handler (GH-25158)
When `Z_TYPE(EX(This)) == IS_OBJECT`, EX(func) is always non-static.
Remove EXPECTED() for static closure, declaring static closures from non-static
functions is not rare.
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index b766c20ec60..6d6053022f5 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -8442,9 +8442,8 @@ ZEND_VM_HANDLER(142, ZEND_DECLARE_LAMBDA_FUNCTION, UNUSED, NUM, NUM|CACHE_SLOT)
}
func = (zend_function *) EX(func)->op_array.dynamic_func_defs[opline->op2.num];
- if (Z_TYPE(EX(This)) == IS_OBJECT
- && EXPECTED(!(func->common.fn_flags & ZEND_ACC_STATIC))
- && EXPECTED(!(EX(func)->common.fn_flags & ZEND_ACC_STATIC))) {
+ if (Z_TYPE(EX(This)) == IS_OBJECT && !(func->common.fn_flags & ZEND_ACC_STATIC)) {
+ ZEND_ASSERT(!(EX(func)->common.fn_flags & ZEND_ACC_STATIC));
object = Z_OBJ(EX(This));
} else {
object = NULL;
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 2ae103cb1d4..f6deb7be7e6 100644
Binary files a/Zend/zend_vm_execute.h and b/Zend/zend_vm_execute.h differ