Commit 05b3c284e56 for php.net

commit 05b3c284e56df736cb7078d5dd6ba23c0bd31c7f
Author: Ilija Tovilo <ilija.tovilo@me.com>
Date:   Fri Mar 27 14:24:47 2026 +0100

    Slightly optimize hash add_new for packed arrays (GH-21539)

    No need to check for UNDEF, assume the index is undefined. This eliminates the
    offset calculation, lookup and type check. Though of course dwarfed by the
    conversion to a proper hash table.

diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c
index 959becb5747..7bcb97c392b 100644
--- a/Zend/zend_hash.c
+++ b/Zend/zend_hash.c
@@ -1111,7 +1111,10 @@ static zend_always_inline zval *_zend_hash_index_add_or_update_i(HashTable *ht,
 		if ((flag & (HASH_ADD_NEW|HASH_ADD_NEXT)) != (HASH_ADD_NEW|HASH_ADD_NEXT)
 		 && h < ht->nNumUsed) {
 			zv = ht->arPacked + h;
-			if (Z_TYPE_P(zv) != IS_UNDEF) {
+			if (flag & HASH_ADD_NEW) {
+				ZEND_ASSERT(Z_TYPE_P(zv) == IS_UNDEF);
+				goto convert_to_hash;
+			} else if (Z_TYPE_P(zv) != IS_UNDEF) {
 				if (flag & HASH_LOOKUP) {
 					return zv;
 				}