[mapguide-commits] r10039 - in trunk/MgDev/Oem/php: build include/TSRM include/Zend include/Zend/Optimizer include/ext include/ext/date include/ext/date/lib include/ext/gd include/ext/iconv include/ext/json include/ext/libxml include/ext/mbstring include/ext/mbstring/libmbfl/mbfl include/ext/mysqli include/ext/mysqlnd include/ext/pcre/pcre2lib include/ext/pdo include/ext/session include/ext/sockets include/ext/sodium include/ext/spl include/ext/standard include/ext/xml include/main include/main/streams lib script

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Tue Mar 28 07:50:39 PDT 2023


Author: jng
Date: 2023-03-28 07:50:37 -0700 (Tue, 28 Mar 2023)
New Revision: 10039

Added:
   trunk/MgDev/Oem/php/include/main/php_stdint.h
Removed:
   trunk/MgDev/Oem/php/include/Zend/zend_atomic.h
   trunk/MgDev/Oem/php/include/Zend/zend_constants_arginfo.h
   trunk/MgDev/Oem/php/include/Zend/zend_mmap.h
   trunk/MgDev/Oem/php/include/ext/random/
   trunk/MgDev/Oem/php/include/ext/standard/file_arginfo.h
   trunk/MgDev/Oem/php/include/main/php_ini_builder.h
   trunk/MgDev/Oem/php/include/main/php_odbc_utils.h
   trunk/MgDev/Oem/php/lib/php_zip.lib
Modified:
   trunk/MgDev/Oem/php/build/default.manifest
   trunk/MgDev/Oem/php/build/gen_stub.php
   trunk/MgDev/Oem/php/build/template.rc
   trunk/MgDev/Oem/php/include/TSRM/TSRM.h
   trunk/MgDev/Oem/php/include/TSRM/tsrm_win32.h
   trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_call_graph.h
   trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_cfg.h
   trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_func_info.h
   trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_inference.h
   trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_optimizer.h
   trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_ssa.h
   trunk/MgDev/Oem/php/include/Zend/zend.h
   trunk/MgDev/Oem/php/include/Zend/zend_API.h
   trunk/MgDev/Oem/php/include/Zend/zend_alloc.h
   trunk/MgDev/Oem/php/include/Zend/zend_ast.h
   trunk/MgDev/Oem/php/include/Zend/zend_attributes.h
   trunk/MgDev/Oem/php/include/Zend/zend_attributes_arginfo.h
   trunk/MgDev/Oem/php/include/Zend/zend_builtin_functions_arginfo.h
   trunk/MgDev/Oem/php/include/Zend/zend_compile.h
   trunk/MgDev/Oem/php/include/Zend/zend_enum.h
   trunk/MgDev/Oem/php/include/Zend/zend_exceptions_arginfo.h
   trunk/MgDev/Oem/php/include/Zend/zend_execute.h
   trunk/MgDev/Oem/php/include/Zend/zend_extensions.h
   trunk/MgDev/Oem/php/include/Zend/zend_fibers.h
   trunk/MgDev/Oem/php/include/Zend/zend_globals.h
   trunk/MgDev/Oem/php/include/Zend/zend_hash.h
   trunk/MgDev/Oem/php/include/Zend/zend_inheritance.h
   trunk/MgDev/Oem/php/include/Zend/zend_ini.h
   trunk/MgDev/Oem/php/include/Zend/zend_interfaces.h
   trunk/MgDev/Oem/php/include/Zend/zend_iterators.h
   trunk/MgDev/Oem/php/include/Zend/zend_llist.h
   trunk/MgDev/Oem/php/include/Zend/zend_long.h
   trunk/MgDev/Oem/php/include/Zend/zend_map_ptr.h
   trunk/MgDev/Oem/php/include/Zend/zend_modules.h
   trunk/MgDev/Oem/php/include/Zend/zend_multiply.h
   trunk/MgDev/Oem/php/include/Zend/zend_object_handlers.h
   trunk/MgDev/Oem/php/include/Zend/zend_observer.h
   trunk/MgDev/Oem/php/include/Zend/zend_operators.h
   trunk/MgDev/Oem/php/include/Zend/zend_portability.h
   trunk/MgDev/Oem/php/include/Zend/zend_ptr_stack.h
   trunk/MgDev/Oem/php/include/Zend/zend_smart_str.h
   trunk/MgDev/Oem/php/include/Zend/zend_smart_str_public.h
   trunk/MgDev/Oem/php/include/Zend/zend_string.h
   trunk/MgDev/Oem/php/include/Zend/zend_type_info.h
   trunk/MgDev/Oem/php/include/Zend/zend_types.h
   trunk/MgDev/Oem/php/include/Zend/zend_vm.h
   trunk/MgDev/Oem/php/include/Zend/zend_vm_def.h
   trunk/MgDev/Oem/php/include/Zend/zend_vm_execute.h
   trunk/MgDev/Oem/php/include/Zend/zend_vm_handlers.h
   trunk/MgDev/Oem/php/include/Zend/zend_vm_opcodes.h
   trunk/MgDev/Oem/php/include/Zend/zend_vm_trace_handlers.h
   trunk/MgDev/Oem/php/include/Zend/zend_vm_trace_map.h
   trunk/MgDev/Oem/php/include/Zend/zend_weakrefs.h
   trunk/MgDev/Oem/php/include/ext/date/lib/timelib.h
   trunk/MgDev/Oem/php/include/ext/date/lib/timelib_config.h
   trunk/MgDev/Oem/php/include/ext/date/php_date.h
   trunk/MgDev/Oem/php/include/ext/gd/gd_arginfo.h
   trunk/MgDev/Oem/php/include/ext/gd/php_gd.h
   trunk/MgDev/Oem/php/include/ext/iconv/iconv_arginfo.h
   trunk/MgDev/Oem/php/include/ext/iconv/php_iconv.h
   trunk/MgDev/Oem/php/include/ext/json/php_json.h
   trunk/MgDev/Oem/php/include/ext/libxml/php_libxml.h
   trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/eaw_table.h
   trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfilter.h
   trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_consts.h
   trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_convert.h
   trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h
   trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_language.h
   trunk/MgDev/Oem/php/include/ext/mbstring/mbstring.h
   trunk/MgDev/Oem/php/include/ext/mbstring/php_mbregex.h
   trunk/MgDev/Oem/php/include/ext/mysqli/php_mysqli_structs.h
   trunk/MgDev/Oem/php/include/ext/mysqlnd/mysqlnd.h
   trunk/MgDev/Oem/php/include/ext/mysqlnd/mysqlnd_portability.h
   trunk/MgDev/Oem/php/include/ext/mysqlnd/mysqlnd_structs.h
   trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2.h
   trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_internal.h
   trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_intmodedep.h
   trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_jit_simd_inc.h
   trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_ucp.h
   trunk/MgDev/Oem/php/include/ext/pdo/php_pdo.h
   trunk/MgDev/Oem/php/include/ext/pdo/php_pdo_driver.h
   trunk/MgDev/Oem/php/include/ext/session/php_session.h
   trunk/MgDev/Oem/php/include/ext/sockets/php_sockets.h
   trunk/MgDev/Oem/php/include/ext/sodium/php_libsodium.h
   trunk/MgDev/Oem/php/include/ext/spl/spl_array.h
   trunk/MgDev/Oem/php/include/ext/spl/spl_directory.h
   trunk/MgDev/Oem/php/include/ext/spl/spl_dllist.h
   trunk/MgDev/Oem/php/include/ext/spl/spl_functions.h
   trunk/MgDev/Oem/php/include/ext/spl/spl_heap.h
   trunk/MgDev/Oem/php/include/ext/spl/spl_iterators.h
   trunk/MgDev/Oem/php/include/ext/spl/spl_observer.h
   trunk/MgDev/Oem/php/include/ext/standard/basic_functions.h
   trunk/MgDev/Oem/php/include/ext/standard/basic_functions_arginfo.h
   trunk/MgDev/Oem/php/include/ext/standard/credits_ext.h
   trunk/MgDev/Oem/php/include/ext/standard/crypt_freesec.h
   trunk/MgDev/Oem/php/include/ext/standard/file.h
   trunk/MgDev/Oem/php/include/ext/standard/flock_compat.h
   trunk/MgDev/Oem/php/include/ext/standard/html.h
   trunk/MgDev/Oem/php/include/ext/standard/php_array.h
   trunk/MgDev/Oem/php/include/ext/standard/php_dir.h
   trunk/MgDev/Oem/php/include/ext/standard/php_dns.h
   trunk/MgDev/Oem/php/include/ext/standard/php_image.h
   trunk/MgDev/Oem/php/include/ext/standard/php_lcg.h
   trunk/MgDev/Oem/php/include/ext/standard/php_mt_rand.h
   trunk/MgDev/Oem/php/include/ext/standard/php_password.h
   trunk/MgDev/Oem/php/include/ext/standard/php_rand.h
   trunk/MgDev/Oem/php/include/ext/standard/php_random.h
   trunk/MgDev/Oem/php/include/ext/standard/php_standard.h
   trunk/MgDev/Oem/php/include/ext/standard/php_string.h
   trunk/MgDev/Oem/php/include/ext/xml/php_xml.h
   trunk/MgDev/Oem/php/include/ext/xml/xml_arginfo.h
   trunk/MgDev/Oem/php/include/main/SAPI.h
   trunk/MgDev/Oem/php/include/main/config.w32.h
   trunk/MgDev/Oem/php/include/main/php.h
   trunk/MgDev/Oem/php/include/main/php_globals.h
   trunk/MgDev/Oem/php/include/main/php_main.h
   trunk/MgDev/Oem/php/include/main/php_output.h
   trunk/MgDev/Oem/php/include/main/php_streams.h
   trunk/MgDev/Oem/php/include/main/php_variables.h
   trunk/MgDev/Oem/php/include/main/php_version.h
   trunk/MgDev/Oem/php/include/main/streams/php_stream_context.h
   trunk/MgDev/Oem/php/include/main/streams/php_stream_plain_wrapper.h
   trunk/MgDev/Oem/php/include/main/streams/php_streams_int.h
   trunk/MgDev/Oem/php/lib/php8.lib
   trunk/MgDev/Oem/php/lib/php_bz2.lib
   trunk/MgDev/Oem/php/lib/php_com_dotnet.lib
   trunk/MgDev/Oem/php/lib/php_curl.lib
   trunk/MgDev/Oem/php/lib/php_dba.lib
   trunk/MgDev/Oem/php/lib/php_dl_test.lib
   trunk/MgDev/Oem/php/lib/php_enchant.lib
   trunk/MgDev/Oem/php/lib/php_exif.lib
   trunk/MgDev/Oem/php/lib/php_ffi.lib
   trunk/MgDev/Oem/php/lib/php_fileinfo.lib
   trunk/MgDev/Oem/php/lib/php_ftp.lib
   trunk/MgDev/Oem/php/lib/php_gd.lib
   trunk/MgDev/Oem/php/lib/php_gettext.lib
   trunk/MgDev/Oem/php/lib/php_gmp.lib
   trunk/MgDev/Oem/php/lib/php_imap.lib
   trunk/MgDev/Oem/php/lib/php_intl.lib
   trunk/MgDev/Oem/php/lib/php_ldap.lib
   trunk/MgDev/Oem/php/lib/php_mbstring.lib
   trunk/MgDev/Oem/php/lib/php_mysqli.lib
   trunk/MgDev/Oem/php/lib/php_oci8_19.lib
   trunk/MgDev/Oem/php/lib/php_odbc.lib
   trunk/MgDev/Oem/php/lib/php_opcache.lib
   trunk/MgDev/Oem/php/lib/php_openssl.lib
   trunk/MgDev/Oem/php/lib/php_pdo_firebird.lib
   trunk/MgDev/Oem/php/lib/php_pdo_mysql.lib
   trunk/MgDev/Oem/php/lib/php_pdo_oci.lib
   trunk/MgDev/Oem/php/lib/php_pdo_odbc.lib
   trunk/MgDev/Oem/php/lib/php_pdo_pgsql.lib
   trunk/MgDev/Oem/php/lib/php_pdo_sqlite.lib
   trunk/MgDev/Oem/php/lib/php_pgsql.lib
   trunk/MgDev/Oem/php/lib/php_shmop.lib
   trunk/MgDev/Oem/php/lib/php_snmp.lib
   trunk/MgDev/Oem/php/lib/php_soap.lib
   trunk/MgDev/Oem/php/lib/php_sockets.lib
   trunk/MgDev/Oem/php/lib/php_sodium.lib
   trunk/MgDev/Oem/php/lib/php_sqlite3.lib
   trunk/MgDev/Oem/php/lib/php_sysvshm.lib
   trunk/MgDev/Oem/php/lib/php_tidy.lib
   trunk/MgDev/Oem/php/lib/php_xsl.lib
   trunk/MgDev/Oem/php/lib/php_zend_test.lib
   trunk/MgDev/Oem/php/script/Makefile.phpize
   trunk/MgDev/Oem/php/script/config.w32.phpize.in
   trunk/MgDev/Oem/php/script/confutils.js
   trunk/MgDev/Oem/php/script/ext_deps.js
   trunk/MgDev/Oem/php/script/phpize.js
   trunk/MgDev/Oem/php/script/run-tests.php
Log:
I had a complete brain fade and not only did I download the wrong PHP devel pack (8.2.4 instead of 8.1.17), but also extracted said contents of this wrong version into Oem/php

This submission includes the *correct* PHP devel pack files (8.1.17) to match our current bundled version of PHP

Modified: trunk/MgDev/Oem/php/build/default.manifest
===================================================================
--- trunk/MgDev/Oem/php/build/default.manifest	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/build/default.manifest	2023-03-28 14:50:37 UTC (rev 10039)
@@ -15,7 +15,7 @@
            <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
            <!-- Windows 8.1 -->
            <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
-           <!-- Windows 10 and Windows 11 -->
+           <!-- Windows 10 -->
            <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
        </application>
    </compatibility>

Modified: trunk/MgDev/Oem/php/build/gen_stub.php
===================================================================
--- trunk/MgDev/Oem/php/build/gen_stub.php	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/build/gen_stub.php	2023-03-28 14:50:37 UTC (rev 10039)
@@ -15,14 +15,7 @@
 use PhpParser\PrettyPrinterAbstract;
 
 error_reporting(E_ALL);
-ini_set("precision", "-1");
 
-const PHP_70_VERSION_ID = 70000;
-const PHP_80_VERSION_ID = 80000;
-const PHP_81_VERSION_ID = 80100;
-const PHP_82_VERSION_ID = 80200;
-const ALL_PHP_VERSION_IDS = [PHP_70_VERSION_ID, PHP_80_VERSION_ID, PHP_81_VERSION_ID, PHP_82_VERSION_ID];
-
 /**
  * @return FileInfo[]
  */
@@ -52,84 +45,42 @@
     return $fileInfos;
 }
 
-function processStubFile(string $stubFile, Context $context, bool $includeOnly = false): ?FileInfo {
+function processStubFile(string $stubFile, Context $context): ?FileInfo {
     try {
         if (!file_exists($stubFile)) {
             throw new Exception("File $stubFile does not exist");
         }
 
-        if (!$includeOnly) {
-            $stubFilenameWithoutExtension = str_replace(".stub.php", "", $stubFile);
-            $arginfoFile = "{$stubFilenameWithoutExtension}_arginfo.h";
-            $legacyFile = "{$stubFilenameWithoutExtension}_legacy_arginfo.h";
+        $arginfoFile = str_replace('.stub.php', '_arginfo.h', $stubFile);
+        $legacyFile = str_replace('.stub.php', '_legacy_arginfo.h', $stubFile);
 
-            $stubCode = file_get_contents($stubFile);
-            $stubHash = computeStubHash($stubCode);
-            $oldStubHash = extractStubHash($arginfoFile);
-            if ($stubHash === $oldStubHash && !$context->forceParse) {
-                /* Stub file did not change, do not regenerate. */
-                return null;
-            }
+        $stubCode = file_get_contents($stubFile);
+        $stubHash = computeStubHash($stubCode);
+        $oldStubHash = extractStubHash($arginfoFile);
+        if ($stubHash === $oldStubHash && !$context->forceParse) {
+            /* Stub file did not change, do not regenerate. */
+            return null;
         }
 
-        if (!$fileInfo = $context->parsedFiles[$stubFile] ?? null) {
-            initPhpParser();
-            $fileInfo = parseStubFile($stubCode ?? file_get_contents($stubFile));
-            $context->parsedFiles[$stubFile] = $fileInfo;
+        initPhpParser();
+        $fileInfo = parseStubFile($stubCode);
 
-            foreach ($fileInfo->dependencies as $dependency) {
-                // TODO add header search path for extensions?
-                $prefixes = [dirname($stubFile) . "/", dirname(__DIR__) . "/"];
-                foreach ($prefixes as $prefix) {
-                    $depFile = $prefix . $dependency;
-                    if (file_exists($depFile)) {
-                        break;
-                    }
-                    $depFile = null;
-                }
-                if (!$depFile) {
-                    throw new Exception("File $stubFile includes a file $dependency which does not exist");
-                }
-                processStubFile($depFile, $context, true);
-            }
-
-            $constInfos = $fileInfo->getAllConstInfos();
-            $context->allConstInfos = array_merge($context->allConstInfos, $constInfos);
-        }
-
-        if ($includeOnly) {
-            return $fileInfo;
-        }
-
-        $arginfoCode = generateArgInfoCode(
-            basename($stubFilenameWithoutExtension),
-            $fileInfo,
-            $context->allConstInfos,
-            $stubHash
-        );
+        $arginfoCode = generateArgInfoCode($fileInfo, $stubHash);
         if (($context->forceRegeneration || $stubHash !== $oldStubHash) && file_put_contents($arginfoFile, $arginfoCode)) {
             echo "Saved $arginfoFile\n";
         }
 
-        if ($fileInfo->generateLegacyArginfoForPhpVersionId !== null && $fileInfo->generateLegacyArginfoForPhpVersionId < PHP_80_VERSION_ID) {
+        if ($fileInfo->generateLegacyArginfo) {
             $legacyFileInfo = clone $fileInfo;
 
             foreach ($legacyFileInfo->getAllFuncInfos() as $funcInfo) {
                 $funcInfo->discardInfoForOldPhpVersions();
             }
-            foreach ($legacyFileInfo->getAllConstInfos() as $constInfo) {
-                $constInfo->discardInfoForOldPhpVersions();
-            }
             foreach ($legacyFileInfo->getAllPropertyInfos() as $propertyInfo) {
                 $propertyInfo->discardInfoForOldPhpVersions();
             }
 
-            $arginfoCode = generateArgInfoCode(
-                basename($stubFilenameWithoutExtension),
-                $legacyFileInfo,
-                $context->allConstInfos,
-                $stubHash
-            );
+            $arginfoCode = generateArgInfoCode($legacyFileInfo, $stubHash);
             if (($context->forceRegeneration || $stubHash !== $oldStubHash) && file_put_contents($legacyFile, $arginfoCode)) {
                 echo "Saved $legacyFile\n";
             }
@@ -160,18 +111,19 @@
 }
 
 class Context {
-    public bool $forceParse = false;
-    public bool $forceRegeneration = false;
-    /** @var iterable<ConstInfo> */
-    public iterable $allConstInfos = [];
-    /** @var FileInfo[] */
-    public array $parsedFiles = [];
+    /** @var bool */
+    public $forceParse = false;
+    /** @var bool */
+    public $forceRegeneration = false;
 }
 
 class ArrayType extends SimpleType {
-    public Type $keyType;
-    public Type $valueType;
+    /** @var Type */
+    public $keyType;
 
+    /** @var Type */
+    public $valueType;
+
     public static function createGenericArray(): self
     {
         return new ArrayType(Type::fromString("int|string"), Type::fromString("mixed|ref"));
@@ -208,8 +160,10 @@
 }
 
 class SimpleType {
-    public string $name;
-    public bool $isBuiltin;
+    /** @var string */
+    public $name;
+    /** @var bool */
+    public $isBuiltin;
 
     public static function fromNode(Node $node): SimpleType {
         if ($node instanceof Node\Name) {
@@ -218,11 +172,6 @@
                 return new SimpleType($node->toLowerString(), true);
             }
 
-            if ($node->toLowerString() === 'true') {
-                // TODO PHP-Parser doesn't yet recognize true as a stand-alone built-in type
-                return new SimpleType($node->toLowerString(), true);
-            }
-
             if ($node->toLowerString() === 'self') {
                 throw new Exception('The exact class name must be used instead of "self"');
             }
@@ -254,6 +203,7 @@
             case "float":
             case "string":
             case "callable":
+            case "iterable":
             case "object":
             case "resource":
             case "mixed":
@@ -265,8 +215,6 @@
                 return ArrayType::createGenericArray();
             case "self":
                 throw new Exception('The exact class name must be used instead of "self"');
-            case "iterable":
-                throw new Exception('This should not happen');
         }
 
         $matches = [];
@@ -288,66 +236,11 @@
         return new SimpleType($typeString, false);
     }
 
-    /**
-     * @param mixed $value
-     */
-    public static function fromValue($value): SimpleType
-    {
-        switch (gettype($value)) {
-            case "NULL":
-                return SimpleType::null();
-            case "boolean":
-                return SimpleType::bool();
-            case "integer":
-                return SimpleType::int();
-            case "double":
-                return SimpleType::float();
-            case "string":
-                return SimpleType::string();
-            case "array":
-                return SimpleType::array();
-            case "object":
-                return SimpleType::object();
-            default:
-                throw new Exception("Type \"" . gettype($value) . "\" cannot be inferred based on value");
-        }
-    }
-
     public static function null(): SimpleType
     {
         return new SimpleType("null", true);
     }
 
-    public static function bool(): SimpleType
-    {
-        return new SimpleType("bool", true);
-    }
-
-    public static function int(): SimpleType
-    {
-        return new SimpleType("int", true);
-    }
-
-    public static function float(): SimpleType
-    {
-        return new SimpleType("float", true);
-    }
-
-    public static function string(): SimpleType
-    {
-        return new SimpleType("string", true);
-    }
-
-    public static function array(): SimpleType
-    {
-        return new SimpleType("array", true);
-    }
-
-    public static function object(): SimpleType
-    {
-        return new SimpleType("object", true);
-    }
-
     public static function void(): SimpleType
     {
         return new SimpleType("void", true);
@@ -366,26 +259,6 @@
         return $this->isBuiltin && $this->name === 'null';
     }
 
-    public function isBool(): bool {
-        return $this->isBuiltin && $this->name === 'bool';
-    }
-
-    public function isInt(): bool {
-        return $this->isBuiltin && $this->name === 'int';
-    }
-
-    public function isFloat(): bool {
-        return $this->isBuiltin && $this->name === 'float';
-    }
-
-    public function isString(): bool {
-        return $this->isBuiltin && $this->name === 'string';
-    }
-
-    public function isArray(): bool {
-        return $this->isBuiltin && $this->name === 'array';
-    }
-
     public function toTypeCode(): string {
         assert($this->isBuiltin);
         switch ($this->name) {
@@ -405,6 +278,8 @@
                 return "IS_VOID";
             case "callable":
                 return "IS_CALLABLE";
+            case "iterable":
+                return "IS_ITERABLE";
             case "mixed":
                 return "IS_MIXED";
             case "static":
@@ -411,12 +286,6 @@
                 return "IS_STATIC";
             case "never":
                 return "IS_NEVER";
-            case "null":
-                return "IS_NULL";
-            case "false":
-                return "IS_FALSE";
-            case "true":
-                return "IS_TRUE";
             default:
                 throw new Exception("Not implemented: $this->name");
         }
@@ -430,8 +299,6 @@
                 return "MAY_BE_NULL";
             case "false":
                 return "MAY_BE_FALSE";
-            case "true":
-                return "MAY_BE_TRUE";
             case "bool":
                 return "MAY_BE_BOOL";
             case "int":
@@ -446,6 +313,8 @@
                 return "MAY_BE_OBJECT";
             case "callable":
                 return "MAY_BE_CALLABLE";
+            case "iterable":
+                return "MAY_BE_ITERABLE";
             case "mixed":
                 return "MAY_BE_ANY";
             case "void":
@@ -482,8 +351,6 @@
                 return "MAY_BE_ARRAY_OF_NULL";
             case "false":
                 return "MAY_BE_ARRAY_OF_FALSE";
-            case "true":
-                return "MAY_BE_ARRAY_OF_TRUE";
             case "bool":
                 return "MAY_BE_ARRAY_OF_FALSE|MAY_BE_ARRAY_OF_TRUE";
             case "int":
@@ -513,6 +380,8 @@
         }
 
         switch ($this->name) {
+            case "true":
+                return "MAY_BE_TRUE";
             case "resource":
                 return "MAY_BE_RESOURCE";
             case "callable":
@@ -527,15 +396,11 @@
     }
 
     public function toEscapedName(): string {
-        // Escape backslashes, and also encode \u and \U to avoid compilation errors in generated macros
-        return str_replace(
-            ['\\', '\\u', '\\U'],
-            ['\\\\', '\\\\165', '\\\\125'],
-            $this->name
-        );
+        return str_replace('\\', '\\\\', $this->name);
     }
 
     public function toVarEscapedName(): string {
+        $name = str_replace('_', '__', $this->name);
         return str_replace('\\', '_', $this->name);
     }
 
@@ -546,40 +411,23 @@
 
 class Type {
     /** @var SimpleType[] */
-    public array $types;
-    public bool $isIntersection;
+    public $types;
 
     public static function fromNode(Node $node): Type {
-        if ($node instanceof Node\UnionType || $node instanceof Node\IntersectionType) {
-            $nestedTypeObjects = array_map(['Type', 'fromNode'], $node->types);
-            $types = [];
-            foreach ($nestedTypeObjects as $typeObject) {
-                array_push($types, ...$typeObject->types);
-            }
-            return new Type($types, ($node instanceof Node\IntersectionType));
+        if ($node instanceof Node\UnionType) {
+            return new Type(array_map(['SimpleType', 'fromNode'], $node->types));
         }
 
         if ($node instanceof Node\NullableType) {
             return new Type(
                 [
-                    ...Type::fromNode($node->type)->types,
+                    SimpleType::fromNode($node->type),
                     SimpleType::null(),
-                ],
-                false
+                ]
             );
         }
 
-        if ($node instanceof Node\Identifier && $node->toLowerString() === "iterable") {
-            return new Type(
-                [
-                    SimpleType::fromString("Traversable"),
-                    ArrayType::createGenericArray(),
-                ],
-                false
-            );
-        }
-
-        return new Type([SimpleType::fromNode($node)], false);
+        return new Type([SimpleType::fromNode($node)]);
     }
 
     public static function fromString(string $typeString): self {
@@ -587,7 +435,6 @@
         $simpleTypes = [];
         $simpleTypeOffset = 0;
         $inArray = false;
-        $isIntersection = false;
 
         $typeStringLength = strlen($typeString);
         for ($i = 0; $i < $typeStringLength; $i++) {
@@ -607,8 +454,7 @@
                 continue;
             }
 
-            if ($char === "|" || $char === "&") {
-                $isIntersection = ($char === "&");
+            if ($char === "|") {
                 $simpleTypeName = trim(substr($typeString, $simpleTypeOffset, $i - $simpleTypeOffset));
 
                 $simpleTypes[] = SimpleType::fromString($simpleTypeName);
@@ -617,15 +463,14 @@
             }
         }
 
-        return new Type($simpleTypes, $isIntersection);
+        return new Type($simpleTypes);
     }
 
     /**
      * @param SimpleType[] $types
      */
-    private function __construct(array $types, bool $isIntersection) {
+    private function __construct(array $types) {
         $this->types = $types;
-        $this->isIntersection = $isIntersection;
     }
 
     public function isScalar(): bool {
@@ -655,17 +500,12 @@
                 function(SimpleType $type) {
                     return !$type->isNull();
                 }
-            ),
-            false
+            )
         );
     }
 
     public function tryToSimpleType(): ?SimpleType {
         $withoutNull = $this->getWithoutNull();
-        /* type has only null */
-        if (count($withoutNull->types) === 0) {
-            return $this->types[0];
-        }
         if (count($withoutNull->types) === 1) {
             return $withoutNull->types[0];
         }
@@ -689,7 +529,6 @@
         $optimizerTypes = [];
 
         foreach ($this->types as $type) {
-            // TODO Support for toOptimizerMask for intersection
             $optimizerTypes[] = $type->toOptimizerTypeMask();
         }
 
@@ -718,9 +557,8 @@
 
     public function getTypeForDoc(DOMDocument $doc): DOMElement {
         if (count($this->types) > 1) {
-            $typeSort = $this->isIntersection ? "intersection" : "union";
             $typeElement = $doc->createElement('type');
-            $typeElement->setAttribute("class", $typeSort);
+            $typeElement->setAttribute("class", "union");
 
             foreach ($this->types as $type) {
                 $unionTypeElement = $doc->createElement('type', $type->name);
@@ -763,8 +601,7 @@
             return 'mixed';
         }
 
-        $char = $this->isIntersection ? '&' : '|';
-        return implode($char, array_map(
+        return implode('|', array_map(
             function ($type) { return $type->name; },
             $this->types)
         );
@@ -773,9 +610,10 @@
 
 class ArginfoType {
     /** @var SimpleType[] $classTypes */
-    public array $classTypes;
+    public $classTypes;
+
     /** @var SimpleType[] $builtinTypes */
-    private array $builtinTypes;
+    private $builtinTypes;
 
     /**
      * @param SimpleType[] $classTypes
@@ -811,33 +649,25 @@
     const SEND_BY_REF = 1;
     const SEND_PREFER_REF = 2;
 
-    public string $name;
-    public int $sendBy;
-    public bool $isVariadic;
-    public ?Type $type;
-    public ?Type $phpDocType;
-    public ?string $defaultValue;
-    /** @var AttributeInfo[] */
-    public array $attributes;
+    /** @var string */
+    public $name;
+    /** @var int */
+    public $sendBy;
+    /** @var bool */
+    public $isVariadic;
+    /** @var Type|null */
+    public $type;
+    /** @var Type|null */
+    public $phpDocType;
+    /** @var string|null */
+    public $defaultValue;
 
-    /**
-     * @param AttributeInfo[] $attributes
-     */
-    public function __construct(
-        string $name,
-        int $sendBy,
-        bool $isVariadic,
-        ?Type $type,
-        ?Type $phpDocType,
-        ?string $defaultValue,
-        array $attributes
-    ) {
+    public function __construct(string $name, int $sendBy, bool $isVariadic, ?Type $type, ?Type $phpDocType, ?string $defaultValue) {
         $this->name = $name;
         $this->sendBy = $sendBy;
         $this->isVariadic = $isVariadic;
         $this->setTypes($type, $phpDocType);
         $this->defaultValue = $defaultValue;
-        $this->attributes = $attributes;
     }
 
     public function equals(ArgInfo $other): bool {
@@ -903,86 +733,20 @@
 
     private function setTypes(?Type $type, ?Type $phpDocType): void
     {
+        if ($phpDocType !== null && Type::equals($type, $phpDocType)) {
+            throw new Exception('PHPDoc param type "' . $phpDocType->__toString() . '" is unnecessary');
+        }
+
         $this->type = $type;
         $this->phpDocType = $phpDocType;
     }
 }
 
-interface ConstOrClassConstName {
-    public function __toString(): string;
-    public function equals(ConstOrClassConstName $const): bool;
-    public function isClassConst(): bool;
-    public function isUnknown(): bool;
-}
-
-abstract class AbstractConstName implements ConstOrClassConstName
-{
-    public function equals(ConstOrClassConstName $const): bool
-    {
-        return $this->__toString() === $const->__toString();
-    }
-
-    public function isUnknown(): bool
-    {
-        return strtolower($this->__toString()) === "unknown";
-    }
-}
-
-class ConstName extends AbstractConstName {
-    public string $const;
-
-    public function __construct(?Name $namespace, string $const)
-    {
-        if ($namespace && ($namespace = $namespace->slice(0, -1))) {
-            $const = $namespace->toString() . '\\' . $const;
-        }
-        $this->const = $const;
-    }
-
-    public function isClassConst(): bool
-    {
-        return false;
-    }
-
-    public function isUnknown(): bool
-    {
-        $name = $this->__toString();
-        if (($pos = strrpos($name, '\\')) !== false) {
-            $name = substr($name, $pos + 1);
-        }
-        return strtolower($name) === "unknown";
-    }
-
-    public function __toString(): string
-    {
-        return $this->const;
-    }
-}
-
-class ClassConstName extends AbstractConstName {
-    public Name $class;
-    public string $const;
-
-    public function __construct(Name $class, string $const)
-    {
-        $this->class = $class;
-        $this->const = $const;
-    }
-
-    public function isClassConst(): bool
-    {
-        return true;
-    }
-
-    public function __toString(): string
-    {
-        return $this->class->toString() . "::" . $this->const;
-    }
-}
-
 class PropertyName {
-    public Name $class;
-    public string $property;
+    /** @var Name */
+    public $class;
+    /** @var string */
+    public $property;
 
     public function __construct(Name $class, string $property)
     {
@@ -1000,7 +764,6 @@
     public function getDeclaration(): string;
     public function getArgInfoName(): string;
     public function getMethodSynopsisFilename(): string;
-    public function getNameForAttributes(): string;
     public function __toString(): string;
     public function isMethod(): bool;
     public function isConstructor(): bool;
@@ -1008,7 +771,8 @@
 }
 
 class FunctionName implements FunctionOrMethodName {
-    private Name $name;
+    /** @var Name */
+    private $name;
 
     public function __construct(Name $name) {
         $this->name = $name;
@@ -1029,10 +793,6 @@
     }
 
     public function getDeclarationName(): string {
-        return implode('_', $this->name->parts);
-    }
-
-    public function getFunctionName(): string {
         return $this->name->getLast();
     }
 
@@ -1049,10 +809,6 @@
         return implode('_', $this->name->parts);
     }
 
-    public function getNameForAttributes(): string {
-        return strtolower($this->name->toString());
-    }
-
     public function __toString(): string {
         return $this->name->toString();
     }
@@ -1071,8 +827,10 @@
 }
 
 class MethodName implements FunctionOrMethodName {
-    public Name $className;
-    public string $methodName;
+    /** @var Name */
+    private $className;
+    /** @var string */
+    public $methodName;
 
     public function __construct(Name $className, string $methodName) {
         $this->className = $className;
@@ -1095,10 +853,6 @@
         return $this->getDeclarationClassName() . "_{$this->methodName}";
     }
 
-    public function getNameForAttributes(): string {
-        return strtolower($this->methodName);
-    }
-
     public function __toString(): string {
         return "$this->className::$this->methodName";
     }
@@ -1127,11 +881,16 @@
         self::REFCOUNT_N,
     ];
 
-    public bool $byRef;
-    public ?Type $type;
-    public ?Type $phpDocType;
-    public bool $tentativeReturnType;
-    public string $refcount;
+    /** @var bool */
+    public $byRef;
+    /** @var Type|null */
+    public $type;
+    /** @var Type|null */
+    public $phpDocType;
+    /** @var bool */
+    public $tentativeReturnType;
+    /** @var string */
+    public $refcount;
 
     public function __construct(bool $byRef, ?Type $type, ?Type $phpDocType, bool $tentativeReturnType, ?string $refcount) {
         $this->byRef = $byRef;
@@ -1151,6 +910,10 @@
 
     private function setTypes(?Type $type, ?Type $phpDocType, bool $tentativeReturnType): void
     {
+        if ($phpDocType !== null && Type::equals($type, $phpDocType)) {
+            throw new Exception('PHPDoc return type "' . $phpDocType->__toString() . '" is unnecessary');
+        }
+
         $this->type = $type;
         $this->phpDocType = $phpDocType;
         $this->tentativeReturnType = $tentativeReturnType;
@@ -1183,20 +946,28 @@
 }
 
 class FuncInfo {
-    public FunctionOrMethodName $name;
-    public int $classFlags;
-    public int $flags;
-    public ?string $aliasType;
-    public ?FunctionOrMethodName $alias;
-    public bool $isDeprecated;
-    public bool $supportsCompileTimeEval;
-    public bool $verify;
+    /** @var FunctionOrMethodName */
+    public $name;
+    /** @var int */
+    public $classFlags;
+    /** @var int */
+    public $flags;
+    /** @var string|null */
+    public $aliasType;
+    /** @var FunctionName|null */
+    public $alias;
+    /** @var bool */
+    public $isDeprecated;
+    /** @var bool */
+    public $verify;
     /** @var ArgInfo[] */
-    public array $args;
-    public ReturnInfo $return;
-    public int $numRequiredArgs;
-    public ?string $cond;
-    public bool $isUndocumentable;
+    public $args;
+    /** @var ReturnInfo */
+    public $return;
+    /** @var int */
+    public $numRequiredArgs;
+    /** @var string|null */
+    public $cond;
 
     /**
      * @param ArgInfo[] $args
@@ -1208,13 +979,11 @@
         ?string $aliasType,
         ?FunctionOrMethodName $alias,
         bool $isDeprecated,
-        bool $supportsCompileTimeEval,
         bool $verify,
         array $args,
         ReturnInfo $return,
         int $numRequiredArgs,
-        ?string $cond,
-        bool $isUndocumentable
+        ?string $cond
     ) {
         $this->name = $name;
         $this->classFlags = $classFlags;
@@ -1222,13 +991,11 @@
         $this->aliasType = $aliasType;
         $this->alias = $alias;
         $this->isDeprecated = $isDeprecated;
-        $this->supportsCompileTimeEval = $supportsCompileTimeEval;
         $this->verify = $verify;
         $this->args = $args;
         $this->return = $return;
         $this->numRequiredArgs = $numRequiredArgs;
         $this->cond = $cond;
-        $this->isUndocumentable = $isUndocumentable;
     }
 
     public function isMethod(): bool
@@ -1361,42 +1128,35 @@
             }
         } else if ($this->name instanceof FunctionName) {
             $namespace = $this->name->getNamespace();
-            $functionName = $this->name->getFunctionName();
-            $declarationName = $this->alias ? $this->alias->getNonNamespacedName() : $this->name->getDeclarationName();
+            $declarationName = $this->name->getDeclarationName();
 
-            if ($namespace) {
-                // Namespaced functions are always declared as aliases to avoid name conflicts when two functions with
-                // the same name exist in separate namespaces
-                $macro = $this->isDeprecated ? 'ZEND_NS_DEP_FALIAS' : 'ZEND_NS_FALIAS';
-
-                // Render A\B as "A\\B" in C strings for namespaces
+            if ($this->alias && $this->isDeprecated) {
                 return sprintf(
-                    "\t%s(\"%s\", %s, %s, %s)\n",
-                    $macro, addslashes($namespace), $this->name->getFunctionName(), $declarationName, $this->getArgInfoName()
+                    "\tZEND_DEP_FALIAS(%s, %s, %s)\n",
+                    $declarationName, $this->alias->getNonNamespacedName(), $this->getArgInfoName()
                 );
             }
 
             if ($this->alias) {
-                $macro = $this->isDeprecated ? 'ZEND_DEP_FALIAS' : 'ZEND_FALIAS';
-
                 return sprintf(
-                    "\t%s(%s, %s, %s)\n",
-                    $macro, $functionName, $declarationName, $this->getArgInfoName()
+                    "\tZEND_FALIAS(%s, %s, %s)\n",
+                    $declarationName, $this->alias->getNonNamespacedName(), $this->getArgInfoName()
                 );
             }
 
-            switch (true) {
-                case $this->isDeprecated:
-                    $macro = 'ZEND_DEP_FE';
-                    break;
-                case $this->supportsCompileTimeEval:
-                    $macro = 'ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE';
-                    break;
-                default:
-                    $macro = 'ZEND_FE';
+            if ($this->isDeprecated) {
+                return sprintf(
+                    "\tZEND_DEP_FE(%s, %s)\n", $declarationName, $this->getArgInfoName());
             }
 
-            return sprintf("\t%s(%s, %s)\n", $macro, $functionName, $this->getArgInfoName());
+            if ($namespace) {
+                // Render A\B as "A\\B" in C strings for namespaces
+                return sprintf(
+                    "\tZEND_NS_FE(\"%s\", %s, %s)\n",
+                    addslashes($namespace), $declarationName, $this->getArgInfoName());
+            } else {
+                return sprintf("\tZEND_FE(%s, %s)\n", $declarationName, $this->getArgInfoName());
+            }
         } else {
             throw new Error("Cannot happen");
         }
@@ -1420,7 +1180,7 @@
             return null;
         }
 
-        return "\tF" . $this->return->refcount . '("' . $this->name->__toString() . '", ' . $type->toOptimizerTypeMask() . "),\n";
+        return "    F" . $this->return->refcount . '("' . $this->name->__toString() . '", ' . $type->toOptimizerTypeMask() . "),\n";
     }
 
     public function discardInfoForOldPhpVersions(): void {
@@ -1428,7 +1188,6 @@
         foreach ($this->args as $arg) {
             $arg->type = null;
             $arg->defaultValue = null;
-            $arg->attributes = [];
         }
     }
 
@@ -1499,10 +1258,14 @@
 
         $methodSynopsis = $doc->createElement($synopsisType);
 
-        if ($this->isMethod()) {
-            assert($this->name instanceof MethodName);
+        $aliasedFunc = $this->aliasType === "alias" && isset($funcMap[$this->alias->__toString()]) ? $funcMap[$this->alias->__toString()] : null;
+        $aliasFunc = $aliasMap[$this->name->__toString()] ?? null;
+
+        if (($this->aliasType === "alias" && $aliasedFunc !== null && $aliasedFunc->isMethod() !== $this->isMethod()) ||
+            ($aliasFunc !== null && $aliasFunc->isMethod() !== $this->isMethod())
+        ) {
             $role = $doc->createAttribute("role");
-            $role->value = addslashes($this->name->className->__toString());
+            $role->value = $this->isMethod() ? "oop" : "procedural";
             $methodSynopsis->appendChild($role);
         }
 
@@ -1573,545 +1336,72 @@
     }
 }
 
-class EvaluatedValue
+function initializeZval(string $zvalName, $value): string
 {
-    /** @var mixed */
-    public $value;
-    public SimpleType $type;
-    public ?string $cConstValue;
-    public bool $isUnknownConstValue;
-    public ?ConstInfo $originatingConst;
+    $code = "\tzval $zvalName;\n";
 
-    /**
-     * @param iterable<ConstInfo> $allConstInfos
-     */
-    public static function createFromExpression(Expr $expr, ?SimpleType $constType, ?string $cConstName, iterable $allConstInfos): EvaluatedValue
-    {
-        $originatingConst = null;
-        $isUnknownConstValue = null;
+    switch (gettype($value)) {
+        case "NULL":
+            $code .= "\tZVAL_NULL(&$zvalName);\n";
+            break;
 
-        $evaluator = new ConstExprEvaluator(
-            function (Expr $expr) use ($allConstInfos, &$constType, &$originatingConst, &$isUnknownConstValue) {
-                if (!$expr instanceof Expr\ConstFetch && !$expr instanceof Expr\ClassConstFetch) {
-                    throw new Exception($this->getVariableTypeName() . " " . $this->getVariableLikeName() . " has an unsupported value");
-                }
+        case "boolean":
+            $code .= "\tZVAL_BOOL(&$zvalName, " . ((int) $value) . ");\n";
+            break;
 
-                if ($expr instanceof Expr\ClassConstFetch) {
-                    $originatingConstName = new ClassConstName($expr->class, $expr->name->toString());
-                } else {
-                    $originatingConstName = new ConstName($expr->name->getAttribute('namespacedName'), $expr->name->toString());
-                }
+        case "integer":
+            $code .= "\tZVAL_LONG(&$zvalName, $value);\n";
+            break;
 
-                if ($originatingConstName->isUnknown()) {
-                    $originatingConst = null;
-                    $isUnknownConstValue = true;
+        case "double":
+            $code .= "\tZVAL_DOUBLE(&$zvalName, $value);\n";
+            break;
 
-                    return null;
-                }
-
-                foreach ($allConstInfos as $const) {
-                    if (!$originatingConstName->equals($const->name)) {
-                        continue;
-                    }
-
-                    if ($constType === null && $const->phpDocType) {
-                        $constType = $const->phpDocType->tryToSimpleType();
-                    }
-
-                    $originatingConst = $const;
-                    $isUnknownConstValue = false;
-
-                    return null;
-                }
-
-                throw new Exception("Constant " . $originatingConstName->__toString() . " cannot be found");
-            }
-        );
-
-        $result = $evaluator->evaluateDirectly($expr);
-
-        return new EvaluatedValue(
-            $result,
-            $constType ?: SimpleType::fromValue($result),
-            $cConstName,
-            $originatingConst,
-            (bool) $isUnknownConstValue
-        );
-    }
-
-    public static function null(): EvaluatedValue
-    {
-        return new self(null, SimpleType::null(), null, null, false);
-    }
-
-    /**
-     * @param mixed $value
-     */
-    private function __construct($value, SimpleType $type, ?string $cConstName, ?ConstInfo $originatingConst, bool $isUnknownConstValue)
-    {
-        $this->value = $value;
-        $this->type = $type;
-        $this->cConstValue = $cConstName;
-        $this->originatingConst = $originatingConst;
-        $this->isUnknownConstValue = $isUnknownConstValue;
-    }
-
-    /**
-     * @param iterable<ConstInfo> $allConstInfos
-     */
-    public function initializeZval(string $zvalName, iterable $allConstInfos): string
-    {
-        $cConstValue = $this->getCConstValue($allConstInfos);
-
-        $code = "\tzval $zvalName;\n";
-
-        if ($this->type->isNull()) {
-            $code .= "\tZVAL_NULL(&$zvalName);\n";
-        } elseif ($this->type->isBool()) {
-            $code .= "\t" . ($this->value ? 'ZVAL_TRUE' : 'ZVAL_FALSE') . "(&$zvalName);\n";
-        } elseif ($this->type->isInt()) {
-            $code .= "\tZVAL_LONG(&$zvalName, " . ($cConstValue ?: $this->value) . ");\n";
-        } elseif ($this->type->isFloat()) {
-            $code .= "\tZVAL_DOUBLE(&$zvalName, " . ($cConstValue ?: $this->value) . ");\n";
-        } elseif ($this->type->isString()) {
-            if (!$cConstValue && $this->value === "") {
+        case "string":
+            if ($value === "") {
                 $code .= "\tZVAL_EMPTY_STRING(&$zvalName);\n";
             } else {
-                $constValue = $cConstValue ?: '"' . addslashes($this->value) . '"';
-                $code .= "\tzend_string *{$zvalName}_str = zend_string_init($constValue, strlen($constValue), 1);\n";
+                $strValue = addslashes($value);
+                $code .= "\tzend_string *{$zvalName}_str = zend_string_init(\"$strValue\", sizeof(\"$strValue\") - 1, 1);\n";
                 $code .= "\tZVAL_STR(&$zvalName, {$zvalName}_str);\n";
             }
-        } elseif ($this->type->isArray()) {
-            if (!$cConstValue && empty($this->value)) {
+            break;
+
+        case "array":
+            if (empty($value)) {
                 $code .= "\tZVAL_EMPTY_ARRAY(&$zvalName);\n";
             } else {
                 throw new Exception("Unimplemented default value");
             }
-        } else {
+            break;
+
+        default:
             throw new Exception("Invalid default value");
-        }
-
-        return $code;
     }
 
-    /**
-     * @param iterable<ConstInfo> $allConstInfos
-     */
-    public function getCConstValue(iterable $allConstInfos): ?string
-    {
-        if ($this->cConstValue) {
-            return $this->cConstValue;
-        }
-
-        if ($this->originatingConst) {
-            return $this->originatingConst->getValue($allConstInfos)->getCConstValue($allConstInfos);
-        }
-
-        return null;
-    }
+    return $code;
 }
 
-abstract class VariableLike
+class PropertyInfo
 {
-    public ?Type $phpDocType;
-    public int $flags;
-    public ?string $link;
-    public ?int $phpVersionIdMinimumCompatibility;
+    /** @var PropertyName */
+    public $name;
+    /** @var int */
+    public $flags;
+    /** @var Type|null */
+    public $type;
+    /** @var Type|null */
+    public $phpDocType;
+    /** @var Expr|null */
+    public $defaultValue;
+    /** @var string|null */
+    public $defaultValueString;
+    /** @var bool */
+    public $isDocReadonly;
+    /** @var string|null */
+    public $link;
 
     public function __construct(
-        int $flags,
-        ?Type $phpDocType,
-        ?string $link,
-        ?int $phpVersionIdMinimumCompatibility
-    ) {
-        $this->flags = $flags;
-        $this->phpDocType = $phpDocType;
-        $this->link = $link;
-        $this->phpVersionIdMinimumCompatibility = $phpVersionIdMinimumCompatibility;
-    }
-
-    abstract protected function getVariableTypeCode(): string;
-
-    abstract protected function getVariableTypeName(): string;
-
-    abstract protected function getVariableLikeName(): string;
-
-    abstract protected function addTypeToFieldSynopsis(DOMDocument $doc, DOMElement $fieldsynopsisElement): void;
-
-    abstract protected function getFieldSynopsisDefaultLinkend(): string;
-
-    abstract protected function getFieldSynopsisName(): string;
-
-    /**
-     * @param iterable<ConstInfo> $allConstInfos
-     */
-    abstract protected function getFieldSynopsisValueString(iterable $allConstInfos): ?string;
-
-    abstract public function discardInfoForOldPhpVersions(): void;
-
-    /**
-     * @return array<int, string[]>
-     */
-    protected function getFlagsByPhpVersion(): array
-    {
-        $flags = "ZEND_ACC_PUBLIC";
-        if ($this->flags & Class_::MODIFIER_PROTECTED) {
-            $flags = "ZEND_ACC_PROTECTED";
-        } elseif ($this->flags & Class_::MODIFIER_PRIVATE) {
-            $flags = "ZEND_ACC_PRIVATE";
-        }
-
-        return [
-            PHP_70_VERSION_ID => [$flags],
-            PHP_80_VERSION_ID => [$flags],
-            PHP_81_VERSION_ID => [$flags],
-            PHP_82_VERSION_ID => [$flags],
-        ];
-    }
-
-    /**
-     * @param iterable<ConstInfo> $allConstInfos
-     */
-    public function getFieldSynopsisElement(DOMDocument $doc, iterable $allConstInfos): DOMElement
-    {
-        $fieldsynopsisElement = $doc->createElement("fieldsynopsis");
-
-        $this->addModifiersToFieldSynopsis($doc, $fieldsynopsisElement);
-
-        $this->addTypeToFieldSynopsis($doc, $fieldsynopsisElement);
-
-        $varnameElement = $doc->createElement("varname", $this->getFieldSynopsisName());
-        if ($this->link) {
-            $varnameElement->setAttribute("linkend", $this->link);
-        } else {
-            $varnameElement->setAttribute("linkend", $this->getFieldSynopsisDefaultLinkend());
-        }
-
-        $fieldsynopsisElement->appendChild(new DOMText("\n     "));
-        $fieldsynopsisElement->appendChild($varnameElement);
-
-        $valueString = $this->getFieldSynopsisValueString($allConstInfos);
-        if ($valueString) {
-            $fieldsynopsisElement->appendChild(new DOMText("\n     "));
-            $initializerElement = $doc->createElement("initializer",  $valueString);
-            $fieldsynopsisElement->appendChild($initializerElement);
-        }
-
-        $fieldsynopsisElement->appendChild(new DOMText("\n    "));
-
-        return $fieldsynopsisElement;
-    }
-
-    protected function addModifiersToFieldSynopsis(DOMDocument $doc, DOMElement $fieldsynopsisElement): void
-    {
-        if ($this->flags & Class_::MODIFIER_PUBLIC) {
-            $fieldsynopsisElement->appendChild(new DOMText("\n     "));
-            $fieldsynopsisElement->appendChild($doc->createElement("modifier", "public"));
-        } elseif ($this->flags & Class_::MODIFIER_PROTECTED) {
-            $fieldsynopsisElement->appendChild(new DOMText("\n     "));
-            $fieldsynopsisElement->appendChild($doc->createElement("modifier", "protected"));
-        } elseif ($this->flags & Class_::MODIFIER_PRIVATE) {
-            $fieldsynopsisElement->appendChild(new DOMText("\n     "));
-            $fieldsynopsisElement->appendChild($doc->createElement("modifier", "private"));
-        }
-    }
-
-    /**
-     * @param array<int, string[]> $flags
-     * @return array<int, string[]>
-     */
-    protected function addFlagForVersionsAbove(array $flags, string $flag, int $minimumVersionId): array
-    {
-        $write = false;
-
-        foreach ($flags as $version => $versionFlags) {
-            if ($version === $minimumVersionId || $write === true) {
-                $flags[$version][] = $flag;
-                $write = true;
-            }
-        }
-
-        return $flags;
-    }
-}
-
-class ConstInfo extends VariableLike
-{
-    public ConstOrClassConstName $name;
-    public Expr $value;
-    public bool $isDeprecated;
-    public ?string $valueString;
-    public ?string $cond;
-    public ?string $cValue;
-
-    public function __construct(
-        ConstOrClassConstName $name,
-        int $flags,
-        Expr $value,
-        ?string $valueString,
-        ?Type $phpDocType,
-        bool $isDeprecated,
-        ?string $cond,
-        ?string $cValue,
-        ?string $link,
-        ?int $phpVersionIdMinimumCompatibility
-    ) {
-        $this->name = $name;
-        $this->value = $value;
-        $this->valueString = $valueString;
-        $this->isDeprecated = $isDeprecated;
-        $this->cond = $cond;
-        $this->cValue = $cValue;
-        parent::__construct($flags, $phpDocType, $link, $phpVersionIdMinimumCompatibility);
-    }
-
-    /**
-     * @param iterable<ConstInfo> $allConstInfos
-     */
-    public function getValue(iterable $allConstInfos): EvaluatedValue
-    {
-        return EvaluatedValue::createFromExpression(
-            $this->value,
-            $this->phpDocType->tryToSimpleType(),
-            $this->cValue,
-            $allConstInfos
-        );
-    }
-
-    protected function getVariableTypeName(): string
-    {
-        return "constant";
-    }
-
-    protected function getVariableLikeName(): string
-    {
-        return $this->name->const;
-    }
-
-    protected function getVariableTypeCode(): string
-    {
-        return "const";
-    }
-
-    protected function getFieldSynopsisDefaultLinkend(): string
-    {
-        $className = str_replace(["\\", "_"], ["-", "-"], $this->name->class->toLowerString());
-
-        return "$className.constants." . strtolower(str_replace("_", "-", $this->name->const));
-    }
-
-    protected function getFieldSynopsisName(): string
-    {
-        return $this->name->__toString();
-    }
-
-    protected function addTypeToFieldSynopsis(DOMDocument $doc, DOMElement $fieldsynopsisElement): void
-    {
-        if ($this->phpDocType) {
-            $fieldsynopsisElement->appendChild(new DOMText("\n     "));
-            $fieldsynopsisElement->appendChild($this->phpDocType->getTypeForDoc($doc));
-        }
-    }
-
-    /**
-     * @param iterable<ConstInfo> $allConstInfos
-     */
-    protected function getFieldSynopsisValueString(iterable $allConstInfos): ?string
-    {
-        $value = EvaluatedValue::createFromExpression($this->value, null, $this->cValue, $allConstInfos);
-        if ($value->isUnknownConstValue) {
-            return null;
-        }
-
-        if ($value->originatingConst) {
-            return $value->originatingConst->getFieldSynopsisValueString($allConstInfos);
-        }
-
-        return $this->valueString;
-    }
-
-    public function discardInfoForOldPhpVersions(): void {
-        $this->flags &= ~Class_::MODIFIER_FINAL;
-        $this->isDeprecated = false;
-    }
-
-    /**
-     * @param iterable<ConstInfo> $allConstInfos
-     */
-    public function getDeclaration(iterable $allConstInfos): string
-    {
-        $type = $this->phpDocType->tryToSimpleType();
-        if ($type === null || !$type->isBuiltin) {
-            throw new Exception("Constant " . $this->name->__toString() . " must have a simple built-in type");
-        }
-
-        $value = EvaluatedValue::createFromExpression($this->value, $type, $this->cValue, $allConstInfos);
-        if ($value->isUnknownConstValue && !$value->cConstValue) {
-            throw new Exception("Constant " . $this->name->__toString() . " must have a @cvalue annotation");
-        }
-
-        $code = "";
-
-        if ($this->cond) {
-            $code .= "#if {$this->cond}\n";
-        }
-
-        if ($this->name->isClassConst()) {
-            $code .= $this->getClassConstDeclaration($value, $allConstInfos);
-        } else {
-            $code .= $this->getGlobalConstDeclaration($value, $allConstInfos);
-        }
-        $code .= $this->getValueAssertion($value);
-
-        if ($this->cond) {
-            $code .= "#endif\n";
-        }
-
-        return $code;
-    }
-
-    /**
-     * @param iterable<ConstInfo> $allConstInfos
-     */
-    private function getGlobalConstDeclaration(EvaluatedValue $value, iterable $allConstInfos): string
-    {
-        $constName = str_replace('\\', '\\\\', $this->name->__toString());
-        $constValue = $value->value;
-        $cConstValue = $value->getCConstValue($allConstInfos);
-
-        $flags = "CONST_PERSISTENT";
-        if ($this->phpVersionIdMinimumCompatibility !== null && $this->phpVersionIdMinimumCompatibility < 80000) {
-            $flags .= " | CONST_CS";
-        }
-
-        if ($this->isDeprecated) {
-            $flags .= " | CONST_DEPRECATED";
-        }
-        if ($value->type->isNull()) {
-            return "\tREGISTER_NULL_CONSTANT(\"$constName\", $flags);\n";
-        }
-
-        if ($value->type->isBool()) {
-            return "\tREGISTER_BOOL_CONSTANT(\"$constName\", " . ($cConstValue ?: ($constValue ? "true" : "false")) . ", $flags);\n";
-        }
-
-        if ($value->type->isInt()) {
-            return "\tREGISTER_LONG_CONSTANT(\"$constName\", " . ($cConstValue ?: (int) $constValue) . ", $flags);\n";
-        }
-
-        if ($value->type->isFloat()) {
-            return "\tREGISTER_DOUBLE_CONSTANT(\"$constName\", " . ($cConstValue ?: (float) $constValue) . ", $flags);\n";
-        }
-
-        if ($value->type->isString()) {
-            return "\tREGISTER_STRING_CONSTANT(\"$constName\", " . ($cConstValue ?: '"' . addslashes($constValue) . '"') . ", $flags);\n";
-        }
-
-        throw new Exception("Unimplemented constant type");}
-
-    /**
-     * @param iterable<ConstInfo> $allConstInfos
-     */
-    private function getClassConstDeclaration(EvaluatedValue $value, iterable $allConstInfos): string
-    {
-        $constName = $this->getVariableLikeName();
-
-        $zvalCode = $value->initializeZval("const_{$constName}_value", $allConstInfos);
-
-        $code = "\n" . $zvalCode;
-
-        $code .= "\tzend_string *const_{$constName}_name = zend_string_init_interned(\"$constName\", sizeof(\"$constName\") - 1, 1);\n";
-        $nameCode = "const_{$constName}_name";
-
-        $template = "\tzend_declare_class_constant_ex(class_entry, $nameCode, &const_{$constName}_value, %s, NULL);\n";
-        $flagsCode = generateVersionDependentFlagCode(
-            $template,
-            $this->getFlagsByPhpVersion(),
-            $this->phpVersionIdMinimumCompatibility
-        );
-        $code .= implode("", $flagsCode);
-        $code .= "\tzend_string_release(const_{$constName}_name);\n";
-
-        return $code;
-    }
-
-    private function getValueAssertion(EvaluatedValue $value): string
-    {
-        if ($value->isUnknownConstValue || $value->originatingConst || $value->cConstValue === null) {
-            return "";
-        }
-
-        $cConstValue = $value->cConstValue;
-        $constValue = $value->value;
-
-        if ($value->type->isNull()) {
-            return "\tZEND_ASSERT($cConstValue == NULL);\n";
-        }
-
-        if ($value->type->isBool()) {
-            $cValue = $constValue ? "true" : "false";
-            return "\tZEND_ASSERT($cConstValue == $cValue);\n";
-        }
-
-        if ($value->type->isInt()) {
-            $cValue = (int) $constValue;
-            return "\tZEND_ASSERT($cConstValue == $cValue);\n";
-        }
-
-        if ($value->type->isFloat()) {
-            $cValue = (float) $constValue;
-            return "\tZEND_ASSERT($cConstValue == $cValue);\n";
-        }
-
-        if ($value->type->isString()) {
-            $cValue = '"' . addslashes($constValue) . '"';
-            return "\tZEND_ASSERT(strcmp($cConstValue, $cValue) == 0);\n";
-        }
-
-        throw new Exception("Unimplemented constant type");
-    }
-
-    /**
-     * @return array<int, string[]>
-     */
-    protected function getFlagsByPhpVersion(): array
-    {
-        $flags = parent::getFlagsByPhpVersion();
-
-        if ($this->isDeprecated) {
-            $flags = $this->addFlagForVersionsAbove($flags, "ZEND_ACC_DEPRECATED", PHP_80_VERSION_ID);
-        }
-
-        if ($this->flags & Class_::MODIFIER_FINAL) {
-            $flags = $this->addFlagForVersionsAbove($flags, "ZEND_ACC_FINAL", PHP_81_VERSION_ID);
-        }
-
-        return $flags;
-    }
-
-    protected function addModifiersToFieldSynopsis(DOMDocument $doc, DOMElement $fieldsynopsisElement): void
-    {
-        parent::addModifiersToFieldSynopsis($doc, $fieldsynopsisElement);
-
-        if ($this->flags & Class_::MODIFIER_FINAL) {
-            $fieldsynopsisElement->appendChild(new DOMText("\n     "));
-            $fieldsynopsisElement->appendChild($doc->createElement("modifier", "final"));
-        }
-
-        $fieldsynopsisElement->appendChild(new DOMText("\n     "));
-        $fieldsynopsisElement->appendChild($doc->createElement("modifier", "const"));
-    }
-}
-
-class PropertyInfo extends VariableLike
-{
-    public PropertyName $name;
-    public ?Type $type;
-    public ?Expr $defaultValue;
-    public ?string $defaultValueString;
-    public bool $isDocReadonly;
-
-    public function __construct(
         PropertyName $name,
         int $flags,
         ?Type $type,
@@ -2119,75 +1409,39 @@
         ?Expr $defaultValue,
         ?string $defaultValueString,
         bool $isDocReadonly,
-        ?string $link,
-        ?int $phpVersionIdMinimumCompatibility
+        ?string $link
     ) {
         $this->name = $name;
+        $this->flags = $flags;
         $this->type = $type;
+        $this->phpDocType = $phpDocType;
         $this->defaultValue = $defaultValue;
         $this->defaultValueString = $defaultValueString;
         $this->isDocReadonly = $isDocReadonly;
-        parent::__construct($flags, $phpDocType, $link, $phpVersionIdMinimumCompatibility);
+        $this->link = $link;
     }
 
-    protected function getVariableTypeCode(): string
-    {
-        return "property";
-    }
-
-    protected function getVariableTypeName(): string
-    {
-        return "property";
-    }
-
-    protected function getVariableLikeName(): string
-    {
-        return $this->name->property;
-    }
-
-    protected function getFieldSynopsisDefaultLinkend(): string
-    {
-        $className = str_replace(["\\", "_"], ["-", "-"], $this->name->class->toLowerString());
-
-        return "$className.props." . strtolower(str_replace("_", "-", $this->name->property));
-    }
-
-    protected function getFieldSynopsisName(): string
-    {
-        return $this->name->property;
-    }
-
-    /**
-     * @param iterable<ConstInfo> $allConstInfos
-     */
-    protected function getFieldSynopsisValueString(iterable $allConstInfos): ?string
-    {
-        return $this->defaultValueString;
-    }
-
     public function discardInfoForOldPhpVersions(): void {
         $this->type = null;
-        $this->flags &= ~Class_::MODIFIER_READONLY;
     }
 
-    /**
-     * @param iterable<ConstInfo> $allConstInfos
-     */
-    public function getDeclaration(iterable $allConstInfos): string {
+    public function getDeclaration(): string {
         $code = "\n";
 
         $propertyName = $this->name->property;
 
+        $defaultValueConstant = false;
         if ($this->defaultValue === null) {
-            $defaultValue = EvaluatedValue::null();
+            $defaultValue = null;
         } else {
-            $defaultValue = EvaluatedValue::createFromExpression($this->defaultValue, null, null, $allConstInfos);
-            if ($defaultValue->isUnknownConstValue || ($defaultValue->originatingConst && $defaultValue->getCConstValue($allConstInfos) === null)) {
-                echo "Skipping code generation for property $this->name, because it has an unknown constant default value\n";
-                return "";
-            }
+            $defaultValue = $this->evaluateDefaultValue($defaultValueConstant);
         }
 
+        if ($defaultValueConstant) {
+            echo "Skipping code generation for property $this->name, because it has a constant default value\n";
+            return "";
+        }
+
         $typeCode = "";
         if ($this->type) {
             $arginfoType = $this->type->toArginfoType();
@@ -2210,16 +1464,12 @@
 
                     $typeMaskCode = $this->type->toArginfoType()->toTypeMask();
 
-                    if ($this->type->isIntersection) {
-                        $code .= "\tzend_type property_{$propertyName}_type = ZEND_TYPE_INIT_INTERSECTION(property_{$propertyName}_type_list, $typeMaskCode);\n";
-                    } else {
-                        $code .= "\tzend_type property_{$propertyName}_type = ZEND_TYPE_INIT_UNION(property_{$propertyName}_type_list, $typeMaskCode);\n";
-                    }
+                    $code .= "\tzend_type property_{$propertyName}_type = ZEND_TYPE_INIT_UNION(property_{$propertyName}_type_list, $typeMaskCode);\n";
                     $typeCode = "property_{$propertyName}_type";
                 } else {
                     $escapedClassName = $arginfoType->classTypes[0]->toEscapedName();
                     $varEscapedClassName = $arginfoType->classTypes[0]->toVarEscapedName();
-                    $code .= "\tzend_string *property_{$propertyName}_class_{$varEscapedClassName} = zend_string_init(\"{$escapedClassName}\", sizeof(\"{$escapedClassName}\")-1, 1);\n";
+                    $code .= "\tzend_string *property_{$propertyName}_class_{$varEscapedClassName} = zend_string_init(\"{$escapedClassName}\", sizeof(\"${escapedClassName}\")-1, 1);\n";
 
                     $typeCode = "(zend_type) ZEND_TYPE_INIT_CLASS(property_{$propertyName}_class_{$varEscapedClassName}, 0, " . $arginfoType->toTypeMask() . ")";
                 }
@@ -2232,7 +1482,7 @@
         if ($this->defaultValue === null && $this->type !== null) {
             $code .= "\tzval $zvalName;\n\tZVAL_UNDEF(&$zvalName);\n";
         } else {
-            $code .= $defaultValue->initializeZval($zvalName, $allConstInfos);
+            $code .= initializeZval($zvalName, $defaultValue);
         }
 
         $code .= "\tzend_string *property_{$propertyName}_name = zend_string_init(\"$propertyName\", sizeof(\"$propertyName\") - 1, 1);\n";
@@ -2239,65 +1489,111 @@
         $nameCode = "property_{$propertyName}_name";
 
         if ($this->type !== null) {
-            $template = "\tzend_declare_typed_property(class_entry, $nameCode, &$zvalName, %s, NULL, $typeCode);\n";
+            $code .= "\tzend_declare_typed_property(class_entry, $nameCode, &$zvalName, " . $this->getFlagsAsString() . ", NULL, $typeCode);\n";
         } else {
-            $template = "\tzend_declare_property_ex(class_entry, $nameCode, &$zvalName, %s, NULL);\n";
+            $code .= "\tzend_declare_property_ex(class_entry, $nameCode, &$zvalName, " . $this->getFlagsAsString() . ", NULL);\n";
         }
-        $flagsCode = generateVersionDependentFlagCode(
-            $template,
-            $this->getFlagsByPhpVersion(),
-            $this->phpVersionIdMinimumCompatibility
-        );
-        $code .= implode("", $flagsCode);
-
         $code .= "\tzend_string_release(property_{$propertyName}_name);\n";
 
         return $code;
     }
 
-    /**
-     * @return array<int, string[]>
-     */
-    protected function getFlagsByPhpVersion(): array
+    private function getFlagsAsString(): string
     {
-        $flags = parent::getFlagsByPhpVersion();
+        $flags = "ZEND_ACC_PUBLIC";
+        if ($this->flags & Class_::MODIFIER_PROTECTED) {
+            $flags = "ZEND_ACC_PROTECTED";
+        } elseif ($this->flags & Class_::MODIFIER_PRIVATE) {
+            $flags = "ZEND_ACC_PRIVATE";
+        }
 
         if ($this->flags & Class_::MODIFIER_STATIC) {
-            $flags = $this->addFlagForVersionsAbove($flags, "ZEND_ACC_STATIC", PHP_70_VERSION_ID);
+            $flags .= "|ZEND_ACC_STATIC";
         }
 
         if ($this->flags & Class_::MODIFIER_READONLY) {
-            $flags = $this->addFlagForVersionsAbove($flags, "ZEND_ACC_READONLY", PHP_81_VERSION_ID);
+            $flags .= "|ZEND_ACC_READONLY";
         }
 
         return $flags;
     }
 
-    protected function addModifiersToFieldSynopsis(DOMDocument $doc, DOMElement $fieldsynopsisElement): void
+    public function getFieldSynopsisElement(DOMDocument $doc): DOMElement
     {
-        parent::addModifiersToFieldSynopsis($doc, $fieldsynopsisElement);
+        $fieldsynopsisElement = $doc->createElement("fieldsynopsis");
 
+        if ($this->flags & Class_::MODIFIER_PUBLIC) {
+            $fieldsynopsisElement->appendChild(new DOMText("\n     "));
+            $fieldsynopsisElement->appendChild($doc->createElement("modifier", "public"));
+        } elseif ($this->flags & Class_::MODIFIER_PROTECTED) {
+            $fieldsynopsisElement->appendChild(new DOMText("\n     "));
+            $fieldsynopsisElement->appendChild($doc->createElement("modifier", "protected"));
+        } elseif ($this->flags & Class_::MODIFIER_PRIVATE) {
+            $fieldsynopsisElement->appendChild(new DOMText("\n     "));
+            $fieldsynopsisElement->appendChild($doc->createElement("modifier", "private"));
+        }
+
         if ($this->flags & Class_::MODIFIER_STATIC) {
             $fieldsynopsisElement->appendChild(new DOMText("\n     "));
             $fieldsynopsisElement->appendChild($doc->createElement("modifier", "static"));
+        } elseif ($this->flags & Class_::MODIFIER_READONLY || $this->isDocReadonly) {
+            $fieldsynopsisElement->appendChild(new DOMText("\n     "));
+            $fieldsynopsisElement->appendChild($doc->createElement("modifier", "readonly"));
         }
 
-        if ($this->flags & Class_::MODIFIER_READONLY || $this->isDocReadonly) {
+        $fieldsynopsisElement->appendChild(new DOMText("\n     "));
+        $fieldsynopsisElement->appendChild($this->getFieldSynopsisType()->getTypeForDoc($doc));
+
+        $className = str_replace(["\\", "_"], ["-", "-"], $this->name->class->toLowerString());
+        $varnameElement = $doc->createElement("varname", $this->name->property);
+        if ($this->link) {
+            $varnameElement->setAttribute("linkend", $this->link);
+        } else {
+            $varnameElement->setAttribute("linkend", "$className.props." . strtolower(str_replace("_", "-", $this->name->property)));
+        }
+        $fieldsynopsisElement->appendChild(new DOMText("\n     "));
+        $fieldsynopsisElement->appendChild($varnameElement);
+
+        if ($this->defaultValueString) {
             $fieldsynopsisElement->appendChild(new DOMText("\n     "));
-            $fieldsynopsisElement->appendChild($doc->createElement("modifier", "readonly"));
+            $initializerElement = $doc->createElement("initializer",  $this->defaultValueString);
+            $fieldsynopsisElement->appendChild($initializerElement);
         }
+
+        $fieldsynopsisElement->appendChild(new DOMText("\n    "));
+
+        return $fieldsynopsisElement;
     }
 
-    protected function addTypeToFieldSynopsis(DOMDocument $doc, DOMElement $fieldsynopsisElement): void
-    {
-        $type = $this->phpDocType ?? $this->type;
+    private function getFieldSynopsisType(): Type {
+        if ($this->phpDocType) {
+            return $this->phpDocType;
+        }
 
-        if ($type) {
-            $fieldsynopsisElement->appendChild(new DOMText("\n     "));
-            $fieldsynopsisElement->appendChild($type->getTypeForDoc($doc));
+        if ($this->type) {
+            return $this->type;
         }
+
+        throw new Exception("A property must have a type");
     }
 
+    /** @return mixed */
+    private function evaluateDefaultValue(bool &$defaultValueConstant)
+    {
+        $evaluator = new ConstExprEvaluator(
+            function (Expr $expr) use (&$defaultValueConstant) {
+                if ($expr instanceof Expr\ConstFetch) {
+                    $defaultValueConstant = true;
+                    return null;
+                }
+
+                throw new Exception("Property $this->name has an unsupported default value");
+            }
+        );
+
+        return $evaluator->evaluateDirectly($this->defaultValue);
+    }
+
     public function __clone()
     {
         if ($this->type) {
@@ -2307,8 +1603,10 @@
 }
 
 class EnumCaseInfo {
-    public string $name;
-    public ?Expr $value;
+    /** @var string */
+    public $name;
+    /** @var Expr|null */
+    public $value;
 
     public function __construct(string $name, ?Expr $value) {
         $this->name = $name;
@@ -2315,96 +1613,53 @@
         $this->value = $value;
     }
 
-    /**
-     * @param iterable<ConstInfo> $allConstInfos
-     */
-    public function getDeclaration(iterable $allConstInfos): string {
+    public function getDeclaration(): string {
         $escapedName = addslashes($this->name);
         if ($this->value === null) {
             $code = "\n\tzend_enum_add_case_cstr(class_entry, \"$escapedName\", NULL);\n";
         } else {
-            $value = EvaluatedValue::createFromExpression($this->value, null, null, $allConstInfos);
-
+            $evaluator = new ConstExprEvaluator(function (Expr $expr) {
+                throw new Exception("Enum case $this->name has an unsupported value");
+            });
             $zvalName = "enum_case_{$escapedName}_value";
-            $code = "\n" . $value->initializeZval($zvalName, $allConstInfos);
+            $code = "\n" . initializeZval($zvalName, $evaluator->evaluateDirectly($this->value));
             $code .= "\tzend_enum_add_case_cstr(class_entry, \"$escapedName\", &$zvalName);\n";
         }
-
         return $code;
     }
 }
 
-class AttributeInfo {
-    public string $class;
-    /** @var \PhpParser\Node\Arg[] */
-    public array $args;
-
-    /** @param \PhpParser\Node\Arg[] $args */
-    public function __construct(string $class, array $args) {
-        $this->class = $class;
-        $this->args = $args;
-    }
-
-    /** @param iterable<ConstInfo> $allConstInfos */
-    public function generateCode(string $invocation, string $nameSuffix, iterable $allConstInfos): string {
-        /* see ZEND_KNOWN_STRINGS in Zend/strings.h */
-        static $knowns = [
-            "SensitiveParameter" => "ZEND_STR_SENSITIVEPARAMETER",
-        ];
-        $code = "\n";
-        $escapedAttributeName = strtr($this->class, '\\', '_');
-        if (isset($knowns[$escapedAttributeName])) {
-            $code .= "\t" . ($this->args ? "zend_attribute *attribute_{$escapedAttributeName}_$nameSuffix = " : "") . "$invocation, ZSTR_KNOWN({$knowns[$escapedAttributeName]}), " . count($this->args) . ");\n";
-        } else {
-            $code .= "\tzend_string *attribute_name_{$escapedAttributeName}_$nameSuffix = zend_string_init_interned(\"" . addcslashes($this->class, "\\") . "\", sizeof(\"" . addcslashes($this->class, "\\") . "\") - 1, 1);\n";
-            $code .= "\t" . ($this->args ? "zend_attribute *attribute_{$escapedAttributeName}_$nameSuffix = " : "") . "$invocation, attribute_name_{$escapedAttributeName}_$nameSuffix, " . count($this->args) . ");\n";
-            $code .= "\tzend_string_release(attribute_name_{$escapedAttributeName}_$nameSuffix);\n";
-        }
-        foreach ($this->args as $i => $arg) {
-            $value = EvaluatedValue::createFromExpression($arg->value, null, null, $allConstInfos);
-            $zvalName = "attribute_{$escapedAttributeName}_{$nameSuffix}_arg$i";
-            $code .= $value->initializeZval($zvalName, $allConstInfos);
-            $code .= "\tZVAL_COPY_VALUE(&attribute_{$escapedAttributeName}_{$nameSuffix}->args[$i].value, &$zvalName);\n";
-            if ($arg->name) {
-                $code .= "\tattribute_{$escapedAttributeName}_{$nameSuffix}->args[$i].name = zend_string_init(\"{$arg->name->name}\", sizeof(\"{$arg->name->name}\") - 1, 1);\n";
-            }
-        }
-        return $code;
-    }
-}
-
 class ClassInfo {
-    public Name $name;
-    public int $flags;
-    public string $type;
-    public ?string $alias;
-    public ?SimpleType $enumBackingType;
-    public bool $isDeprecated;
-    public bool $isStrictProperties;
-    /** @var AttributeInfo[] */
-    public array $attributes;
-    public bool $isNotSerializable;
+    /** @var Name */
+    public $name;
+    /** @var int */
+    public $flags;
+    /** @var string */
+    public $type;
+    /** @var string|null */
+    public $alias;
+    /** @var SimpleType|null */
+    public $enumBackingType;
+    /** @var bool */
+    public $isDeprecated;
+    /** @var bool */
+    public $isStrictProperties;
+    /** @var bool */
+    public $isNotSerializable;
     /** @var Name[] */
-    public array $extends;
+    public $extends;
     /** @var Name[] */
-    public array $implements;
-    /** @var ConstInfo[] */
-    public array $constInfos;
+    public $implements;
     /** @var PropertyInfo[] */
-    public array $propertyInfos;
+    public $propertyInfos;
     /** @var FuncInfo[] */
-    public array $funcInfos;
+    public $funcInfos;
     /** @var EnumCaseInfo[] */
-    public array $enumCaseInfos;
-    public ?string $cond;
-    public ?int $phpVersionIdMinimumCompatibility;
-    public bool $isUndocumentable;
+    public $enumCaseInfos;
 
     /**
-     * @param AttributeInfo[] $attributes
      * @param Name[] $extends
      * @param Name[] $implements
-     * @param ConstInfo[] $constInfos
      * @param PropertyInfo[] $propertyInfos
      * @param FuncInfo[] $funcInfos
      * @param EnumCaseInfo[] $enumCaseInfos
@@ -2417,17 +1672,12 @@
         ?SimpleType $enumBackingType,
         bool $isDeprecated,
         bool $isStrictProperties,
-        array $attributes,
         bool $isNotSerializable,
         array $extends,
         array $implements,
-        array $constInfos,
         array $propertyInfos,
         array $funcInfos,
-        array $enumCaseInfos,
-        ?string $cond,
-        ?int $minimumPhpVersionIdCompatibility,
-        bool $isUndocumentable
+        array $enumCaseInfos
     ) {
         $this->name = $name;
         $this->flags = $flags;
@@ -2436,23 +1686,15 @@
         $this->enumBackingType = $enumBackingType;
         $this->isDeprecated = $isDeprecated;
         $this->isStrictProperties = $isStrictProperties;
-        $this->attributes = $attributes;
         $this->isNotSerializable = $isNotSerializable;
         $this->extends = $extends;
         $this->implements = $implements;
-        $this->constInfos = $constInfos;
         $this->propertyInfos = $propertyInfos;
         $this->funcInfos = $funcInfos;
         $this->enumCaseInfos = $enumCaseInfos;
-        $this->cond = $cond;
-        $this->phpVersionIdMinimumCompatibility = $minimumPhpVersionIdCompatibility;
-        $this->isUndocumentable = $isUndocumentable;
     }
 
-    /**
-     * @param ConstInfo[] $allConstInfos
-     */
-    public function getRegistration(iterable $allConstInfos): string
+    public function getRegistration(): string
     {
         $params = [];
         foreach ($this->extends as $extends) {
@@ -2464,23 +1706,10 @@
 
         $escapedName = implode("_", $this->name->parts);
 
-        $code = '';
+        $code = "static zend_class_entry *register_class_$escapedName(" . (empty($params) ? "void" : implode(", ", $params)) . ")\n";
 
-        $php81MinimumCompatibility = $this->phpVersionIdMinimumCompatibility === null || $this->phpVersionIdMinimumCompatibility >= PHP_81_VERSION_ID;
-        $php82MinimumCompatibility = $this->phpVersionIdMinimumCompatibility === null || $this->phpVersionIdMinimumCompatibility >= PHP_82_VERSION_ID;
-
-        if ($this->type === "enum" && !$php81MinimumCompatibility) {
-            $code .= "#if (PHP_VERSION_ID >= " . PHP_81_VERSION_ID . ")\n";
-        }
-
-        if ($this->cond) {
-            $code .= "#if {$this->cond}\n";
-        }
-
-        $code .= "static zend_class_entry *register_class_$escapedName(" . (empty($params) ? "void" : implode(", ", $params)) . ")\n";
-
         $code .= "{\n";
-        if ($this->type === "enum") {
+        if ($this->type == "enum") {
             $name = addslashes((string) $this->name);
             $backingType = $this->enumBackingType
                 ? $this->enumBackingType->toTypeCode() : "IS_UNDEF";
@@ -2503,8 +1732,9 @@
             }
         }
 
-        $flagCodes = generateVersionDependentFlagCode("\tclass_entry->ce_flags |= %s;\n", $this->getFlagsByPhpVersion(), $this->phpVersionIdMinimumCompatibility);
-        $code .= implode("", $flagCodes);
+        if ($this->getFlagsAsString()) {
+            $code .= "\tclass_entry->ce_flags |= " . $this->getFlagsAsString() . ";\n";
+        }
 
         $implements = array_map(
             function (Name $item) {
@@ -2521,125 +1751,60 @@
             $code .= "\tzend_register_class_alias(\"" . str_replace("\\", "\\\\", $this->alias) . "\", class_entry);\n";
         }
 
-        foreach ($this->constInfos as $const) {
-            $code .= $const->getDeclaration($allConstInfos);
-        }
-
         foreach ($this->enumCaseInfos as $enumCase) {
-            $code .= $enumCase->getDeclaration($allConstInfos);
+            $code .= $enumCase->getDeclaration();
         }
 
         foreach ($this->propertyInfos as $property) {
-            $code .= $property->getDeclaration($allConstInfos);
+            $code .= $property->getDeclaration();
         }
 
-        if (!empty($this->attributes)) {
-            if (!$php82MinimumCompatibility) {
-                $code .= "\n#if (PHP_VERSION_ID >= " . PHP_82_VERSION_ID . ")";
-            }
-
-            foreach ($this->attributes as $attribute) {
-                $code .= $attribute->generateCode("zend_add_class_attribute(class_entry", "class_$escapedName", $allConstInfos);
-            }
-
-            if (!$php82MinimumCompatibility) {
-                $code .= "#endif\n";
-            }
-        }
-
-        if ($attributeInitializationCode = generateAttributeInitialization($this->funcInfos, $allConstInfos, $this->cond)) {
-            if (!$php82MinimumCompatibility) {
-                $code .= "#if (PHP_VERSION_ID >= " . PHP_82_VERSION_ID . ")\n";
-            }
-
-            $code .= "\n" . $attributeInitializationCode;
-
-            if (!$php82MinimumCompatibility) {
-                $code .= "#endif\n";
-            }
-        }
-
         $code .= "\n\treturn class_entry;\n";
 
         $code .= "}\n";
 
-        if ($this->cond) {
-            $code .= "#endif\n";
-        }
-
-        if ($this->type === "enum" && !$php81MinimumCompatibility) {
-            $code .= "#endif\n";
-        }
-
         return $code;
     }
 
-    /**
-     * @return array<int, string[]>
-     */
-    private function getFlagsByPhpVersion(): array
+    private function getFlagsAsString(): string
     {
-        $php70Flags = [];
+        $flags = [];
 
         if ($this->type === "trait") {
-            $php70Flags[] = "ZEND_ACC_TRAIT";
+            $flags[] = "ZEND_ACC_TRAIT";
         }
 
         if ($this->flags & Class_::MODIFIER_FINAL) {
-            $php70Flags[] = "ZEND_ACC_FINAL";
+            $flags[] = "ZEND_ACC_FINAL";
         }
 
         if ($this->flags & Class_::MODIFIER_ABSTRACT) {
-            $php70Flags[] = "ZEND_ACC_ABSTRACT";
+            $flags[] = "ZEND_ACC_ABSTRACT";
         }
 
         if ($this->isDeprecated) {
-            $php70Flags[] = "ZEND_ACC_DEPRECATED";
+            $flags[] = "ZEND_ACC_DEPRECATED";
         }
 
-        $php80Flags = $php70Flags;
-
         if ($this->isStrictProperties) {
-            $php80Flags[] = "ZEND_ACC_NO_DYNAMIC_PROPERTIES";
+            $flags[] = "ZEND_ACC_NO_DYNAMIC_PROPERTIES";
         }
 
-        $php81Flags = $php80Flags;
-
         if ($this->isNotSerializable) {
-            $php81Flags[] = "ZEND_ACC_NOT_SERIALIZABLE";
+            $flags[] = "ZEND_ACC_NOT_SERIALIZABLE";
         }
 
-        $php82Flags = $php81Flags;
-
-        if ($this->flags & Class_::MODIFIER_READONLY) {
-            $php82Flags[] = "ZEND_ACC_READONLY_CLASS";
-        }
-
-        foreach ($this->attributes as $attr) {
-            if ($attr->class === "AllowDynamicProperties") {
-                $php82Flags[] = "ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES";
-                break;
-            }
-        }
-
-        return [
-            PHP_70_VERSION_ID => $php70Flags,
-            PHP_80_VERSION_ID => $php80Flags,
-            PHP_81_VERSION_ID => $php81Flags,
-            PHP_82_VERSION_ID => $php82Flags,
-        ];
+        return implode("|", $flags);
     }
 
     /**
      * @param array<string, ClassInfo> $classMap
-     * @param iterable<ConstInfo> $allConstInfos
-     * @param iterable<ConstInfo> $allConstInfo
      */
-    public function getClassSynopsisDocument(array $classMap, iterable $allConstInfos): ?string {
+    public function getClassSynopsisDocument(array $classMap): ?string {
 
         $doc = new DOMDocument();
         $doc->formatOutput = true;
-        $classSynopsis = $this->getClassSynopsisElement($doc, $classMap, $allConstInfos);
+        $classSynopsis = $this->getClassSynopsisElement($doc, $classMap);
         if (!$classSynopsis) {
             return null;
         }
@@ -2650,10 +1815,9 @@
     }
 
     /**
-     * @param array<string, ClassInfo> $classMap
-     * @param iterable<ConstInfo> $allConstInfos
+     * @param ClassInfo[] $classMap
      */
-    public function getClassSynopsisElement(DOMDocument $doc, array $classMap, iterable $allConstInfos): ?DOMElement {
+    public function getClassSynopsisElement(DOMDocument $doc, array $classMap): ?DOMElement {
 
         $classSynopsis = $doc->createElement("classsynopsis");
         $classSynopsis->appendChild(new DOMText("\n    "));
@@ -2712,63 +1876,44 @@
         }
         $classSynopsisInfo->appendChild(new DOMText("\n    "));
 
-        /** @var array<string, Name> $parentsWithInheritedConstants */
-        $parentsWithInheritedConstants = [];
-        /** @var array<string, Name> $parentsWithInheritedProperties */
+        /** @var Name[] $parentsWithInheritedProperties */
         $parentsWithInheritedProperties = [];
-        /** @var array<int, array{name: Name, types: int[]}> $parentsWithInheritedMethods */
+        /** @var Name[] $parentsWithInheritedMethods */
         $parentsWithInheritedMethods = [];
 
-        $this->collectInheritedMembers(
-            $parentsWithInheritedConstants,
-            $parentsWithInheritedProperties,
-            $parentsWithInheritedMethods,
-            $this->hasConstructor(),
-            $classMap
-        );
+        $this->collectInheritedMembers($parentsWithInheritedProperties, $parentsWithInheritedMethods, $classMap);
 
-        $this->appendInheritedMemberSectionToClassSynopsis(
-            $doc,
-            $classSynopsis,
-            $parentsWithInheritedConstants,
-            "&Constants;",
-            "&InheritedConstants;"
-        );
-
-        if (!empty($this->constInfos)) {
+        if (!empty($this->propertyInfos)) {
             $classSynopsis->appendChild(new DOMText("\n\n    "));
-            $classSynopsisInfo = $doc->createElement("classsynopsisinfo", "&Constants;");
+            $classSynopsisInfo = $doc->createElement("classsynopsisinfo", "&Properties;");
             $classSynopsisInfo->setAttribute("role", "comment");
             $classSynopsis->appendChild($classSynopsisInfo);
 
-            foreach ($this->constInfos as $constInfo) {
+            foreach ($this->propertyInfos as $propertyInfo) {
                 $classSynopsis->appendChild(new DOMText("\n    "));
-                $fieldSynopsisElement = $constInfo->getFieldSynopsisElement($doc, $allConstInfos);
+                $fieldSynopsisElement = $propertyInfo->getFieldSynopsisElement($doc);
                 $classSynopsis->appendChild($fieldSynopsisElement);
             }
         }
 
-        if (!empty($this->propertyInfos)) {
+        if (!empty($parentsWithInheritedProperties)) {
             $classSynopsis->appendChild(new DOMText("\n\n    "));
-            $classSynopsisInfo = $doc->createElement("classsynopsisinfo", "&Properties;");
+            $classSynopsisInfo = $doc->createElement("classsynopsisinfo", "&InheritedProperties;");
             $classSynopsisInfo->setAttribute("role", "comment");
             $classSynopsis->appendChild($classSynopsisInfo);
 
-            foreach ($this->propertyInfos as $propertyInfo) {
+            foreach ($parentsWithInheritedProperties as $parent) {
                 $classSynopsis->appendChild(new DOMText("\n    "));
-                $fieldSynopsisElement = $propertyInfo->getFieldSynopsisElement($doc, $allConstInfos);
-                $classSynopsis->appendChild($fieldSynopsisElement);
+                $parentReference = self::getClassSynopsisReference($parent);
+
+                $includeElement = $this->createIncludeElement(
+                    $doc,
+                    "xmlns(db=http://docbook.org/ns/docbook) xpointer(id('$parentReference')/db:partintro/db:section/db:classsynopsis/db:fieldsynopsis[preceding-sibling::db:classsynopsisinfo[1][@role='comment' and text()='&Properties;']]))"
+                );
+                $classSynopsis->appendChild($includeElement);
             }
         }
 
-        $this->appendInheritedMemberSectionToClassSynopsis(
-            $doc,
-            $classSynopsis,
-            $parentsWithInheritedProperties,
-            "&Properties;",
-            "&InheritedProperties;"
-        );
-
         if (!empty($this->funcInfos)) {
             $classSynopsis->appendChild(new DOMText("\n\n    "));
             $classSynopsisInfo = $doc->createElement("classsynopsisinfo", "&Methods;");
@@ -2776,13 +1921,12 @@
             $classSynopsis->appendChild($classSynopsisInfo);
 
             $classReference = self::getClassSynopsisReference($this->name);
-            $escapedName = addslashes($this->name->__toString());
 
             if ($this->hasConstructor()) {
                 $classSynopsis->appendChild(new DOMText("\n    "));
                 $includeElement = $this->createIncludeElement(
                     $doc,
-                    "xmlns(db=http://docbook.org/ns/docbook) xpointer(id('$classReference')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[@role='$escapedName'])"
+                    "xmlns(db=http://docbook.org/ns/docbook) xpointer(id('$classReference')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[not(@role='procedural')])"
                 );
                 $classSynopsis->appendChild($includeElement);
             }
@@ -2791,7 +1935,7 @@
                 $classSynopsis->appendChild(new DOMText("\n    "));
                 $includeElement = $this->createIncludeElement(
                     $doc,
-                    "xmlns(db=http://docbook.org/ns/docbook) xpointer(id('$classReference')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='$escapedName'])"
+                    "xmlns(db=http://docbook.org/ns/docbook) xpointer(id('$classReference')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[not(@role='procedural')])"
                 );
                 $classSynopsis->appendChild($includeElement);
             }
@@ -2800,7 +1944,7 @@
                 $classSynopsis->appendChild(new DOMText("\n    "));
                 $includeElement = $this->createIncludeElement(
                     $doc,
-                    "xmlns(db=http://docbook.org/ns/docbook) xpointer(id('$classReference')/db:refentry/db:refsect1[@role='description']/descendant::db:destructorsynopsis[@role='$escapedName'])"
+                    "xmlns(db=http://docbook.org/ns/docbook) xpointer(id('$classReference')/db:refentry/db:refsect1[@role='description']/descendant::db:destructorsynopsis[not(@role='procedural')])"
                 );
                 $classSynopsis->appendChild($includeElement);
             }
@@ -2813,21 +1957,13 @@
             $classSynopsis->appendChild($classSynopsisInfo);
 
             foreach ($parentsWithInheritedMethods as $parent) {
-                $parentName = $parent["name"];
-                $parentMethodsynopsisTypes = $parent["types"];
-
-                $parentReference = self::getClassSynopsisReference($parentName);
-                $escapedParentName = addslashes($parentName->__toString());
-
-                foreach ($parentMethodsynopsisTypes as $parentMethodsynopsisType) {
-                    $classSynopsis->appendChild(new DOMText("\n    "));
-                    $includeElement = $this->createIncludeElement(
-                        $doc,
-                        "xmlns(db=http://docbook.org/ns/docbook) xpointer(id('$parentReference')/db:refentry/db:refsect1[@role='description']/descendant::db:{$parentMethodsynopsisType}[@role='$escapedParentName'])"
-                    );
-
-                    $classSynopsis->appendChild($includeElement);
-                }
+                $classSynopsis->appendChild(new DOMText("\n    "));
+                $parentReference = self::getClassSynopsisReference($parent);
+                $includeElement = $this->createIncludeElement(
+                    $doc,
+                    "xmlns(db=http://docbook.org/ns/docbook) xpointer(id('$parentReference')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[not(@role='procedural')])"
+                );
+                $classSynopsis->appendChild($includeElement);
             }
         }
 
@@ -2885,79 +2021,28 @@
     }
 
     /**
-     * @param array<string, Name> $parentsWithInheritedConstants
-     * @param array<string, Name> $parentsWithInheritedProperties
-     * @param array<string, array{name: Name, types: int[]}> $parentsWithInheritedMethods
+     * @param Name[] $parentsWithInheritedProperties
+     * @param Name[] $parentsWithInheritedMethods
      * @param array<string, ClassInfo> $classMap
      */
-    private function collectInheritedMembers(
-        array &$parentsWithInheritedConstants,
-        array &$parentsWithInheritedProperties,
-        array &$parentsWithInheritedMethods,
-        bool $hasConstructor,
-        array $classMap
-    ): void {
+    private function collectInheritedMembers(array &$parentsWithInheritedProperties, array &$parentsWithInheritedMethods, array $classMap): void
+    {
         foreach ($this->extends as $parent) {
             $parentInfo = $classMap[$parent->toString()] ?? null;
-            $parentName = $parent->toString();
-
             if (!$parentInfo) {
-                throw new Exception("Missing parent class $parentName");
+                throw new Exception("Missing parent class " . $parent->toString());
             }
 
-            if (!empty($parentInfo->constInfos) && !isset($parentsWithInheritedConstants[$parentName])) {
-                $parentsWithInheritedConstants[] = $parent;
+            if (!empty($parentInfo->propertyInfos) && !isset($parentsWithInheritedProperties[$parent->toString()])) {
+                $parentsWithInheritedProperties[$parent->toString()] = $parent;
             }
 
-            if (!empty($parentInfo->propertyInfos) && !isset($parentsWithInheritedProperties[$parentName])) {
-                $parentsWithInheritedProperties[$parentName] = $parent;
+            if (!isset($parentsWithInheritedMethods[$parent->toString()]) && $parentInfo->hasMethods()) {
+                $parentsWithInheritedMethods[$parent->toString()] = $parent;
             }
 
-            if (!$hasConstructor && $parentInfo->hasNonPrivateConstructor()) {
-                $parentsWithInheritedMethods[$parentName]["name"] = $parent;
-                $parentsWithInheritedMethods[$parentName]["types"][] = "constructorsynopsis";
-            }
-
-            if ($parentInfo->hasMethods()) {
-                $parentsWithInheritedMethods[$parentName]["name"] = $parent;
-                $parentsWithInheritedMethods[$parentName]["types"][] = "methodsynopsis";
-            }
-
-            if ($parentInfo->hasDestructor()) {
-                $parentsWithInheritedMethods[$parentName]["name"] = $parent;
-                $parentsWithInheritedMethods[$parentName]["types"][] = "destructorsynopsis";
-            }
-
-            $parentInfo->collectInheritedMembers(
-                $parentsWithInheritedConstants,
-                $parentsWithInheritedProperties,
-                $parentsWithInheritedMethods,
-                $hasConstructor,
-                $classMap
-            );
+            $parentInfo->collectInheritedMembers($parentsWithInheritedProperties, $parentsWithInheritedMethods, $classMap);
         }
-
-        foreach ($this->implements as $parent) {
-            $parentInfo = $classMap[$parent->toString()] ?? null;
-            if (!$parentInfo) {
-                throw new Exception("Missing parent interface " . $parent->toString());
-            }
-
-            if (!empty($parentInfo->constInfos) && !isset($parentsWithInheritedConstants[$parent->toString()])) {
-                $parentsWithInheritedConstants[$parent->toString()] = $parent;
-            }
-
-            $unusedParentsWithInheritedProperties = [];
-            $unusedParentsWithInheritedMethods = [];
-
-            $parentInfo->collectInheritedMembers(
-                $parentsWithInheritedConstants,
-                $unusedParentsWithInheritedProperties,
-                $unusedParentsWithInheritedMethods,
-                $hasConstructor,
-                $classMap
-            );
-        }
     }
 
     private function hasConstructor(): bool
@@ -2971,17 +2056,6 @@
         return false;
     }
 
-    private function hasNonPrivateConstructor(): bool
-    {
-        foreach ($this->funcInfos as $funcInfo) {
-            if ($funcInfo->name->isConstructor() && !($funcInfo->flags & Class_::MODIFIER_PRIVATE)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
     private function hasDestructor(): bool
     {
         foreach ($this->funcInfos as $funcInfo) {
@@ -3028,48 +2102,21 @@
             $this->funcInfos[$key] = clone $funcInfo;
         }
     }
-
-    /**
-     * @param Name[] $parents
-     */
-    private function appendInheritedMemberSectionToClassSynopsis(DOMDocument $doc, DOMElement $classSynopsis, array $parents, string $label, string $inheritedLabel): void
-    {
-        if (empty($parents)) {
-            return;
-        }
-
-        $classSynopsis->appendChild(new DOMText("\n\n    "));
-        $classSynopsisInfo = $doc->createElement("classsynopsisinfo", "$inheritedLabel");
-        $classSynopsisInfo->setAttribute("role", "comment");
-        $classSynopsis->appendChild($classSynopsisInfo);
-
-        foreach ($parents as $parent) {
-            $classSynopsis->appendChild(new DOMText("\n    "));
-            $parentReference = self::getClassSynopsisReference($parent);
-
-            $includeElement = $this->createIncludeElement(
-                $doc,
-                "xmlns(db=http://docbook.org/ns/docbook) xpointer(id('$parentReference')/db:partintro/db:section/db:classsynopsis/db:fieldsynopsis[preceding-sibling::db:classsynopsisinfo[1][@role='comment' and text()='$label']]))"
-            );
-            $classSynopsis->appendChild($includeElement);
-        }
-    }
 }
 
 class FileInfo {
-    /** @var string[] */
-    public array $dependencies = [];
-    /** @var ConstInfo[] */
-    public array $constInfos = [];
     /** @var FuncInfo[] */
-    public array $funcInfos = [];
+    public $funcInfos = [];
     /** @var ClassInfo[] */
-    public array $classInfos = [];
-    public bool $generateFunctionEntries = false;
-    public string $declarationPrefix = "";
-    public ?int $generateLegacyArginfoForPhpVersionId = null;
-    public bool $generateClassEntries = false;
-    public bool $isUndocumentable = false;
+    public $classInfos = [];
+    /** @var bool */
+    public $generateFunctionEntries = false;
+    /** @var string */
+    public $declarationPrefix = "";
+    /** @var bool */
+    public $generateLegacyArginfo = false;
+    /** @var bool */
+    public $generateClassEntries = false;
 
     /**
      * @return iterable<FuncInfo>
@@ -3082,19 +2129,6 @@
     }
 
     /**
-     * @return iterable<ConstInfo>
-     */
-    public function getAllConstInfos(): iterable {
-        $result = $this->constInfos;
-
-        foreach ($this->classInfos as $classInfo) {
-            $result = array_merge($result, $classInfo->constInfos);
-        }
-
-        return $result;
-    }
-
-    /**
      * @return iterable<PropertyInfo>
      */
     public function getAllPropertyInfos(): iterable {
@@ -3116,8 +2150,10 @@
 }
 
 class DocCommentTag {
-    public string $name;
-    public ?string $value;
+    /** @var string */
+    public $name;
+    /** @var string|null */
+    public $value;
 
     public function __construct(string $name, ?string $value) {
         $this->name = $name;
@@ -3192,8 +2228,7 @@
     int $classFlags,
     int $flags,
     Node\FunctionLike $func,
-    ?string $cond,
-    bool $isUndocumentable
+    ?string $cond
 ): FuncInfo {
     try {
         $comment = $func->getDocComment();
@@ -3201,7 +2236,6 @@
         $aliasType = null;
         $alias = null;
         $isDeprecated = false;
-        $supportsCompileTimeEval = false;
         $verify = true;
         $docReturnType = null;
         $tentativeReturnType = false;
@@ -3211,57 +2245,32 @@
         if ($comment) {
             $tags = parseDocComment($comment);
             foreach ($tags as $tag) {
-                switch ($tag->name) {
-                    case 'alias':
-                    case 'implementation-alias':
-                        $aliasType = $tag->name;
-                        $aliasParts = explode("::", $tag->getValue());
-                        if (count($aliasParts) === 1) {
-                            $alias = new FunctionName(new Name($aliasParts[0]));
-                        } else {
-                            $alias = new MethodName(new Name($aliasParts[0]), $aliasParts[1]);
-                        }
-                        break;
-
-                    case 'deprecated':
-                        $isDeprecated = true;
-                        break;
-
-                    case 'no-verify':
-                        $verify = false;
-                        break;
-
-                    case 'tentative-return-type':
-                        $tentativeReturnType = true;
-                        break;
-
-                    case 'return':
-                        $docReturnType = $tag->getType();
-                        break;
-
-                    case 'param':
-                        $docParamTypes[$tag->getVariableName()] = $tag->getType();
-                        break;
-
-                    case 'refcount':
-                        $refcount = $tag->getValue();
-                        break;
-
-                    case 'compile-time-eval':
-                        $supportsCompileTimeEval = true;
-                        break;
-
-                    case 'prefer-ref':
-                        $varName = $tag->getVariableName();
-                        if (!isset($paramMeta[$varName])) {
-                            $paramMeta[$varName] = [];
-                        }
-                        $paramMeta[$varName][$tag->name] = true;
-                        break;
-
-                    case 'undocumentable':
-                        $isUndocumentable = true;
-                        break;
+                if ($tag->name === 'prefer-ref') {
+                    $varName = $tag->getVariableName();
+                    if (!isset($paramMeta[$varName])) {
+                        $paramMeta[$varName] = [];
+                    }
+                    $paramMeta[$varName]['preferRef'] = true;
+                } else if ($tag->name === 'alias' || $tag->name === 'implementation-alias') {
+                    $aliasType = $tag->name;
+                    $aliasParts = explode("::", $tag->getValue());
+                    if (count($aliasParts) === 1) {
+                        $alias = new FunctionName(new Name($aliasParts[0]));
+                    } else {
+                        $alias = new MethodName(new Name($aliasParts[0]), $aliasParts[1]);
+                    }
+                } else if ($tag->name === 'deprecated') {
+                    $isDeprecated = true;
+                } else if ($tag->name === 'no-verify') {
+                    $verify = false;
+                } else if ($tag->name === 'tentative-return-type') {
+                    $tentativeReturnType = true;
+                } else if ($tag->name === 'return') {
+                    $docReturnType = $tag->getType();
+                } else if ($tag->name === 'param') {
+                    $docParamTypes[$tag->getVariableName()] = $tag->getType();
+                } else if ($tag->name === 'refcount') {
+                    $refcount = $tag->getValue();
                 }
             }
         }
@@ -3272,13 +2281,7 @@
         $foundVariadic = false;
         foreach ($func->getParams() as $i => $param) {
             $varName = $param->var->name;
-            $preferRef = !empty($paramMeta[$varName]['prefer-ref']);
-            $attributes = [];
-            foreach ($param->attrGroups as $attrGroup) {
-                foreach ($attrGroup->attrs as $attr) {
-                    $attributes[] = new AttributeInfo($attr->name->toString(), $attr->args);
-                }
-            }
+            $preferRef = !empty($paramMeta[$varName]['preferRef']);
             unset($paramMeta[$varName]);
 
             if (isset($varNameSet[$varName])) {
@@ -3325,8 +2328,7 @@
                 $param->variadic,
                 $type,
                 isset($docParamTypes[$varName]) ? Type::fromString($docParamTypes[$varName]) : null,
-                $param->default ? $prettyPrinter->prettyPrintExpr($param->default) : null,
-                $attributes
+                $param->default ? $prettyPrinter->prettyPrintExpr($param->default) : null
             );
             if (!$param->default && !$param->variadic) {
                 $numRequiredArgs = $i + 1;
@@ -3357,13 +2359,11 @@
             $aliasType,
             $alias,
             $isDeprecated,
-            $supportsCompileTimeEval,
             $verify,
             $args,
             $return,
             $numRequiredArgs,
-            $cond,
-            $isUndocumentable
+            $cond
         );
     } catch (Exception $e) {
         throw new Exception($name . "(): " .$e->getMessage());
@@ -3370,52 +2370,6 @@
     }
 }
 
-function parseConstLike(
-    PrettyPrinterAbstract $prettyPrinter,
-    ConstOrClassConstName $name,
-    Node\Const_ $const,
-    int $flags,
-    ?DocComment $docComment,
-    ?string $cond,
-    ?int $phpVersionIdMinimumCompatibility
-): ConstInfo {
-    $phpDocType = null;
-    $deprecated = false;
-    $cValue = null;
-    $link = null;
-    if ($docComment) {
-        $tags = parseDocComment($docComment);
-        foreach ($tags as $tag) {
-            if ($tag->name === 'var') {
-                $phpDocType = $tag->getType();
-            } elseif ($tag->name === 'deprecated') {
-                $deprecated = true;
-            } elseif ($tag->name === 'cvalue') {
-                $cValue = $tag->value;
-            } elseif ($tag->name === 'link') {
-                $link = $tag->value;
-            }
-        }
-    }
-
-    if ($phpDocType === null) {
-        throw new Exception("Missing type for constant " . $name->__toString());
-    }
-
-    return new ConstInfo(
-        $name,
-        $flags,
-        $const->value,
-        $prettyPrinter->prettyPrintExpr($const->value),
-        Type::fromString($phpDocType),
-        $deprecated,
-        $cond,
-        $cValue,
-        $link,
-        $phpVersionIdMinimumCompatibility
-    );
-}
-
 function parseProperty(
     Name $class,
     int $flags,
@@ -3422,8 +2376,7 @@
     Stmt\PropertyProperty $property,
     ?Node $type,
     ?DocComment $comment,
-    PrettyPrinterAbstract $prettyPrinter,
-    ?int $phpVersionIdMinimumCompatibility
+    PrettyPrinterAbstract $prettyPrinter
 ): PropertyInfo {
     $phpDocType = null;
     $isDocReadonly = false;
@@ -3466,27 +2419,17 @@
         $property->default,
         $property->default ? $prettyPrinter->prettyPrintExpr($property->default) : null,
         $isDocReadonly,
-        $link,
-        $phpVersionIdMinimumCompatibility
+        $link
     );
 }
 
 /**
- * @param ConstInfo[] $consts
  * @param PropertyInfo[] $properties
  * @param FuncInfo[] $methods
  * @param EnumCaseInfo[] $enumCases
  */
 function parseClass(
-    Name $name,
-    Stmt\ClassLike $class,
-    array $consts,
-    array $properties,
-    array $methods,
-    array $enumCases,
-    ?string $cond,
-    ?int $minimumPhpVersionIdCompatibility,
-    bool $isUndocumentable
+    Name $name, Stmt\ClassLike $class, array $properties, array $methods, array $enumCases
 ): ClassInfo {
     $flags = $class instanceof Class_ ? $class->flags : 0;
     $comment = $class->getDocComment();
@@ -3494,8 +2437,6 @@
     $isDeprecated = false;
     $isStrictProperties = false;
     $isNotSerializable = false;
-    $allowsDynamicProperties = false;
-    $attributes = [];
 
     if ($comment) {
         $tags = parseDocComment($comment);
@@ -3508,27 +2449,10 @@
                 $isStrictProperties = true;
             } else if ($tag->name === 'not-serializable') {
                 $isNotSerializable = true;
-            } else if ($tag->name === 'undocumentable') {
-                $isUndocumentable = true;
             }
         }
     }
 
-    foreach ($class->attrGroups as $attrGroup) {
-        foreach ($attrGroup->attrs as $attr) {
-            $attributes[] = new AttributeInfo($attr->name->toString(), $attr->args);
-            switch ($attr->name->toString()) {
-                case 'AllowDynamicProperties':
-                    $allowsDynamicProperties = true;
-                    break;
-            }
-        }
-    }
-
-    if ($isStrictProperties && $allowsDynamicProperties) {
-        throw new Exception("A class may not have '@strict-properties' and '#[\\AllowDynamicProperties]' at the same time.");
-    }
-
     $extends = [];
     $implements = [];
 
@@ -3550,12 +2474,6 @@
         throw new Exception("Unknown class kind " . get_class($class));
     }
 
-    if ($isUndocumentable) {
-        foreach ($methods as $method) {
-            $method->isUndocumentable = true;
-        }
-    }
-
     return new ClassInfo(
         $name,
         $flags,
@@ -3565,17 +2483,12 @@
             ? SimpleType::fromNode($class->scalarType) : null,
         $isDeprecated,
         $isStrictProperties,
-        $attributes,
         $isNotSerializable,
         $extends,
         $implements,
-        $consts,
         $properties,
         $methods,
-        $enumCases,
-        $cond,
-        $minimumPhpVersionIdCompatibility,
-        $isUndocumentable
+        $enumCases
     );
 }
 
@@ -3637,22 +2550,6 @@
         }
 
         $cond = handlePreprocessorConditions($conds, $stmt);
-
-        if ($stmt instanceof Stmt\Const_) {
-            foreach ($stmt->consts as $const) {
-                $fileInfo->constInfos[] = parseConstLike(
-                    $prettyPrinter,
-                    new ConstName($const->namespacedName, $const->name->toString()),
-                    $const,
-                    0,
-                    $stmt->getDocComment(),
-                    $cond,
-                    $fileInfo->generateLegacyArginfoForPhpVersionId
-                );
-            }
-            continue;
-        }
-
         if ($stmt instanceof Stmt\Function_) {
             $fileInfo->funcInfos[] = parseFunctionLike(
                 $prettyPrinter,
@@ -3660,8 +2557,7 @@
                 0,
                 0,
                 $stmt,
-                $cond,
-                $fileInfo->isUndocumentable
+                $cond
             );
             continue;
         }
@@ -3668,7 +2564,6 @@
 
         if ($stmt instanceof Stmt\ClassLike) {
             $className = $stmt->namespacedName;
-            $constInfos = [];
             $propertyInfos = [];
             $methodInfos = [];
             $enumCaseInfos = [];
@@ -3681,19 +2576,7 @@
                 $classFlags = $stmt instanceof Class_ ? $stmt->flags : 0;
                 $abstractFlag = $stmt instanceof Stmt\Interface_ ? Class_::MODIFIER_ABSTRACT : 0;
 
-                if ($classStmt instanceof Stmt\ClassConst) {
-                    foreach ($classStmt->consts as $const) {
-                        $constInfos[] = parseConstLike(
-                            $prettyPrinter,
-                            new ClassConstName($className, $const->name->toString()),
-                            $const,
-                            $classStmt->flags,
-                            $classStmt->getDocComment(),
-                            $cond,
-                            $fileInfo->generateLegacyArginfoForPhpVersionId
-                        );
-                    }
-                } else if ($classStmt instanceof Stmt\Property) {
+                if ($classStmt instanceof Stmt\Property) {
                     if (!($classStmt->flags & Class_::VISIBILITY_MODIFIER_MASK)) {
                         throw new Exception("Visibility modifier is required");
                     }
@@ -3704,8 +2587,7 @@
                             $property,
                             $classStmt->type,
                             $classStmt->getDocComment(),
-                            $prettyPrinter,
-                            $fileInfo->generateLegacyArginfoForPhpVersionId
+                            $prettyPrinter
                         );
                     }
                 } else if ($classStmt instanceof Stmt\ClassMethod) {
@@ -3718,8 +2600,7 @@
                         $classFlags,
                         $classStmt->flags | $abstractFlag,
                         $classStmt,
-                        $cond,
-                        $fileInfo->isUndocumentable
+                        $cond
                     );
                 } else if ($classStmt instanceof Stmt\EnumCase) {
                     $enumCaseInfos[] = new EnumCaseInfo(
@@ -3730,19 +2611,10 @@
             }
 
             $fileInfo->classInfos[] = parseClass(
-                $className, $stmt, $constInfos, $propertyInfos, $methodInfos, $enumCaseInfos, $cond, $fileInfo->generateLegacyArginfoForPhpVersionId, $fileInfo->isUndocumentable
-            );
+                $className, $stmt, $propertyInfos, $methodInfos, $enumCaseInfos);
             continue;
         }
 
-        if ($stmt instanceof Stmt\Expression) {
-            $expr = $stmt->expr;
-            if ($expr instanceof Expr\Include_) {
-                $fileInfo->dependencies[] = (string)EvaluatedValue::createFromExpression($expr->expr, null, null, [])->value;
-                continue;
-            }
-        }
-
         throw new Exception("Unexpected node {$stmt->getType()}");
     }
 }
@@ -3770,19 +2642,10 @@
                 $fileInfo->generateFunctionEntries = true;
                 $fileInfo->declarationPrefix = $tag->value ? $tag->value . " " : "";
             } else if ($tag->name === 'generate-legacy-arginfo') {
-                if ($tag->value && !in_array((int) $tag->value, ALL_PHP_VERSION_IDS, true)) {
-                    throw new Exception(
-                        "Legacy PHP version must be one of: \"" . PHP_70_VERSION_ID . "\" (PHP 7.0), \"" . PHP_80_VERSION_ID . "\" (PHP 8.0), " .
-                        "\"" . PHP_81_VERSION_ID . "\" (PHP 8.1), \"" . PHP_82_VERSION_ID . "\" (PHP 8.2), \"" . $tag->value . "\" provided"
-                    );
-                }
-
-                $fileInfo->generateLegacyArginfoForPhpVersionId = $tag->value ? (int) $tag->value : PHP_70_VERSION_ID;
+                $fileInfo->generateLegacyArginfo = true;
             } else if ($tag->name === 'generate-class-entries') {
                 $fileInfo->generateClassEntries = true;
                 $fileInfo->declarationPrefix = $tag->value ? $tag->value . " " : "";
-            } else if ($tag->name === 'undocumentable') {
-                $fileInfo->isUndocumentable = true;
             }
         }
     }
@@ -3796,16 +2659,12 @@
     return $fileInfo;
 }
 
-function funcInfoToCode(FileInfo $fileInfo, FuncInfo $funcInfo): string {
+function funcInfoToCode(FuncInfo $funcInfo): string {
     $code = '';
     $returnType = $funcInfo->return->type;
     $isTentativeReturnType = $funcInfo->return->tentativeReturnType;
-    $php81MinimumCompatibility = $fileInfo->generateLegacyArginfoForPhpVersionId === null || $fileInfo->generateLegacyArginfoForPhpVersionId >= PHP_81_VERSION_ID;
 
     if ($returnType !== null) {
-        if ($isTentativeReturnType && !$php81MinimumCompatibility) {
-            $code .= "#if (PHP_VERSION_ID >= " . PHP_81_VERSION_ID . ")\n";
-        }
         if (null !== $simpleReturnType = $returnType->tryToSimpleType()) {
             if ($simpleReturnType->isBuiltin) {
                 $code .= sprintf(
@@ -3844,12 +2703,6 @@
                 );
             }
         }
-        if ($isTentativeReturnType && !$php81MinimumCompatibility) {
-            $code .= sprintf(
-                "#else\nZEND_BEGIN_ARG_INFO_EX(%s, 0, %d, %d)\n#endif\n",
-                $funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs
-            );
-        }
     } else {
         $code .= sprintf(
             "ZEND_BEGIN_ARG_INFO_EX(%s, 0, %d, %d)\n",
@@ -3919,50 +2772,35 @@
     return null;
 }
 
-/**
- * @template T
- * @param iterable<T> $infos
- * @param Closure(T): string|null $codeGenerator
- * @param ?string $parentCond
- */
+/** @param iterable<FuncInfo> $funcInfos */
 function generateCodeWithConditions(
-    iterable $infos, string $separator, Closure $codeGenerator, ?string $parentCond = null): string {
+        iterable $funcInfos, string $separator, Closure $codeGenerator): string {
     $code = "";
-    foreach ($infos as $info) {
-        $infoCode = $codeGenerator($info);
-        if ($infoCode === null) {
+    foreach ($funcInfos as $funcInfo) {
+        $funcCode = $codeGenerator($funcInfo);
+        if ($funcCode === null) {
             continue;
         }
 
         $code .= $separator;
-        if ($info->cond && $info->cond !== $parentCond) {
-            $code .= "#if {$info->cond}\n";
-            $code .= $infoCode;
+        if ($funcInfo->cond) {
+            $code .= "#if {$funcInfo->cond}\n";
+            $code .= $funcCode;
             $code .= "#endif\n";
         } else {
-            $code .= $infoCode;
+            $code .= $funcCode;
         }
     }
-
     return $code;
 }
 
-/**
- * @param iterable<ConstInfo> $allConstInfos
- */
-function generateArgInfoCode(
-    string $stubFilenameWithoutExtension,
-    FileInfo $fileInfo,
-    iterable $allConstInfos,
-    string $stubHash
-): string {
+function generateArgInfoCode(FileInfo $fileInfo, string $stubHash): string {
     $code = "/* This is a generated file, edit the .stub.php file instead.\n"
           . " * Stub hash: $stubHash */\n";
-
     $generatedFuncInfos = [];
     $code .= generateCodeWithConditions(
         $fileInfo->getAllFuncInfos(), "\n",
-        static function (FuncInfo $funcInfo) use (&$generatedFuncInfos, $fileInfo) {
+        function (FuncInfo $funcInfo) use(&$generatedFuncInfos) {
             /* If there already is an equivalent arginfo structure, only emit a #define */
             if ($generatedFuncInfo = findEquivalentFuncInfo($generatedFuncInfos, $funcInfo)) {
                 $code = sprintf(
@@ -3970,7 +2808,7 @@
                     $funcInfo->getArgInfoName(), $generatedFuncInfo->getArgInfoName()
                 );
             } else {
-                $code = funcInfoToCode($fileInfo, $funcInfo);
+                $code = funcInfoToCode($funcInfo);
             }
 
             $generatedFuncInfos[] = $funcInfo;
@@ -3984,7 +2822,7 @@
         $generatedFunctionDeclarations = [];
         $code .= generateCodeWithConditions(
             $fileInfo->getAllFuncInfos(), "",
-            static function (FuncInfo $funcInfo) use ($fileInfo, &$generatedFunctionDeclarations) {
+            function (FuncInfo $funcInfo) use($fileInfo, &$generatedFunctionDeclarations) {
                 $key = $funcInfo->getDeclarationKey();
                 if (isset($generatedFunctionDeclarations[$key])) {
                     return null;
@@ -4000,49 +2838,22 @@
         }
 
         foreach ($fileInfo->classInfos as $classInfo) {
-            $code .= generateFunctionEntries($classInfo->name, $classInfo->funcInfos, $classInfo->cond);
+            $code .= generateFunctionEntries($classInfo->name, $classInfo->funcInfos);
         }
     }
 
-    $php82MinimumCompatibility = $fileInfo->generateLegacyArginfoForPhpVersionId === null || $fileInfo->generateLegacyArginfoForPhpVersionId >= PHP_82_VERSION_ID;
-
     if ($fileInfo->generateClassEntries) {
-        if ($attributeInitializationCode = generateAttributeInitialization($fileInfo->funcInfos, $allConstInfos, null)) {
-            if (!$php82MinimumCompatibility) {
-                $attributeInitializationCode = "\n#if (PHP_VERSION_ID >= " . PHP_82_VERSION_ID . ")" . $attributeInitializationCode . "#endif\n";
-            }
-        }
-
-        if ($attributeInitializationCode !== "" || !empty($fileInfo->constInfos)) {
-            $code .= "\nstatic void register_{$stubFilenameWithoutExtension}_symbols(int module_number)\n";
-            $code .= "{\n";
-
-            foreach ($fileInfo->constInfos as $constInfo) {
-                $code .= $constInfo->getDeclaration($allConstInfos);
-            }
-
-            if (!empty($attributeInitializationCode !== "" && $fileInfo->constInfos)) {
-                $code .= "\n";
-            }
-
-            $code .= $attributeInitializationCode;
-            $code .= "}\n";
-        }
-
-        $code .= generateClassEntryCode($fileInfo, $allConstInfos);
+        $code .= generateClassEntryCode($fileInfo);
     }
 
     return $code;
 }
 
-/**
- * @param iterable<ConstInfo> $allConstInfos
- */
-function generateClassEntryCode(FileInfo $fileInfo, iterable $allConstInfos): string {
+function generateClassEntryCode(FileInfo $fileInfo): string {
     $code = "";
 
     foreach ($fileInfo->classInfos as $class) {
-        $code .= "\n" . $class->getRegistration($allConstInfos);
+        $code .= "\n" . $class->getRegistration();
     }
 
     return $code;
@@ -4049,13 +2860,9 @@
 }
 
 /** @param FuncInfo[] $funcInfos */
-function generateFunctionEntries(?Name $className, array $funcInfos, ?string $cond = null): string {
-    $code = "\n\n";
+function generateFunctionEntries(?Name $className, array $funcInfos): string {
+    $code = "";
 
-    if ($cond) {
-        $code .= "#if {$cond}\n";
-    }
-
     $functionEntryName = "ext_functions";
     if ($className) {
         $underscoreName = implode("_", $className->parts);
@@ -4062,55 +2869,24 @@
         $functionEntryName = "class_{$underscoreName}_methods";
     }
 
-    $code .= "static const zend_function_entry {$functionEntryName}[] = {\n";
-    $code .= generateCodeWithConditions($funcInfos, "", static function (FuncInfo $funcInfo) {
+    $code .= "\n\nstatic const zend_function_entry {$functionEntryName}[] = {\n";
+    $code .= generateCodeWithConditions($funcInfos, "", function (FuncInfo $funcInfo) {
         return $funcInfo->getFunctionEntry();
-    }, $cond);
+    });
     $code .= "\tZEND_FE_END\n";
     $code .= "};\n";
 
-    if ($cond) {
-        $code .= "#endif\n";
-    }
-
     return $code;
 }
-/**
- * @param iterable<FuncInfo> $funcInfos
- */
-function generateAttributeInitialization(iterable $funcInfos, iterable $allConstInfos, ?string $parentCond = null): string {
-    return generateCodeWithConditions(
-        $funcInfos,
-        "",
-        static function (FuncInfo $funcInfo) use ($allConstInfos) {
-            $code = null;
 
-            foreach ($funcInfo->args as $index => $arg) {
-                if ($funcInfo->name instanceof MethodName) {
-                    $functionTable = "&class_entry->function_table";
-                } else {
-                    $functionTable = "CG(function_table)";
-                }
+/** @param FuncInfo<string, FuncInfo> $funcInfos */
+function generateOptimizerInfo(array $funcInfos): string {
 
-                foreach ($arg->attributes as $attribute) {
-                    $code .= $attribute->generateCode("zend_add_parameter_attribute(zend_hash_str_find_ptr($functionTable, \"" . $funcInfo->name->getNameForAttributes() . "\", sizeof(\"" . $funcInfo->name->getNameForAttributes() . "\") - 1), $index", "{$funcInfo->name->getMethodSynopsisFilename()}_arg{$index}", $allConstInfos);
-                }
-            }
-
-            return $code;
-        },
-        $parentCond
-    );
-}
-
-/** @param array<string, FuncInfo> $funcMap */
-function generateOptimizerInfo(array $funcMap): string {
-
     $code = "/* This is a generated file, edit the .stub.php files instead. */\n\n";
 
     $code .= "static const func_info_t func_infos[] = {\n";
 
-    $code .= generateCodeWithConditions($funcMap, "", static function (FuncInfo $funcInfo) {
+    $code .= generateCodeWithConditions($funcInfos, "", function (FuncInfo $funcInfo) {
         return $funcInfo->getOptimizerInfo();
     });
 
@@ -4120,96 +2896,14 @@
 }
 
 /**
- * @param array<int, string[]> $flagsByPhpVersions
- * @return string[]
- */
-function generateVersionDependentFlagCode(string $codeTemplate, array $flagsByPhpVersions, ?int $phpVersionIdMinimumCompatibility): array
-{
-    $phpVersions = ALL_PHP_VERSION_IDS;
-    sort($phpVersions);
-    $currentPhpVersion = end($phpVersions);
-
-    // No version compatibility is needed
-    if ($phpVersionIdMinimumCompatibility === null) {
-        if (empty($flagsByPhpVersions[$currentPhpVersion])) {
-            return [];
-        }
-
-        return [sprintf($codeTemplate, implode("|", $flagsByPhpVersions[$currentPhpVersion]))];
-    }
-
-    // Remove flags which depend on a PHP version below the minimally supported one
-    ksort($flagsByPhpVersions);
-    $index = array_search($phpVersionIdMinimumCompatibility, array_keys($flagsByPhpVersions));
-    if ($index === false) {
-        throw new Exception("Missing version dependent flags for PHP version ID \"$phpVersionIdMinimumCompatibility\"");
-    }
-    $flagsByPhpVersions = array_slice($flagsByPhpVersions, $index, null, true);
-
-    // Remove empty version-specific flags
-    $flagsByPhpVersions = array_filter(
-        $flagsByPhpVersions,
-        static function (array $value): bool {
-            return !empty($value);
-    });
-
-    // There are no version-specific flags
-    if (empty($flagsByPhpVersions)) {
-        return [];
-    }
-
-    // Remove version-specific flags which don't differ from the previous one
-    $previousVersionId = null;
-    foreach ($flagsByPhpVersions as $versionId => $versionFlags) {
-        if ($previousVersionId !== null && $flagsByPhpVersions[$previousVersionId] === $versionFlags) {
-            unset($flagsByPhpVersions[$versionId]);
-        } else {
-            $previousVersionId = $versionId;
-        }
-    }
-
-    $flagCount = count($flagsByPhpVersions);
-
-    // Do not add a condition unnecessarily when the only version is the same as the minimally supported one
-    if ($flagCount === 1) {
-        reset($flagsByPhpVersions);
-        $firstVersion = key($flagsByPhpVersions);
-        if ($firstVersion === $phpVersionIdMinimumCompatibility) {
-            return [sprintf($codeTemplate, implode("|", reset($flagsByPhpVersions)))];
-        }
-    }
-
-    // Add the necessary conditions around the code using the version-specific flags
-    $result = [];
-    $i = 0;
-    foreach (array_reverse($flagsByPhpVersions, true) as $version => $versionFlags) {
-        $code = "";
-
-        $if = $i === 0 ? "#if" : "#elif";
-        $endif = $i === $flagCount - 1 ? "#endif\n" : "";
-
-        $code .= "$if (PHP_VERSION_ID >= $version)\n";
-
-        $code .= sprintf($codeTemplate, implode("|", $versionFlags));
-        $code .= $endif;
-
-        $result[] = $code;
-        $i++;
-    }
-
-    return $result;
-}
-
-/**
- * @param array<string, ClassInfo> $classMap
- * @param iterable<ConstInfo> $allConstInfos
+ * @param ClassInfo[] $classMap
  * @return array<string, string>
  */
-function generateClassSynopses(array $classMap, iterable $allConstInfos): array {
+function generateClassSynopses(array $classMap): array {
     $result = [];
 
     foreach ($classMap as $classInfo) {
-        $classSynopsis = $classInfo->getClassSynopsisDocument($classMap, $allConstInfos);
+        $classSynopsis = $classInfo->getClassSynopsisDocument($classMap);
         if ($classSynopsis !== null) {
             $result[ClassInfo::getClassSynopsisFilename($classInfo->name) . ".xml"] = $classSynopsis;
         }
@@ -4219,14 +2913,11 @@
 }
 
 /**
- * @param array<string, ClassInfo> $classMap
- * $param iterable<ConstInfo> $allConstInfos
+ * @param ClassInfo[] $classMap
  * @return array<string, string>
  */
-function replaceClassSynopses(string $targetDirectory, array $classMap, iterable $allConstInfos, bool $isVerify): array
+function replaceClassSynopses(string $targetDirectory, array $classMap): array
 {
-    $existingClassSynopses = [];
-
     $classSynopses = [];
 
     $it = new RecursiveIteratorIterator(
@@ -4283,12 +2974,9 @@
             if (!isset($classMap[$className])) {
                 continue;
             }
-
-            $existingClassSynopses[$className] = $className;
-
             $classInfo = $classMap[$className];
 
-            $newClassSynopsis = $classInfo->getClassSynopsisElement($doc, $classMap, $allConstInfos);
+            $newClassSynopsis = $classInfo->getClassSynopsisElement($doc, $classMap);
             if ($newClassSynopsis === null) {
                 continue;
             }
@@ -4306,11 +2994,10 @@
             $replacedXml = preg_replace(
                 [
                     "/REPLACED-ENTITY-([A-Za-z0-9._{}%-]+?;)/",
-                    '/<phpdoc:(classref|exceptionref)\s+xmlns:phpdoc=\"([^"]+)"\s+xmlns="([^"]+)"\s+xml:id="([^"]+)"\s*>/i',
-                    '/<phpdoc:(classref|exceptionref)\s+xmlns:phpdoc=\"([^"]+)"\s+xmlns="([^"]+)"\s+xmlns:xi="([^"]+)"\s+xml:id="([^"]+)"\s*>/i',
-                    '/<phpdoc:(classref|exceptionref)\s+xmlns:phpdoc=\"([^"]+)"\s+xmlns="([^"]+)"\s+xmlns:xlink="([^"]+)"\s+xmlns:xi="([^"]+)"\s+xml:id="([^"]+)"\s*>/i',
-                    '/<phpdoc:(classref|exceptionref)\s+xmlns:phpdoc=\"([^"]+)"\s+xmlns:xlink="([^"]+)"\s+xmlns:xi="([^"]+)"\s+xmlns="([^"]+)"\s+xml:id="([^"]+)"\s*>/i',
-                    '/<phpdoc:(classref|exceptionref)\s+xmlns=\"([^"]+)\"\s+xmlns:xlink="([^"]+)"\s+xmlns:xi="([^"]+)"\s+xmlns:phpdoc="([^"]+)"\s+xml:id="([^"]+)"\s*>/i',
+                    "/<phpdoc:(classref|exceptionref)\s+xmlns:phpdoc=\"([a-z0-9.:\/]+)\"\s+xmlns=\"([a-z0-9.:\/]+)\"\s+xml:id=\"([a-z0-9._-]+)\"\s*>/i",
+                    "/<phpdoc:(classref|exceptionref)\s+xmlns:phpdoc=\"([a-z0-9.:\/]+)\"\s+xmlns=\"([a-z0-9.:\/]+)\"\s+xmlns:xi=\"([a-z0-9.:\/]+)\"\s+xml:id=\"([a-z0-9._-]+)\"\s*>/i",
+                    "/<phpdoc:(classref|exceptionref)\s+xmlns:phpdoc=\"([a-z0-9.:\/]+)\"\s+xmlns=\"([a-z0-9.:\/]+)\"\s+xmlns:xlink=\"([a-z0-9.:\/]+)\"\s+xmlns:xi=\"([a-z0-9.:\/]+)\"\s+xml:id=\"([a-z0-9._-]+)\"\s*>/i",
+                    "/<phpdoc:(classref|exceptionref)\s+xmlns=\"([a-z0-9.:\/]+)\"\s+xmlns:xlink=\"([a-z0-9.:\/]+)\"\s+xmlns:xi=\"([a-z0-9.:\/]+)\"\s+xmlns:phpdoc=\"([a-z0-9.:\/]+)\"\s+xml:id=\"([a-z0-9._-]+)\"\s*>/i",
                 ],
                 [
                     "&$1",
@@ -4317,7 +3004,6 @@
                     "<phpdoc:$1 xml:id=\"$4\" xmlns:phpdoc=\"$2\" xmlns=\"$3\">",
                     "<phpdoc:$1 xml:id=\"$5\" xmlns:phpdoc=\"$2\" xmlns=\"$3\" xmlns:xi=\"$4\">",
                     "<phpdoc:$1 xml:id=\"$6\" xmlns:phpdoc=\"$2\" xmlns=\"$3\" xmlns:xlink=\"$4\" xmlns:xi=\"$5\">",
-                    "<phpdoc:$1 xml:id=\"$6\" xmlns:phpdoc=\"$2\" xmlns=\"$5\" xmlns:xlink=\"$3\" xmlns:xi=\"$4\">",
                     "<phpdoc:$1 xml:id=\"$6\" xmlns:phpdoc=\"$5\" xmlns=\"$2\" xmlns:xlink=\"$3\" xmlns:xi=\"$4\">",
                 ],
                 $replacedXml
@@ -4327,16 +3013,6 @@
         }
     }
 
-    if ($isVerify) {
-        $missingClassSynopses = array_diff_key($classMap, $existingClassSynopses);
-        foreach ($missingClassSynopses as $className => $info) {
-            /** @var ClassInfo $info */
-            if (!$info->isUndocumentable) {
-                echo "Warning: Missing class synopsis for $className\n";
-            }
-        }
-    }
-
     return $classSynopses;
 }
 
@@ -4378,8 +3054,7 @@
  * @param array<string, FuncInfo> $aliasMap
  * @return array<string, string>
  */
-function replaceMethodSynopses(string $targetDirectory, array $funcMap, array $aliasMap, bool $isVerify): array {
-    $existingMethodSynopses = [];
+function replaceMethodSynopses(string $targetDirectory, array $funcMap, array $aliasMap): array {
     $methodSynopses = [];
 
     $it = new RecursiveIteratorIterator(
@@ -4398,35 +3073,6 @@
             continue;
         }
 
-        if ($isVerify) {
-            $matches = [];
-            preg_match("/<refname>\s*([\w:]+)\s*<\/refname>\s*<refpurpose>\s*&Alias;\s*<(?:function|methodname)>\s*([\w:]+)\s*<\/(?:function|methodname)>\s*<\/refpurpose>/i", $xml, $matches);
-            $aliasName = $matches[1] ?? null;
-            $alias = $funcMap[$aliasName] ?? null;
-            $funcName = $matches[2] ?? null;
-            $func = $funcMap[$funcName] ?? null;
-
-            if ($alias &&
-                !$alias->isUndocumentable &&
-                ($func === null || $func->alias === null || $func->alias->__toString() !== $aliasName) &&
-                ($alias->alias === null || $alias->alias->__toString() !== $funcName)
-            ) {
-                echo "Warning: $aliasName()" . ($alias->alias ? " is an alias of " . $alias->alias->__toString() . "(), but it" : "") . " is incorrectly documented as an alias for $funcName()\n";
-            }
-
-            $matches = [];
-            preg_match("/<(?:para|simpara)>\s*(?:&info.function.alias;|&info.method.alias;|&Alias;)\s+<(?:function|methodname)>\s*([\w:]+)\s*<\/(?:function|methodname)>/i", $xml, $matches);
-            $descriptionFuncName = $matches[1] ?? null;
-            $descriptionFunc = $funcMap[$descriptionFuncName] ?? null;
-            if ($descriptionFunc && $funcName !== $descriptionFuncName) {
-                echo "Warning: Alias in the method synopsis description of $pathName doesn't match the alias in the <refpurpose>\n";
-            }
-
-            if ($aliasName) {
-                $existingMethodSynopses[$aliasName] = $aliasName;
-            }
-        }
-
         if (stripos($xml, "<methodsynopsis") === false && stripos($xml, "<constructorsynopsis") === false && stripos($xml, "<destructorsynopsis") === false) {
             continue;
         }
@@ -4468,9 +3114,7 @@
             if (!isset($funcMap[$funcName])) {
                 continue;
             }
-
             $funcInfo = $funcMap[$funcName];
-            $existingMethodSynopses[$funcInfo->name->__toString()] = $funcInfo->name->__toString();
 
             $newMethodSynopsis = $funcInfo->getMethodSynopsisElement($funcMap, $aliasMap, $doc);
             if ($newMethodSynopsis === null) {
@@ -4541,8 +3185,8 @@
             $replacedXml = preg_replace(
                 [
                     "/REPLACED-ENTITY-([A-Za-z0-9._{}%-]+?;)/",
-                    '/<refentry\s+xmlns="([^"]+)"\s+xml:id="([^"]+)"\s*>/i',
-                    '/<refentry\s+xmlns="([^"]+)"\s+xmlns:xlink="([^"]+)"\s+xml:id="([^"]+)"\s*>/i',
+                    "/<refentry\s+xmlns=\"([a-z0-9.:\/]+)\"\s+xml:id=\"([a-z0-9._-]+)\"\s*>/i",
+                    "/<refentry\s+xmlns=\"([a-z0-9.:\/]+)\"\s+xmlns:xlink=\"([a-z0-9.:\/]+)\"\s+xml:id=\"([a-z0-9._-]+)\"\s*>/i",
                 ],
                 [
                     "&$1",
@@ -4556,16 +3200,6 @@
         }
     }
 
-    if ($isVerify) {
-        $missingMethodSynopses = array_diff_key($funcMap, $existingMethodSynopses);
-        foreach ($missingMethodSynopses as $functionName => $info) {
-            /** @var FuncInfo $info */
-            if (!$info->isUndocumentable) {
-                echo "Warning: Missing method synopsis for $functionName()\n";
-            }
-        }
-    }
-
     return $methodSynopses;
 }
 
@@ -4641,13 +3275,13 @@
     }
 
     $isInitialized = true;
-    $version = "4.15.1";
+    $version = "4.13.0";
     $phpParserDir = __DIR__ . "/PHP-Parser-$version";
     if (!is_dir($phpParserDir)) {
         installPhpParser($version, $phpParserDir);
     }
 
-    spl_autoload_register(static function(string $class) use ($phpParserDir) {
+    spl_autoload_register(function(string $class) use($phpParserDir) {
         if (strpos($class, "PhpParser\\") === 0) {
             $fileName = $phpParserDir . "/lib/" . str_replace("\\", "/", $class) . ".php";
             require $fileName;
@@ -4733,6 +3367,7 @@
 
 foreach ($fileInfos as $fileInfo) {
     foreach ($fileInfo->getAllFuncInfos() as $funcInfo) {
+        /** @var FuncInfo $funcInfo */
         $funcMap[$funcInfo->name->__toString()] = $funcInfo;
 
         // TODO: Don't use aliasMap for methodsynopsis?
@@ -4834,7 +3469,7 @@
 if ($generateClassSynopses) {
     $classSynopsesDirectory = getcwd() . "/classsynopses";
 
-    $classSynopses = generateClassSynopses($classMap, $context->allConstInfos);
+    $classSynopses = generateClassSynopses($classMap);
     if (!empty($classSynopses)) {
         if (!file_exists($classSynopsesDirectory)) {
             mkdir($classSynopsesDirectory);
@@ -4849,7 +3484,7 @@
 }
 
 if ($replaceClassSynopses) {
-    $classSynopses = replaceClassSynopses($targetSynopses, $classMap, $context->allConstInfos, $verify);
+    $classSynopses = replaceClassSynopses($targetSynopses, $classMap);
 
     foreach ($classSynopses as $filename => $content) {
         if (file_put_contents($filename, $content)) {
@@ -4876,7 +3511,7 @@
 }
 
 if ($replaceMethodSynopses) {
-    $methodSynopses = replaceMethodSynopses($targetSynopses, $funcMap, $aliasMap, $verify);
+    $methodSynopses = replaceMethodSynopses($targetSynopses, $funcMap, $aliasMap);
 
     foreach ($methodSynopses as $filename => $content) {
         if (file_put_contents($filename, $content)) {

Modified: trunk/MgDev/Oem/php/build/template.rc
===================================================================
--- trunk/MgDev/Oem/php/build/template.rc	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/build/template.rc	2023-03-28 14:50:37 UTC (rev 10039)
@@ -27,7 +27,7 @@
 #endif
 
 #ifndef URL
-#define URL "https://www.php.net/"
+#define URL "http://www.php.net/"
 #endif
 
 #ifndef EXT_VERSION

Modified: trunk/MgDev/Oem/php/include/TSRM/TSRM.h
===================================================================
--- trunk/MgDev/Oem/php/include/TSRM/TSRM.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/TSRM/TSRM.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -20,8 +20,7 @@
 # include "main/php_config.h"
 #endif
 
-#include <stdint.h>
-#include <stdbool.h>
+#include "main/php_stdint.h"
 
 #ifdef TSRM_WIN32
 #	ifdef TSRM_EXPORTS
@@ -80,7 +79,7 @@
 #endif
 
 /* startup/shutdown */
-TSRM_API bool tsrm_startup(int expected_threads, int expected_resources, int debug_level, const char *debug_filename);
+TSRM_API int tsrm_startup(int expected_threads, int expected_resources, int debug_level, const char *debug_filename);
 TSRM_API void tsrm_shutdown(void);
 
 /* environ lock API */
@@ -134,8 +133,8 @@
 
 TSRM_API void *tsrm_get_ls_cache(void);
 TSRM_API size_t tsrm_get_ls_cache_tcb_offset(void);
-TSRM_API bool tsrm_is_main_thread(void);
-TSRM_API bool tsrm_is_shutdown(void);
+TSRM_API uint8_t tsrm_is_main_thread(void);
+TSRM_API uint8_t tsrm_is_shutdown(void);
 TSRM_API const char *tsrm_api_name(void);
 
 #ifdef TSRM_WIN32

Modified: trunk/MgDev/Oem/php/include/TSRM/tsrm_win32.h
===================================================================
--- trunk/MgDev/Oem/php/include/TSRM/tsrm_win32.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/TSRM/tsrm_win32.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -50,6 +50,7 @@
 
 typedef struct {
 	void	*addr;
+	HANDLE	info;
 	HANDLE	segment;
 	struct	shmid_ds	*descriptor;
 } shm_pair;

Modified: trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_call_graph.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_call_graph.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_call_graph.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -60,10 +60,10 @@
 
 BEGIN_EXTERN_C()
 
-ZEND_API void zend_build_call_graph(zend_arena **arena, zend_script *script, zend_call_graph *call_graph);
+ZEND_API int zend_build_call_graph(zend_arena **arena, zend_script *script, zend_call_graph *call_graph);
 ZEND_API void zend_analyze_call_graph(zend_arena **arena, zend_script *script, zend_call_graph *call_graph);
 ZEND_API zend_call_info **zend_build_call_map(zend_arena **arena, zend_func_info *info, const zend_op_array *op_array);
-ZEND_API void zend_analyze_calls(zend_arena **arena, zend_script *script, uint32_t build_flags, zend_op_array *op_array, zend_func_info *func_info);
+ZEND_API int zend_analyze_calls(zend_arena **arena, zend_script *script, uint32_t build_flags, zend_op_array *op_array, zend_func_info *func_info);
 
 END_EXTERN_C()
 

Modified: trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_cfg.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_cfg.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_cfg.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -62,6 +62,7 @@
 |JMP         |ADR|   |   |OP1| - |
 |JMPZ        |   |ADR|   |OP2|FOL|
 |JMPNZ       |   |ADR|   |OP2|FOL|
+|JMPZNZ      |   |ADR|ADR|OP2|EXT|
 |JMPZ_EX     |   |ADR|   |OP2|FOL|
 |JMPNZ_EX    |   |ADR|   |OP2|FOL|
 |JMP_SET     |   |ADR|   |OP2|FOL|
@@ -115,11 +116,11 @@
 
 BEGIN_EXTERN_C()
 
-ZEND_API void zend_build_cfg(zend_arena **arena, const zend_op_array *op_array, uint32_t build_flags, zend_cfg *cfg);
+ZEND_API int zend_build_cfg(zend_arena **arena, const zend_op_array *op_array, uint32_t build_flags, zend_cfg *cfg);
 void zend_cfg_remark_reachable_blocks(const zend_op_array *op_array, zend_cfg *cfg);
-ZEND_API void zend_cfg_build_predecessors(zend_arena **arena, zend_cfg *cfg);
-ZEND_API void zend_cfg_compute_dominators_tree(const zend_op_array *op_array, zend_cfg *cfg);
-ZEND_API void zend_cfg_identify_loops(const zend_op_array *op_array, zend_cfg *cfg);
+ZEND_API int zend_cfg_build_predecessors(zend_arena **arena, zend_cfg *cfg);
+ZEND_API int zend_cfg_compute_dominators_tree(const zend_op_array *op_array, zend_cfg *cfg);
+ZEND_API int zend_cfg_identify_loops(const zend_op_array *op_array, zend_cfg *cfg);
 
 END_EXTERN_C()
 

Modified: trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_func_info.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_func_info.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_func_info.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -62,8 +62,8 @@
 	const zend_call_info *call_info, const zend_ssa *ssa,
 	zend_class_entry **ce, bool *ce_is_instanceof);
 
-zend_result zend_func_info_startup(void);
-zend_result zend_func_info_shutdown(void);
+int zend_func_info_startup(void);
+int zend_func_info_shutdown(void);
 
 END_EXTERN_C()
 

Modified: trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_inference.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_inference.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_inference.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -40,7 +40,7 @@
 	{ \
 		if (opline->opN##_type == IS_CONST) { \
 			zval *zv = CRT_CONSTANT(opline->opN); \
-			return (Z_TYPE_P(zv) == IS_LONG); \
+			return (Z_TYPE_P(zv) == IS_LONG || Z_TYPE_P(zv) == IS_TRUE || Z_TYPE_P(zv) == IS_FALSE || Z_TYPE_P(zv) == IS_NULL); \
 		} else { \
 			return (opline->opN##_type != IS_UNUSED && \
 		        ssa->var_info && \
@@ -57,6 +57,12 @@
 			zval *zv = CRT_CONSTANT(opline->opN); \
 			if (Z_TYPE_P(zv) == IS_LONG) { \
 				return Z_LVAL_P(zv); \
+			} else if (Z_TYPE_P(zv) == IS_TRUE) { \
+				return 1; \
+			} else if (Z_TYPE_P(zv) == IS_FALSE) { \
+				return 0; \
+			} else if (Z_TYPE_P(zv) == IS_NULL) { \
+				return 0; \
 			} \
 		} else if (opline->opN##_type != IS_UNUSED && \
 		    ssa->var_info && \
@@ -74,6 +80,12 @@
 			zval *zv = CRT_CONSTANT(opline->opN); \
 			if (Z_TYPE_P(zv) == IS_LONG) { \
 				return Z_LVAL_P(zv); \
+			} else if (Z_TYPE_P(zv) == IS_TRUE) { \
+				return 1; \
+			} else if (Z_TYPE_P(zv) == IS_FALSE) { \
+				return 0; \
+			} else if (Z_TYPE_P(zv) == IS_NULL) { \
+				return 0; \
 			} \
 		} else if (opline->opN##_type != IS_UNUSED && \
 		    ssa->var_info && \
@@ -89,7 +101,7 @@
 	{ \
 		if (opline->opN##_type == IS_CONST) { \
 			zval *zv = CRT_CONSTANT(opline->opN); \
-			if (Z_TYPE_P(zv) == IS_LONG) { \
+			if (Z_TYPE_P(zv) == IS_LONG || Z_TYPE_P(zv) == IS_TRUE || Z_TYPE_P(zv) == IS_FALSE || Z_TYPE_P(zv) == IS_NULL) { \
 				return 0; \
 			} \
 		} else if (opline->opN##_type != IS_UNUSED && \
@@ -106,7 +118,7 @@
 	{ \
 		if (opline->opN##_type == IS_CONST) { \
 			zval *zv = CRT_CONSTANT(opline->opN); \
-			if (Z_TYPE_P(zv) == IS_LONG) { \
+			if (Z_TYPE_P(zv) == IS_LONG || Z_TYPE_P(zv) == IS_TRUE || Z_TYPE_P(zv) == IS_FALSE || Z_TYPE_P(zv) == IS_NULL) { \
 				return 0; \
 			} \
 		} else if (opline->opN##_type != IS_UNUSED && \
@@ -140,15 +152,33 @@
 #define OP2_RANGE_UNDERFLOW() (_ssa_op2_range_underflow (op_array, ssa, opline, ssa_op))
 #define OP2_RANGE_OVERFLOW()  (_ssa_op2_range_overflow (op_array, ssa, opline, ssa_op))
 
-BEGIN_EXTERN_C()
-ZEND_API uint32_t ZEND_FASTCALL zend_array_type_info(const zval *zv);
-END_EXTERN_C()
-
 static zend_always_inline uint32_t _const_op_type(const zval *zv) {
 	if (Z_TYPE_P(zv) == IS_CONSTANT_AST) {
 		return MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY;
 	} else if (Z_TYPE_P(zv) == IS_ARRAY) {
-		return zend_array_type_info(zv);
+		HashTable *ht = Z_ARRVAL_P(zv);
+		uint32_t tmp = MAY_BE_ARRAY;
+		zend_string *str;
+		zval *val;
+
+		if (Z_REFCOUNTED_P(zv)) {
+			tmp |= MAY_BE_RC1 | MAY_BE_RCN;
+		} else {
+			tmp |= MAY_BE_RCN;
+		}
+
+		ZEND_HASH_FOREACH_STR_KEY_VAL(ht, str, val) {
+			if (str) {
+				tmp |= MAY_BE_ARRAY_KEY_STRING;
+			} else {
+				tmp |= MAY_BE_ARRAY_KEY_LONG;
+			}
+			tmp |= 1 << (Z_TYPE_P(val) + MAY_BE_ARRAY_SHIFT);
+		} ZEND_HASH_FOREACH_END();
+		if (HT_IS_PACKED(ht)) {
+			tmp &= ~(MAY_BE_ARRAY_NUMERIC_HASH|MAY_BE_ARRAY_STRING_HASH);
+		}
+		return tmp;
 	} else {
 		uint32_t tmp = (1 << Z_TYPE_P(zv));
 
@@ -216,13 +246,13 @@
 
 BEGIN_EXTERN_C()
 
-ZEND_API void zend_ssa_find_false_dependencies(const zend_op_array *op_array, zend_ssa *ssa);
-ZEND_API void zend_ssa_find_sccs(const zend_op_array *op_array, zend_ssa *ssa);
+ZEND_API int zend_ssa_find_false_dependencies(const zend_op_array *op_array, zend_ssa *ssa);
+ZEND_API int zend_ssa_find_sccs(const zend_op_array *op_array, zend_ssa *ssa);
 ZEND_API int zend_ssa_inference(zend_arena **raena, const zend_op_array *op_array, const zend_script *script, zend_ssa *ssa, zend_long optimization_level);
 
 ZEND_API uint32_t zend_array_element_type(uint32_t t1, zend_uchar op_type, int write, int insert);
 
-ZEND_API bool zend_inference_propagate_range(const zend_op_array *op_array, zend_ssa *ssa, zend_op *opline, zend_ssa_op* ssa_op, int var, zend_ssa_range *tmp);
+ZEND_API int zend_inference_propagate_range(const zend_op_array *op_array, zend_ssa *ssa, zend_op *opline, zend_ssa_op* ssa_op, int var, zend_ssa_range *tmp);
 
 ZEND_API uint32_t zend_fetch_arg_info_type(
 	const zend_script *script, zend_arg_info *arg_info, zend_class_entry **pce);
@@ -232,10 +262,10 @@
 		const zend_function *func, const zend_script *script,
 		zend_class_entry **ce, bool *ce_is_instanceof, bool use_tentative_return_info);
 
-ZEND_API bool zend_may_throw_ex(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa, uint32_t t1, uint32_t t2);
-ZEND_API bool zend_may_throw(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa);
+ZEND_API int zend_may_throw_ex(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa, uint32_t t1, uint32_t t2);
+ZEND_API int zend_may_throw(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa);
 
-ZEND_API zend_result zend_update_type_info(
+ZEND_API int zend_update_type_info(
 	const zend_op_array *op_array, zend_ssa *ssa, const zend_script *script,
 	zend_op *opline, zend_ssa_op *ssa_op, const zend_op **ssa_opcodes,
 	zend_long optimization_level);

Modified: trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_optimizer.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_optimizer.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_optimizer.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -88,16 +88,17 @@
 	zend_op_array  main_op_array;
 	HashTable      function_table;
 	HashTable      class_table;
+	uint32_t       first_early_binding_opline; /* the linked list of delayed declarations */
 } zend_script;
 
 typedef void (*zend_optimizer_pass_t)(zend_script *, void *context);
 
 BEGIN_EXTERN_C()
-ZEND_API void zend_optimize_script(zend_script *script, zend_long optimization_level, zend_long debug_level);
+ZEND_API int zend_optimize_script(zend_script *script, zend_long optimization_level, zend_long debug_level);
 ZEND_API int zend_optimizer_register_pass(zend_optimizer_pass_t pass);
 ZEND_API void zend_optimizer_unregister_pass(int idx);
-zend_result zend_optimizer_startup(void);
-zend_result zend_optimizer_shutdown(void);
+int zend_optimizer_startup(void);
+int zend_optimizer_shutdown(void);
 END_EXTERN_C()
 
 #endif

Modified: trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_ssa.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_ssa.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/Optimizer/zend_ssa.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -145,11 +145,10 @@
 
 BEGIN_EXTERN_C()
 
-ZEND_API zend_result zend_build_ssa(zend_arena **arena, const zend_script *script, const zend_op_array *op_array, uint32_t build_flags, zend_ssa *ssa);
-ZEND_API void zend_ssa_compute_use_def_chains(zend_arena **arena, const zend_op_array *op_array, zend_ssa *ssa);
+ZEND_API int zend_build_ssa(zend_arena **arena, const zend_script *script, const zend_op_array *op_array, uint32_t build_flags, zend_ssa *ssa);
+ZEND_API int zend_ssa_compute_use_def_chains(zend_arena **arena, const zend_op_array *op_array, zend_ssa *ssa);
 ZEND_API int zend_ssa_rename_op(const zend_op_array *op_array, const zend_op *opline, uint32_t k, uint32_t build_flags, int ssa_vars_count, zend_ssa_op *ssa_ops, int *var);
-void zend_ssa_unlink_use_chain(zend_ssa *ssa, int op, int var);
-void zend_ssa_replace_use_chain(zend_ssa *ssa, int op, int new_op, int var);
+int zend_ssa_unlink_use_chain(zend_ssa *ssa, int op, int var);
 
 void zend_ssa_remove_predecessor(zend_ssa *ssa, int from, int to);
 void zend_ssa_remove_defs_of_instr(zend_ssa *ssa, zend_ssa_op *ssa_op);

Modified: trunk/MgDev/Oem/php/include/Zend/zend.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -20,7 +20,7 @@
 #ifndef ZEND_H
 #define ZEND_H
 
-#define ZEND_VERSION "4.2.4"
+#define ZEND_VERSION "4.1.17"
 
 #define ZEND_ENGINE_3
 
@@ -115,7 +115,6 @@
 	zval      *default_properties_table;
 	HashTable *constants_table;
 	uint32_t   ce_flags;
-	HashTable *backed_enum_table;
 } zend_class_mutable_data;
 
 typedef struct _zend_class_dependency {
@@ -184,8 +183,6 @@
 
 	/* allocated only if class implements Iterator or IteratorAggregate interface */
 	zend_class_iterator_funcs *iterator_funcs_ptr;
-	/* allocated only if class implements ArrayAccess interface */
-	zend_class_arrayaccess_funcs *arrayaccess_funcs_ptr;
 
 	/* handlers */
 	union {
@@ -298,9 +295,8 @@
 ZEND_API void zend_print_flat_zval_r(zval *expr);
 void zend_print_flat_zval_r_to_buf(smart_str *str, zval *expr);
 
-static zend_always_inline size_t zend_print_variable(zval *var) {
-	return zend_print_zval(var, 0);
-}
+#define zend_print_variable(var) \
+	zend_print_zval((var), 0)
 
 ZEND_API ZEND_COLD void zend_output_debug_string(bool trigger_break, const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 2, 3);
 

Modified: trunk/MgDev/Oem/php/include/Zend/zend_API.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_API.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_API.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -95,17 +95,6 @@
 #define ZEND_NS_FENTRY(ns, zend_name, name, arg_info, flags)		ZEND_RAW_FENTRY(ZEND_NS_NAME(ns, #zend_name), name, arg_info, flags)
 
 #define ZEND_NS_RAW_FENTRY(ns, zend_name, name, arg_info, flags)	ZEND_RAW_FENTRY(ZEND_NS_NAME(ns, zend_name), name, arg_info, flags)
-/**
- * Note that if you are asserting that a function is compile-time evaluable, you are asserting that
- *
- * 1. The function will always have the same result for the same arguments
- * 2. The function does not depend on global state such as ini settings or locale (e.g. mb_strtolower), number_format(), etc.
- * 3. The function does not have side effects. It is okay if they throw
- *    or warn on invalid arguments, as we detect this and will discard the evaluation result.
- * 4. The function will not take an unreasonable amount of time or memory to compute on code that may be seen in practice.
- *    (e.g. str_repeat is special cased to check the length instead of using this)
- */
-#define ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(name, arg_info) ZEND_RAW_FENTRY(#name, zif_##name, arg_info, ZEND_ACC_COMPILE_TIME_EVAL)
 
 /* Same as ZEND_NS_NAMED_FE */
 #define ZEND_NS_RAW_NAMED_FE(ns, zend_name, name, arg_info)			ZEND_NS_RAW_FENTRY(ns, #zend_name, name, arg_info, 0)
@@ -303,7 +292,6 @@
 		class_container.interfaces = NULL;						\
 		class_container.get_iterator = NULL;					\
 		class_container.iterator_funcs_ptr = NULL;				\
-		class_container.arrayaccess_funcs_ptr = NULL;			\
 		class_container.info.internal.module = NULL;			\
 		class_container.info.internal.builtin_functions = functions;	\
 	}
@@ -321,21 +309,20 @@
 #define CE_DEFAULT_PROPERTIES_TABLE(ce) \
 	zend_class_default_properties_table(ce)
 
-#define CE_BACKED_ENUM_TABLE(ce) \
-	zend_class_backed_enum_table(ce)
-
 #define ZEND_FCI_INITIALIZED(fci) ((fci).size != 0)
 
 ZEND_API int zend_next_free_module(void);
 
 BEGIN_EXTERN_C()
-ZEND_API zend_result zend_get_parameters_array_ex(uint32_t param_count, zval *argument_array);
+ZEND_API zend_result _zend_get_parameters_array_ex(uint32_t param_count, zval *argument_array);
 
 /* internal function to efficiently copy parameters when executing __call() */
 ZEND_API zend_result zend_copy_parameters_array(uint32_t param_count, zval *argument_array);
 
 #define zend_get_parameters_array(ht, param_count, argument_array) \
-	zend_get_parameters_array_ex(param_count, argument_array)
+	_zend_get_parameters_array_ex(param_count, argument_array)
+#define zend_get_parameters_array_ex(param_count, argument_array) \
+	_zend_get_parameters_array_ex(param_count, argument_array)
 #define zend_parse_parameters_none() \
 	(EXPECTED(ZEND_NUM_ARGS() == 0) ? SUCCESS : (zend_wrong_parameters_none_error(), FAILURE))
 #define zend_parse_parameters_none_throw() \
@@ -380,9 +367,8 @@
 
 ZEND_API zend_result zend_register_class_alias_ex(const char *name, size_t name_len, zend_class_entry *ce, bool persistent);
 
-static zend_always_inline zend_result zend_register_class_alias(const char *name, zend_class_entry *ce) {
-	return zend_register_class_alias_ex(name, strlen(name), ce, 1);
-}
+#define zend_register_class_alias(name, ce) \
+	zend_register_class_alias_ex(name, sizeof(name)-1, ce, 1)
 #define zend_register_ns_class_alias(ns, name, ce) \
 	zend_register_class_alias_ex(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name))-1, ce, 1)
 
@@ -390,10 +376,9 @@
 ZEND_API zend_result zend_disable_class(const char *class_name, size_t class_name_length);
 
 ZEND_API ZEND_COLD void zend_wrong_param_count(void);
-ZEND_API ZEND_COLD void zend_wrong_property_read(zval *object, zval *property);
 
 #define IS_CALLABLE_CHECK_SYNTAX_ONLY (1<<0)
-#define IS_CALLABLE_SUPPRESS_DEPRECATIONS (1<<1)
+#define IS_CALLABLE_CHECK_SILENT      (1<<3)
 
 ZEND_API void zend_release_fcall_info_cache(zend_fcall_info_cache *fcc);
 ZEND_API zend_string *zend_get_callable_name_ex(zval *callable, zend_object *object);
@@ -454,26 +439,6 @@
 	}
 }
 
-static zend_always_inline void zend_class_set_backed_enum_table(zend_class_entry *ce, HashTable *backed_enum_table)
-{
-	if (ZEND_MAP_PTR(ce->mutable_data) && ce->type == ZEND_USER_CLASS) {
-		zend_class_mutable_data *mutable_data = (zend_class_mutable_data*)ZEND_MAP_PTR_GET_IMM(ce->mutable_data);
-		mutable_data->backed_enum_table = backed_enum_table;
-	} else {
-		ce->backed_enum_table = backed_enum_table;
-	}
-}
-
-static zend_always_inline HashTable *zend_class_backed_enum_table(zend_class_entry *ce)
-{
-	if (ZEND_MAP_PTR(ce->mutable_data) && ce->type == ZEND_USER_CLASS) {
-		zend_class_mutable_data *mutable_data = (zend_class_mutable_data*)ZEND_MAP_PTR_GET_IMM(ce->mutable_data);
-		return mutable_data->backed_enum_table;
-	} else {
-		return ce->backed_enum_table;
-	}
-}
-
 ZEND_API void zend_update_property_ex(zend_class_entry *scope, zend_object *object, zend_string *name, zval *value);
 ZEND_API void zend_update_property(zend_class_entry *scope, zend_object *object, const char *name, size_t name_length, zval *value);
 ZEND_API void zend_update_property_null(zend_class_entry *scope, zend_object *object, const char *name, size_t name_length);
@@ -508,8 +473,10 @@
 #define ZEND_IS_METHOD_CALL()				(EX(func)->common.scope != NULL)
 
 #define WRONG_PARAM_COUNT					ZEND_WRONG_PARAM_COUNT()
+#define WRONG_PARAM_COUNT_WITH_RETVAL(ret)	ZEND_WRONG_PARAM_COUNT_WITH_RETVAL(ret)
 #define ZEND_NUM_ARGS()						EX_NUM_ARGS()
 #define ZEND_WRONG_PARAM_COUNT()					{ zend_wrong_param_count(); return; }
+#define ZEND_WRONG_PARAM_COUNT_WITH_RETVAL(ret)		{ zend_wrong_param_count(); return ret; }
 
 #ifndef ZEND_WIN32
 #define DLEXPORT
@@ -539,42 +506,18 @@
 ZEND_API void add_assoc_reference_ex(zval *arg, const char *key, size_t key_len, zend_reference *ref);
 ZEND_API void add_assoc_zval_ex(zval *arg, const char *key, size_t key_len, zval *value);
 
-static zend_always_inline void add_assoc_long(zval *arg, const char *key, zend_long n) {
-	add_assoc_long_ex(arg, key, strlen(key), n);
-}
-static zend_always_inline void add_assoc_null(zval *arg, const char *key) {
-	add_assoc_null_ex(arg, key, strlen(key));
-}
-static zend_always_inline void add_assoc_bool(zval *arg, const char *key, bool b) {
-	add_assoc_bool_ex(arg, key, strlen(key), b);
-}
-static zend_always_inline void add_assoc_resource(zval *arg, const char *key, zend_resource *r) {
-	add_assoc_resource_ex(arg, key, strlen(key), r);
-}
-static zend_always_inline void add_assoc_double(zval *arg, const char *key, double d) {
-	add_assoc_double_ex(arg, key, strlen(key), d);
-}
-static zend_always_inline void add_assoc_str(zval *arg, const char *key, zend_string *str) {
-	add_assoc_str_ex(arg, key, strlen(key), str);
-}
-static zend_always_inline void add_assoc_string(zval *arg, const char *key, const char *str) {
-	add_assoc_string_ex(arg, key, strlen(key), str);
-}
-static zend_always_inline void add_assoc_stringl(zval *arg, const char *key, const char *str, size_t length) {
-	add_assoc_stringl_ex(arg, key, strlen(key), str, length);
-}
-static zend_always_inline void add_assoc_array(zval *arg, const char *key, zend_array *arr) {
-	add_assoc_array_ex(arg, key, strlen(key), arr);
-}
-static zend_always_inline void add_assoc_object(zval *arg, const char *key, zend_object *obj) {
-	add_assoc_object_ex(arg, key, strlen(key), obj);
-}
-static zend_always_inline void add_assoc_reference(zval *arg, const char *key, zend_reference *ref) {
-	add_assoc_reference_ex(arg, key, strlen(key), ref);
-}
-static zend_always_inline void add_assoc_zval(zval *arg, const char *key, zval *value) {
-	add_assoc_zval_ex(arg, key, strlen(key), value);
-}
+#define add_assoc_long(__arg, __key, __n) add_assoc_long_ex(__arg, __key, strlen(__key), __n)
+#define add_assoc_null(__arg, __key) add_assoc_null_ex(__arg, __key, strlen(__key))
+#define add_assoc_bool(__arg, __key, __b) add_assoc_bool_ex(__arg, __key, strlen(__key), __b)
+#define add_assoc_resource(__arg, __key, __r) add_assoc_resource_ex(__arg, __key, strlen(__key), __r)
+#define add_assoc_double(__arg, __key, __d) add_assoc_double_ex(__arg, __key, strlen(__key), __d)
+#define add_assoc_str(__arg, __key, __str) add_assoc_str_ex(__arg, __key, strlen(__key), __str)
+#define add_assoc_string(__arg, __key, __str) add_assoc_string_ex(__arg, __key, strlen(__key), __str)
+#define add_assoc_stringl(__arg, __key, __str, __length) add_assoc_stringl_ex(__arg, __key, strlen(__key), __str, __length)
+#define add_assoc_array(__arg, __key, __arr) add_assoc_array_ex(__arg, __key, strlen(__key), __arr)
+#define add_assoc_object(__arg, __key, __obj) add_assoc_object_ex(__arg, __key, strlen(__key), __obj)
+#define add_assoc_reference(__arg, __key, __ref) add_assoc_object_ex(__arg, __key, strlen(__key), __ref)
+#define add_assoc_zval(__arg, __key, __value) add_assoc_zval_ex(__arg, __key, strlen(__key), __value)
 
 ZEND_API void add_index_long(zval *arg, zend_ulong index, zend_long n);
 ZEND_API void add_index_null(zval *arg, zend_ulong index);
@@ -625,43 +568,20 @@
 ZEND_API void add_property_reference_ex(zval *arg, const char *key, size_t key_len, zend_reference *ref);
 ZEND_API void add_property_zval_ex(zval *arg, const char *key, size_t key_len, zval *value);
 
-static zend_always_inline void add_property_long(zval *arg, const char *key, zend_long n) {
-	add_property_long_ex(arg, key, strlen(key), n);
-}
-static zend_always_inline void add_property_null(zval *arg, const char *key) {
-	add_property_null_ex(arg, key, strlen(key));
-}
-static zend_always_inline void add_property_bool(zval *arg, const char *key, bool b) {
-	add_property_bool_ex(arg, key, strlen(key), b);
-}
-static zend_always_inline void add_property_resource(zval *arg, const char *key, zend_resource *r) {
-	add_property_resource_ex(arg, key, strlen(key), r);
-}
-static zend_always_inline void add_property_double(zval *arg, const char *key, double d) {
-	add_property_double_ex(arg, key, strlen(key), d);
-}
-static zend_always_inline void add_property_str(zval *arg, const char *key, zend_string *str) {
-	add_property_str_ex(arg, key, strlen(key), str);
-}
-static zend_always_inline void add_property_string(zval *arg, const char *key, const char *str) {
-	add_property_string_ex(arg, key, strlen(key), str);
-}
-static zend_always_inline void add_property_stringl(zval *arg, const char *key, const char *str, size_t length) {
-	add_property_stringl_ex(arg, key, strlen(key), str, length);
-}
-static zend_always_inline void add_property_array(zval *arg, const char *key, zend_array *arr) {
-	add_property_array_ex(arg, key, strlen(key), arr);
-}
-static zend_always_inline void add_property_object(zval *arg, const char *key, zend_object *obj) {
-	add_property_object_ex(arg, key, strlen(key), obj);
-}
-static zend_always_inline void add_property_reference(zval *arg, const char *key, zend_reference *ref) {
-	add_property_reference_ex(arg, key, strlen(key), ref);
-}
-static zend_always_inline void add_property_zval(zval *arg, const char *key, zval *value) {
-	add_property_zval_ex(arg, key, strlen(key), value);
-}
+#define add_property_long(__arg, __key, __n) add_property_long_ex(__arg, __key, strlen(__key), __n)
+#define add_property_null(__arg, __key) add_property_null_ex(__arg, __key, strlen(__key))
+#define add_property_bool(__arg, __key, __b) add_property_bool_ex(__arg, __key, strlen(__key), __b)
+#define add_property_resource(__arg, __key, __r) add_property_resource_ex(__arg, __key, strlen(__key), __r)
+#define add_property_double(__arg, __key, __d) add_property_double_ex(__arg, __key, strlen(__key), __d)
+#define add_property_str(__arg, __key, __str) add_property_str_ex(__arg, __key, strlen(__key), __str)
+#define add_property_string(__arg, __key, __str) add_property_string_ex(__arg, __key, strlen(__key), __str)
+#define add_property_stringl(__arg, __key, __str, __length) add_property_stringl_ex(__arg, __key, strlen(__key), __str, __length)
+#define add_property_array(__arg, __key, __arr) add_property_array_ex(__arg, __key, strlen(__key), __arr)
+#define add_property_object(__arg, __key, __obj) add_property_object_ex(__arg, __key, strlen(__key), __obj)
+#define add_property_reference(__arg, __key, __ref) add_property_reference_ex(__arg, __key, strlen(__key), __ref)
+#define add_property_zval(__arg, __key, __value) add_property_zval_ex(__arg, __key, strlen(__key), __value)
 
+
 ZEND_API zend_result _call_user_function_impl(zval *object, zval *function_name, zval *retval_ptr, uint32_t param_count, zval params[], HashTable *named_params);
 
 #define call_user_function(function_table, object, function_name, retval_ptr, param_count, params) \
@@ -726,9 +646,6 @@
  */
 ZEND_API zend_result zend_fcall_info_call(zend_fcall_info *fci, zend_fcall_info_cache *fcc, zval *retval, zval *args);
 
-/* Can only return FAILURE if EG(active) is false during late engine shutdown.
- * If the call or call setup throws, EG(exception) will be set and the retval
- * will be UNDEF. Otherwise, the retval will be a non-UNDEF value. */
 ZEND_API zend_result zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache);
 
 /* Call the provided zend_function with the given params.
@@ -762,13 +679,6 @@
 ZEND_API void zend_call_known_instance_method_with_2_params(
 		zend_function *fn, zend_object *object, zval *retval_ptr, zval *param1, zval *param2);
 
-/* Call method if it exists. Return FAILURE if method does not exist or call failed.
- * If FAILURE is returned, retval will be UNDEF. As such, destroying retval unconditionally
- * is legal. */
-ZEND_API zend_result zend_call_method_if_exists(
-		zend_object *object, zend_string *method_name, zval *retval,
-		uint32_t param_count, zval *params);
-
 ZEND_API zend_result zend_set_hash_symbol(zval *symbol, const char *name, size_t name_length, bool is_ref, int num_symbol_tables, ...);
 
 ZEND_API zend_result zend_delete_global_variable(zend_string *name);
@@ -779,16 +689,13 @@
 ZEND_API zend_result zend_set_local_var(zend_string *name, zval *value, bool force);
 ZEND_API zend_result zend_set_local_var_str(const char *name, size_t len, zval *value, bool force);
 
-static zend_always_inline zend_result zend_forbid_dynamic_call(void)
+static zend_always_inline zend_result zend_forbid_dynamic_call(const char *func_name)
 {
 	zend_execute_data *ex = EG(current_execute_data);
 	ZEND_ASSERT(ex != NULL && ex->func != NULL);
 
 	if (ZEND_CALL_INFO(ex) & ZEND_CALL_DYNAMIC) {
-		zend_string *function_or_method_name = get_active_function_or_method_name();
-		zend_throw_error(NULL, "Cannot call %.*s() dynamically",
-			(int) ZSTR_LEN(function_or_method_name), ZSTR_VAL(function_or_method_name));
-		zend_string_release(function_or_method_name);
+		zend_throw_error(NULL, "Cannot call %s dynamically", func_name);
 		return FAILURE;
 	}
 
@@ -795,18 +702,8 @@
 	return SUCCESS;
 }
 
-ZEND_API ZEND_COLD const char *zend_get_object_type_case(const zend_class_entry *ce, bool upper_case);
+ZEND_API ZEND_COLD const char *zend_get_object_type(const zend_class_entry *ce);
 
-static zend_always_inline const char *zend_get_object_type(const zend_class_entry *ce)
-{
-	return zend_get_object_type_case(ce, false);
-}
-
-static zend_always_inline const char *zend_get_object_type_uc(const zend_class_entry *ce)
-{
-	return zend_get_object_type_case(ce, true);
-}
-
 ZEND_API bool zend_is_iterable(zval *iterable);
 
 ZEND_API bool zend_is_countable(zval *countable);
@@ -823,19 +720,9 @@
 #define CHECK_ZVAL_STRING(z)
 #endif
 
-static zend_always_inline bool zend_str_has_nul_byte(const zend_string *str)
-{
-	return ZSTR_LEN(str) != strlen(ZSTR_VAL(str));
-}
-static zend_always_inline bool zend_char_has_nul_byte(const char *s, size_t known_length)
-{
-	return known_length != strlen(s);
-}
+#define CHECK_ZVAL_NULL_PATH(p) (Z_STRLEN_P(p) != strlen(Z_STRVAL_P(p)))
+#define CHECK_NULL_PATH(p, l) (strlen(p) != (size_t)(l))
 
-/* Compatibility with PHP 8.1 and below */
-#define CHECK_ZVAL_NULL_PATH(p) zend_str_has_nul_byte(Z_STR_P(p))
-#define CHECK_NULL_PATH(p, l) zend_char_has_nul_byte(p, l)
-
 #define ZVAL_STRINGL(z, s, l) do {				\
 		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
 	} while (0)
@@ -1400,8 +1287,8 @@
 	_(Z_EXPECTED_ARRAY_OR_NULL,		"of type ?array") \
 	_(Z_EXPECTED_ARRAY_OR_LONG,		"of type array|int") \
 	_(Z_EXPECTED_ARRAY_OR_LONG_OR_NULL, "of type array|int|null") \
-	_(Z_EXPECTED_ITERABLE,				"of type Traversable|array") \
-	_(Z_EXPECTED_ITERABLE_OR_NULL,		"of type Traversable|array|null") \
+	_(Z_EXPECTED_ITERABLE,				"of type iterable") \
+	_(Z_EXPECTED_ITERABLE_OR_NULL,		"of type ?iterable") \
 	_(Z_EXPECTED_FUNC,				"a valid callback") \
 	_(Z_EXPECTED_FUNC_OR_NULL,		"a valid callback or null") \
 	_(Z_EXPECTED_RESOURCE,			"of type resource") \
@@ -1538,10 +1425,6 @@
 		SEPARATE_ZVAL_NOREF(_arg); \
 	}
 
-/* get the zval* for a previously parsed argument */
-#define Z_PARAM_GET_PREV_ZVAL(dest) \
-	zend_parse_arg_zval_deref(_arg, &dest, 0);
-
 /* old "|" */
 #define Z_PARAM_OPTIONAL \
 	_optional = 1;
@@ -1704,10 +1587,6 @@
 #define Z_PARAM_FUNC_OR_NULL(dest_fci, dest_fcc) \
 	Z_PARAM_FUNC_EX(dest_fci, dest_fcc, 1, 0)
 
-#define Z_PARAM_FUNC_OR_NULL_WITH_ZVAL(dest_fci, dest_fcc, dest_zp) \
-	Z_PARAM_FUNC_EX(dest_fci, dest_fcc, 1, 0) \
-	Z_PARAM_GET_PREV_ZVAL(dest_zp)
-
 /* old "h" */
 #define Z_PARAM_ARRAY_HT_EX2(dest, check_null, deref, separate) \
 		Z_PARAM_PROLOGUE(deref, separate); \
@@ -1982,7 +1861,7 @@
 	Z_PARAM_VARIADIC_EX(spec, dest, dest_num, 0)
 
 #define Z_PARAM_VARIADIC_WITH_NAMED(dest, dest_num, dest_named) do { \
-		uint32_t _num_varargs = _num_args - _i; \
+		int _num_varargs = _num_args - _i; \
 		if (EXPECTED(_num_varargs > 0)) { \
 			dest = _real_arg + 1; \
 			dest_num = _num_varargs; \

Modified: trunk/MgDev/Oem/php/include/Zend/zend_alloc.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_alloc.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_alloc.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -27,7 +27,13 @@
 #include "zend.h"
 
 #ifndef ZEND_MM_ALIGNMENT
-# error "ZEND_MM_ALIGNMENT was not defined during configure"
+# define ZEND_MM_ALIGNMENT Z_UL(8)
+# define ZEND_MM_ALIGNMENT_LOG2 Z_L(3)
+#elif ZEND_MM_ALIGNMENT < 4
+# undef ZEND_MM_ALIGNMENT
+# undef ZEND_MM_ALIGNMENT_LOG2
+# define ZEND_MM_ALIGNMENT Z_UL(4)
+# define ZEND_MM_ALIGNMENT_LOG2 Z_L(2)
 #endif
 
 #define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
@@ -62,19 +68,19 @@
 
 BEGIN_EXTERN_C()
 
-ZEND_API ZEND_ATTRIBUTE_MALLOC char*  ZEND_FASTCALL zend_strndup(const char *s, size_t length);
+ZEND_API char*  ZEND_FASTCALL zend_strndup(const char *s, size_t length) ZEND_ATTRIBUTE_MALLOC;
 
-ZEND_API ZEND_ATTRIBUTE_MALLOC void*  ZEND_FASTCALL _emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_ALLOC_SIZE(1);
-ZEND_API ZEND_ATTRIBUTE_MALLOC void*  ZEND_FASTCALL _safe_emalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
-ZEND_API ZEND_ATTRIBUTE_MALLOC void*  ZEND_FASTCALL _safe_malloc(size_t nmemb, size_t size, size_t offset);
+ZEND_API void*  ZEND_FASTCALL _emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC ZEND_ATTRIBUTE_ALLOC_SIZE(1);
+ZEND_API void*  ZEND_FASTCALL _safe_emalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC;
+ZEND_API void*  ZEND_FASTCALL _safe_malloc(size_t nmemb, size_t size, size_t offset) ZEND_ATTRIBUTE_MALLOC;
 ZEND_API void   ZEND_FASTCALL _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
-ZEND_API ZEND_ATTRIBUTE_MALLOC void*  ZEND_FASTCALL _ecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_ALLOC_SIZE2(1,2);
+ZEND_API void*  ZEND_FASTCALL _ecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC ZEND_ATTRIBUTE_ALLOC_SIZE2(1,2);
 ZEND_API void*  ZEND_FASTCALL _erealloc(void *ptr, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_ALLOC_SIZE(2);
 ZEND_API void*  ZEND_FASTCALL _erealloc2(void *ptr, size_t size, size_t copy_size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_ALLOC_SIZE(2);
 ZEND_API void*  ZEND_FASTCALL _safe_erealloc(void *ptr, size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
 ZEND_API void*  ZEND_FASTCALL _safe_realloc(void *ptr, size_t nmemb, size_t size, size_t offset);
-ZEND_API ZEND_ATTRIBUTE_MALLOC char*  ZEND_FASTCALL _estrdup(const char *s ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
-ZEND_API ZEND_ATTRIBUTE_MALLOC char*  ZEND_FASTCALL _estrndup(const char *s, size_t length ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
+ZEND_API char*  ZEND_FASTCALL _estrdup(const char *s ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC;
+ZEND_API char*  ZEND_FASTCALL _estrndup(const char *s, size_t length ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC;
 ZEND_API size_t ZEND_FASTCALL _zend_mem_block_size(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
 
 #include "zend_alloc_sizes.h"
@@ -83,12 +89,12 @@
 #if !ZEND_DEBUG && defined(HAVE_BUILTIN_CONSTANT_P)
 
 # define _ZEND_BIN_ALLOCATOR_DEF(_num, _size, _elements, _pages, x, y) \
-	ZEND_API ZEND_ATTRIBUTE_MALLOC void* ZEND_FASTCALL _emalloc_  ## _size(void);
+	ZEND_API void* ZEND_FASTCALL _emalloc_  ## _size(void) ZEND_ATTRIBUTE_MALLOC;
 
 ZEND_MM_BINS_INFO(_ZEND_BIN_ALLOCATOR_DEF, x, y)
 
-ZEND_API ZEND_ATTRIBUTE_MALLOC void* ZEND_FASTCALL _emalloc_large(size_t size) ZEND_ATTRIBUTE_ALLOC_SIZE(1);
-ZEND_API ZEND_ATTRIBUTE_MALLOC void* ZEND_FASTCALL _emalloc_huge(size_t size) ZEND_ATTRIBUTE_ALLOC_SIZE(1);
+ZEND_API void* ZEND_FASTCALL _emalloc_large(size_t size) ZEND_ATTRIBUTE_MALLOC ZEND_ATTRIBUTE_ALLOC_SIZE(1);
+ZEND_API void* ZEND_FASTCALL _emalloc_huge(size_t size) ZEND_ATTRIBUTE_MALLOC ZEND_ATTRIBUTE_ALLOC_SIZE(1);
 
 # define _ZEND_BIN_ALLOCATOR_SELECTOR_START(_num, _size, _elements, _pages, size, y) \
 	((size <= _size) ? _emalloc_ ## _size() :
@@ -179,10 +185,9 @@
 #define estrndup_rel(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC)
 #define zend_mem_block_size_rel(ptr)			_zend_mem_block_size((ptr) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC)
 
-ZEND_API ZEND_ATTRIBUTE_MALLOC void * __zend_malloc(size_t len) ZEND_ATTRIBUTE_ALLOC_SIZE(1);
-ZEND_API ZEND_ATTRIBUTE_MALLOC void * __zend_calloc(size_t nmemb, size_t len) ZEND_ATTRIBUTE_ALLOC_SIZE2(1,2);
+ZEND_API void * __zend_malloc(size_t len) ZEND_ATTRIBUTE_MALLOC ZEND_ATTRIBUTE_ALLOC_SIZE(1);
+ZEND_API void * __zend_calloc(size_t nmemb, size_t len) ZEND_ATTRIBUTE_MALLOC ZEND_ATTRIBUTE_ALLOC_SIZE2(1,2);
 ZEND_API void * __zend_realloc(void *p, size_t len) ZEND_ATTRIBUTE_ALLOC_SIZE(2);
-ZEND_API ZEND_ATTRIBUTE_MALLOC char * __zend_strdup(const char *s);
 
 /* Selective persistent/non persistent allocation macros */
 #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size):emalloc(size))
@@ -202,7 +207,7 @@
 #define safe_perealloc(ptr, nmemb, size, offset, persistent)	((persistent)?_safe_realloc((ptr), (nmemb), (size), (offset)):safe_erealloc((ptr), (nmemb), (size), (offset)))
 #define perealloc_recoverable(ptr, size, persistent) ((persistent)?realloc((ptr), (size)):erealloc_recoverable((ptr), (size)))
 #define perealloc2_recoverable(ptr, size, persistent) ((persistent)?realloc((ptr), (size)):erealloc2_recoverable((ptr), (size), (copy_size)))
-#define pestrdup(s, persistent) ((persistent)?__zend_strdup(s):estrdup(s))
+#define pestrdup(s, persistent) ((persistent)?strdup(s):estrdup(s))
 #define pestrndup(s, length, persistent) ((persistent)?zend_strndup((s),(length)):estrndup((s),(length)))
 
 #define pemalloc_rel(size, persistent) ((persistent)?__zend_malloc(size):emalloc_rel(size))
@@ -224,7 +229,6 @@
 
 ZEND_API size_t zend_memory_usage(bool real_usage);
 ZEND_API size_t zend_memory_peak_usage(bool real_usage);
-ZEND_API void zend_memory_reset_peak_usage(void);
 
 /* fast cache for HashTables */
 #define ALLOC_HASHTABLE(ht)	\
@@ -244,7 +248,7 @@
 
 ZEND_API zend_mm_heap *zend_mm_startup(void);
 ZEND_API void zend_mm_shutdown(zend_mm_heap *heap, bool full_shutdown, bool silent);
-ZEND_API ZEND_ATTRIBUTE_MALLOC void*  ZEND_FASTCALL _zend_mm_alloc(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_ALLOC_SIZE(2);
+ZEND_API void*  ZEND_FASTCALL _zend_mm_alloc(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC;
 ZEND_API void   ZEND_FASTCALL _zend_mm_free(zend_mm_heap *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
 ZEND_API void*  ZEND_FASTCALL _zend_mm_realloc(zend_mm_heap *heap, void *p, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
 ZEND_API void*  ZEND_FASTCALL _zend_mm_realloc2(zend_mm_heap *heap, void *p, size_t size, size_t copy_size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);

Modified: trunk/MgDev/Oem/php/include/Zend/zend_ast.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_ast.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_ast.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -355,9 +355,6 @@
 static zend_always_inline zend_ast *zend_ast_create_binary_op(uint32_t opcode, zend_ast *op0, zend_ast *op1) {
 	return zend_ast_create_ex(ZEND_AST_BINARY_OP, opcode, op0, op1);
 }
-
-zend_ast *zend_ast_create_concat_op(zend_ast *op0, zend_ast *op1);
-
 static zend_always_inline zend_ast *zend_ast_create_assign_op(uint32_t opcode, zend_ast *op0, zend_ast *op1) {
 	return zend_ast_create_ex(ZEND_AST_ASSIGN_OP, opcode, op0, op1);
 }

Deleted: trunk/MgDev/Oem/php/include/Zend/zend_atomic.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_atomic.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_atomic.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,179 +0,0 @@
-/*
-   +----------------------------------------------------------------------+
-   | This source file is subject to version 3.01 of the PHP license,      |
-   | that is bundled with this package in the file LICENSE, and is        |
-   | available through the world-wide-web at the following url:           |
-   | https://www.php.net/license/3_01.txt                                 |
-   | If you did not receive a copy of the PHP license and are unable to   |
-   | obtain it through the world-wide-web, please send a note to          |
-   | license at php.net so we can mail you a copy immediately.               |
-   +----------------------------------------------------------------------+
-   | Authors: Levi Morrison <morrison.levi at gmail.com>                     |
-   +----------------------------------------------------------------------+
- */
-
-#ifndef ZEND_ATOMIC_H
-#define ZEND_ATOMIC_H
-
-#include "zend_portability.h"
-
-#include <stdbool.h>
-
-#define ZEND_GCC_PREREQ(x, y) \
-	((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) || (__GNUC__ > (x)))
-
-/* Builtins are used to avoid library linkage */
-#if __has_feature(c_atomic)
-#define	HAVE_C11_ATOMICS 1
-#elif ZEND_GCC_PREREQ(4, 7)
-#define	HAVE_GNUC_ATOMICS 1
-#elif defined(__GNUC__)
-#define	HAVE_SYNC_ATOMICS 1
-#elif !defined(ZEND_WIN32)
-#define HAVE_NO_ATOMICS 1
-#endif
-
-#undef ZEND_GCC_PREREQ
-
-/* Treat zend_atomic_* types as opaque. They have definitions only for size
- * and alignment purposes.
- */
-
-#if defined(ZEND_WIN32) || defined(HAVE_SYNC_ATOMICS)
-typedef struct zend_atomic_bool_s {
-	volatile char value;
-} zend_atomic_bool;
-#elif defined(HAVE_C11_ATOMICS)
-typedef struct zend_atomic_bool_s {
-	_Atomic(bool) value;
-} zend_atomic_bool;
-#else
-typedef struct zend_atomic_bool_s {
-	volatile bool value;
-} zend_atomic_bool;
-#endif
-
-BEGIN_EXTERN_C()
-
-#ifdef ZEND_WIN32
-
-#ifndef InterlockedExchange8
-#define InterlockedExchange8 _InterlockedExchange8
-#endif
-#ifndef InterlockedOr8
-#define InterlockedOr8 _InterlockedOr8
-#endif
-
-#define ZEND_ATOMIC_BOOL_INIT(obj, desired) ((obj)->value = (desired))
-
-static zend_always_inline bool zend_atomic_bool_exchange_ex(zend_atomic_bool *obj, bool desired) {
-	return InterlockedExchange8(&obj->value, desired);
-}
-
-/* On this platform it is non-const due to Iterlocked API*/
-static zend_always_inline bool zend_atomic_bool_load_ex(zend_atomic_bool *obj) {
-	/* Or'ing with false won't change the value. */
-	return InterlockedOr8(&obj->value, false);
-}
-
-static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) {
-	(void)InterlockedExchange8(&obj->value, desired);
-}
-
-#elif defined(HAVE_C11_ATOMICS)
-
-#define ZEND_ATOMIC_BOOL_INIT(obj, desired) __c11_atomic_init(&(obj)->value, (desired))
-
-static zend_always_inline bool zend_atomic_bool_exchange_ex(zend_atomic_bool *obj, bool desired) {
-	return __c11_atomic_exchange(&obj->value, desired, __ATOMIC_SEQ_CST);
-}
-
-static zend_always_inline bool zend_atomic_bool_load_ex(const zend_atomic_bool *obj) {
-	return __c11_atomic_load(&obj->value, __ATOMIC_SEQ_CST);
-}
-
-static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) {
-	__c11_atomic_store(&obj->value, desired, __ATOMIC_SEQ_CST);
-}
-
-#elif defined(HAVE_GNUC_ATOMICS)
-
-#define ZEND_ATOMIC_BOOL_INIT(obj, desired) ((obj)->value = (desired))
-
-static zend_always_inline bool zend_atomic_bool_exchange_ex(zend_atomic_bool *obj, bool desired) {
-	bool prev = false;
-	__atomic_exchange(&obj->value, &desired, &prev, __ATOMIC_SEQ_CST);
-	return prev;
-}
-
-static zend_always_inline bool zend_atomic_bool_load_ex(const zend_atomic_bool *obj) {
-	bool prev = false;
-	__atomic_load(&obj->value, &prev, __ATOMIC_SEQ_CST);
-	return prev;
-}
-
-static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) {
-	__atomic_store(&obj->value, &desired, __ATOMIC_SEQ_CST);
-}
-
-#elif defined(HAVE_SYNC_ATOMICS)
-
-#define ZEND_ATOMIC_BOOL_INIT(obj, desired) ((obj)->value = (desired))
-
-static zend_always_inline bool zend_atomic_bool_exchange_ex(zend_atomic_bool *obj, bool desired) {
-	bool prev = __sync_lock_test_and_set(&obj->value, desired);
-
-	/* __sync_lock_test_and_set only does an acquire barrier, so sync
-	 * immediately after.
-	 */
-	__sync_synchronize();
-	return prev;
-}
-
-static zend_always_inline bool zend_atomic_bool_load_ex(zend_atomic_bool *obj) {
-	/* Or'ing false won't change the value */
-	return __sync_fetch_and_or(&obj->value, false);
-}
-
-static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) {
-	__sync_synchronize();
-	obj->value = desired;
-	__sync_synchronize();
-}
-
-#elif defined(HAVE_NO_ATOMICS)
-
-#warning No atomics support detected. Please open an issue with platform details.
-
-#define ZEND_ATOMIC_BOOL_INIT(obj, desired) ((obj)->value = (desired))
-
-static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) {
-	obj->value = desired;
-}
-
-static zend_always_inline bool zend_atomic_bool_load_ex(const zend_atomic_bool *obj) {
-	return obj->value;
-}
-
-static zend_always_inline bool zend_atomic_bool_exchange_ex(zend_atomic_bool *obj, bool desired) {
-	bool prev = obj->value;
-	obj->value = desired;
-	return prev;
-}
-
-#endif
-
-ZEND_API void zend_atomic_bool_init(zend_atomic_bool *obj, bool desired);
-ZEND_API bool zend_atomic_bool_exchange(zend_atomic_bool *obj, bool desired);
-ZEND_API void zend_atomic_bool_store(zend_atomic_bool *obj, bool desired);
-
-#if defined(ZEND_WIN32) || defined(HAVE_SYNC_ATOMICS)
-/* On these platforms it is non-const due to underlying APIs. */
-ZEND_API bool zend_atomic_bool_load(zend_atomic_bool *obj);
-#else
-ZEND_API bool zend_atomic_bool_load(const zend_atomic_bool *obj);
-#endif
-
-END_EXTERN_C()
-
-#endif

Modified: trunk/MgDev/Oem/php/include/Zend/zend_attributes.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_attributes.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_attributes.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -40,9 +40,6 @@
 BEGIN_EXTERN_C()
 
 extern ZEND_API zend_class_entry *zend_ce_attribute;
-extern ZEND_API zend_class_entry *zend_ce_allow_dynamic_properties;
-extern ZEND_API zend_class_entry *zend_ce_sensitive_parameter;
-extern ZEND_API zend_class_entry *zend_ce_sensitive_parameter_value;
 
 typedef struct {
 	zend_string *name;
@@ -77,7 +74,6 @@
 ZEND_API zend_string *zend_get_attribute_target_names(uint32_t targets);
 ZEND_API bool zend_is_attribute_repeated(HashTable *attributes, zend_attribute *attr);
 
-ZEND_API zend_internal_attribute *zend_mark_internal_attribute(zend_class_entry *ce);
 ZEND_API zend_internal_attribute *zend_internal_attribute_register(zend_class_entry *ce, uint32_t flags);
 ZEND_API zend_internal_attribute *zend_internal_attribute_get(zend_string *lcname);
 

Modified: trunk/MgDev/Oem/php/include/Zend/zend_attributes_arginfo.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_attributes_arginfo.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_attributes_arginfo.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: afb6a3f1d14099066d028b1579fff074359da293 */
+ * Stub hash: 3fd949e1b9f49666bed3081ed1e8e711acd9f49c */
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Attribute___construct, 0, 0, 0)
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "Attribute::TARGET_ALL")
@@ -8,28 +8,9 @@
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ReturnTypeWillChange___construct, 0, 0, 0)
 ZEND_END_ARG_INFO()
 
-#define arginfo_class_AllowDynamicProperties___construct arginfo_class_ReturnTypeWillChange___construct
 
-#define arginfo_class_SensitiveParameter___construct arginfo_class_ReturnTypeWillChange___construct
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SensitiveParameterValue___construct, 0, 0, 1)
-	ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_SensitiveParameterValue_getValue, 0, 0, IS_MIXED, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_SensitiveParameterValue___debugInfo, 0, 0, IS_ARRAY, 0)
-ZEND_END_ARG_INFO()
-
-
 ZEND_METHOD(Attribute, __construct);
 ZEND_METHOD(ReturnTypeWillChange, __construct);
-ZEND_METHOD(AllowDynamicProperties, __construct);
-ZEND_METHOD(SensitiveParameter, __construct);
-ZEND_METHOD(SensitiveParameterValue, __construct);
-ZEND_METHOD(SensitiveParameterValue, getValue);
-ZEND_METHOD(SensitiveParameterValue, __debugInfo);
 
 
 static const zend_function_entry class_Attribute_methods[] = {
@@ -43,26 +24,6 @@
 	ZEND_FE_END
 };
 
-
-static const zend_function_entry class_AllowDynamicProperties_methods[] = {
-	ZEND_ME(AllowDynamicProperties, __construct, arginfo_class_AllowDynamicProperties___construct, ZEND_ACC_PUBLIC)
-	ZEND_FE_END
-};
-
-
-static const zend_function_entry class_SensitiveParameter_methods[] = {
-	ZEND_ME(SensitiveParameter, __construct, arginfo_class_SensitiveParameter___construct, ZEND_ACC_PUBLIC)
-	ZEND_FE_END
-};
-
-
-static const zend_function_entry class_SensitiveParameterValue_methods[] = {
-	ZEND_ME(SensitiveParameterValue, __construct, arginfo_class_SensitiveParameterValue___construct, ZEND_ACC_PUBLIC)
-	ZEND_ME(SensitiveParameterValue, getValue, arginfo_class_SensitiveParameterValue_getValue, ZEND_ACC_PUBLIC)
-	ZEND_ME(SensitiveParameterValue, __debugInfo, arginfo_class_SensitiveParameterValue___debugInfo, ZEND_ACC_PUBLIC)
-	ZEND_FE_END
-};
-
 static zend_class_entry *register_class_Attribute(void)
 {
 	zend_class_entry ce, *class_entry;
@@ -71,54 +32,6 @@
 	class_entry = zend_register_internal_class_ex(&ce, NULL);
 	class_entry->ce_flags |= ZEND_ACC_FINAL;
 
-	zval const_TARGET_CLASS_value;
-	ZVAL_LONG(&const_TARGET_CLASS_value, ZEND_ATTRIBUTE_TARGET_CLASS);
-	zend_string *const_TARGET_CLASS_name = zend_string_init_interned("TARGET_CLASS", sizeof("TARGET_CLASS") - 1, 1);
-	zend_declare_class_constant_ex(class_entry, const_TARGET_CLASS_name, &const_TARGET_CLASS_value, ZEND_ACC_PUBLIC, NULL);
-	zend_string_release(const_TARGET_CLASS_name);
-
-	zval const_TARGET_FUNCTION_value;
-	ZVAL_LONG(&const_TARGET_FUNCTION_value, ZEND_ATTRIBUTE_TARGET_FUNCTION);
-	zend_string *const_TARGET_FUNCTION_name = zend_string_init_interned("TARGET_FUNCTION", sizeof("TARGET_FUNCTION") - 1, 1);
-	zend_declare_class_constant_ex(class_entry, const_TARGET_FUNCTION_name, &const_TARGET_FUNCTION_value, ZEND_ACC_PUBLIC, NULL);
-	zend_string_release(const_TARGET_FUNCTION_name);
-
-	zval const_TARGET_METHOD_value;
-	ZVAL_LONG(&const_TARGET_METHOD_value, ZEND_ATTRIBUTE_TARGET_METHOD);
-	zend_string *const_TARGET_METHOD_name = zend_string_init_interned("TARGET_METHOD", sizeof("TARGET_METHOD") - 1, 1);
-	zend_declare_class_constant_ex(class_entry, const_TARGET_METHOD_name, &const_TARGET_METHOD_value, ZEND_ACC_PUBLIC, NULL);
-	zend_string_release(const_TARGET_METHOD_name);
-
-	zval const_TARGET_PROPERTY_value;
-	ZVAL_LONG(&const_TARGET_PROPERTY_value, ZEND_ATTRIBUTE_TARGET_PROPERTY);
-	zend_string *const_TARGET_PROPERTY_name = zend_string_init_interned("TARGET_PROPERTY", sizeof("TARGET_PROPERTY") - 1, 1);
-	zend_declare_class_constant_ex(class_entry, const_TARGET_PROPERTY_name, &const_TARGET_PROPERTY_value, ZEND_ACC_PUBLIC, NULL);
-	zend_string_release(const_TARGET_PROPERTY_name);
-
-	zval const_TARGET_CLASS_CONSTANT_value;
-	ZVAL_LONG(&const_TARGET_CLASS_CONSTANT_value, ZEND_ATTRIBUTE_TARGET_CLASS_CONST);
-	zend_string *const_TARGET_CLASS_CONSTANT_name = zend_string_init_interned("TARGET_CLASS_CONSTANT", sizeof("TARGET_CLASS_CONSTANT") - 1, 1);
-	zend_declare_class_constant_ex(class_entry, const_TARGET_CLASS_CONSTANT_name, &const_TARGET_CLASS_CONSTANT_value, ZEND_ACC_PUBLIC, NULL);
-	zend_string_release(const_TARGET_CLASS_CONSTANT_name);
-
-	zval const_TARGET_PARAMETER_value;
-	ZVAL_LONG(&const_TARGET_PARAMETER_value, ZEND_ATTRIBUTE_TARGET_PARAMETER);
-	zend_string *const_TARGET_PARAMETER_name = zend_string_init_interned("TARGET_PARAMETER", sizeof("TARGET_PARAMETER") - 1, 1);
-	zend_declare_class_constant_ex(class_entry, const_TARGET_PARAMETER_name, &const_TARGET_PARAMETER_value, ZEND_ACC_PUBLIC, NULL);
-	zend_string_release(const_TARGET_PARAMETER_name);
-
-	zval const_TARGET_ALL_value;
-	ZVAL_LONG(&const_TARGET_ALL_value, ZEND_ATTRIBUTE_TARGET_ALL);
-	zend_string *const_TARGET_ALL_name = zend_string_init_interned("TARGET_ALL", sizeof("TARGET_ALL") - 1, 1);
-	zend_declare_class_constant_ex(class_entry, const_TARGET_ALL_name, &const_TARGET_ALL_value, ZEND_ACC_PUBLIC, NULL);
-	zend_string_release(const_TARGET_ALL_name);
-
-	zval const_IS_REPEATABLE_value;
-	ZVAL_LONG(&const_IS_REPEATABLE_value, ZEND_ATTRIBUTE_IS_REPEATABLE);
-	zend_string *const_IS_REPEATABLE_name = zend_string_init_interned("IS_REPEATABLE", sizeof("IS_REPEATABLE") - 1, 1);
-	zend_declare_class_constant_ex(class_entry, const_IS_REPEATABLE_name, &const_IS_REPEATABLE_value, ZEND_ACC_PUBLIC, NULL);
-	zend_string_release(const_IS_REPEATABLE_name);
-
 	zval property_flags_default_value;
 	ZVAL_UNDEF(&property_flags_default_value);
 	zend_string *property_flags_name = zend_string_init("flags", sizeof("flags") - 1, 1);
@@ -125,13 +38,6 @@
 	zend_declare_typed_property(class_entry, property_flags_name, &property_flags_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
 	zend_string_release(property_flags_name);
 
-	zend_string *attribute_name_Attribute_class_Attribute = zend_string_init_interned("Attribute", sizeof("Attribute") - 1, 1);
-	zend_attribute *attribute_Attribute_class_Attribute = zend_add_class_attribute(class_entry, attribute_name_Attribute_class_Attribute, 1);
-	zend_string_release(attribute_name_Attribute_class_Attribute);
-	zval attribute_Attribute_class_Attribute_arg0;
-	ZVAL_LONG(&attribute_Attribute_class_Attribute_arg0, ZEND_ATTRIBUTE_TARGET_CLASS);
-	ZVAL_COPY_VALUE(&attribute_Attribute_class_Attribute->args[0].value, &attribute_Attribute_class_Attribute_arg0);
-
 	return class_entry;
 }
 
@@ -143,65 +49,5 @@
 	class_entry = zend_register_internal_class_ex(&ce, NULL);
 	class_entry->ce_flags |= ZEND_ACC_FINAL;
 
-	zend_string *attribute_name_Attribute_class_ReturnTypeWillChange = zend_string_init_interned("Attribute", sizeof("Attribute") - 1, 1);
-	zend_attribute *attribute_Attribute_class_ReturnTypeWillChange = zend_add_class_attribute(class_entry, attribute_name_Attribute_class_ReturnTypeWillChange, 1);
-	zend_string_release(attribute_name_Attribute_class_ReturnTypeWillChange);
-	zval attribute_Attribute_class_ReturnTypeWillChange_arg0;
-	ZVAL_LONG(&attribute_Attribute_class_ReturnTypeWillChange_arg0, ZEND_ATTRIBUTE_TARGET_METHOD);
-	ZVAL_COPY_VALUE(&attribute_Attribute_class_ReturnTypeWillChange->args[0].value, &attribute_Attribute_class_ReturnTypeWillChange_arg0);
-
 	return class_entry;
 }
-
-static zend_class_entry *register_class_AllowDynamicProperties(void)
-{
-	zend_class_entry ce, *class_entry;
-
-	INIT_CLASS_ENTRY(ce, "AllowDynamicProperties", class_AllowDynamicProperties_methods);
-	class_entry = zend_register_internal_class_ex(&ce, NULL);
-	class_entry->ce_flags |= ZEND_ACC_FINAL;
-
-	zend_string *attribute_name_Attribute_class_AllowDynamicProperties = zend_string_init_interned("Attribute", sizeof("Attribute") - 1, 1);
-	zend_attribute *attribute_Attribute_class_AllowDynamicProperties = zend_add_class_attribute(class_entry, attribute_name_Attribute_class_AllowDynamicProperties, 1);
-	zend_string_release(attribute_name_Attribute_class_AllowDynamicProperties);
-	zval attribute_Attribute_class_AllowDynamicProperties_arg0;
-	ZVAL_LONG(&attribute_Attribute_class_AllowDynamicProperties_arg0, ZEND_ATTRIBUTE_TARGET_CLASS);
-	ZVAL_COPY_VALUE(&attribute_Attribute_class_AllowDynamicProperties->args[0].value, &attribute_Attribute_class_AllowDynamicProperties_arg0);
-
-	return class_entry;
-}
-
-static zend_class_entry *register_class_SensitiveParameter(void)
-{
-	zend_class_entry ce, *class_entry;
-
-	INIT_CLASS_ENTRY(ce, "SensitiveParameter", class_SensitiveParameter_methods);
-	class_entry = zend_register_internal_class_ex(&ce, NULL);
-	class_entry->ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES;
-
-	zend_string *attribute_name_Attribute_class_SensitiveParameter = zend_string_init_interned("Attribute", sizeof("Attribute") - 1, 1);
-	zend_attribute *attribute_Attribute_class_SensitiveParameter = zend_add_class_attribute(class_entry, attribute_name_Attribute_class_SensitiveParameter, 1);
-	zend_string_release(attribute_name_Attribute_class_SensitiveParameter);
-	zval attribute_Attribute_class_SensitiveParameter_arg0;
-	ZVAL_LONG(&attribute_Attribute_class_SensitiveParameter_arg0, ZEND_ATTRIBUTE_TARGET_PARAMETER);
-	ZVAL_COPY_VALUE(&attribute_Attribute_class_SensitiveParameter->args[0].value, &attribute_Attribute_class_SensitiveParameter_arg0);
-
-	return class_entry;
-}
-
-static zend_class_entry *register_class_SensitiveParameterValue(void)
-{
-	zend_class_entry ce, *class_entry;
-
-	INIT_CLASS_ENTRY(ce, "SensitiveParameterValue", class_SensitiveParameterValue_methods);
-	class_entry = zend_register_internal_class_ex(&ce, NULL);
-	class_entry->ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE;
-
-	zval property_value_default_value;
-	ZVAL_UNDEF(&property_value_default_value);
-	zend_string *property_value_name = zend_string_init("value", sizeof("value") - 1, 1);
-	zend_declare_typed_property(class_entry, property_value_name, &property_value_default_value, ZEND_ACC_PRIVATE|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY));
-	zend_string_release(property_value_name);
-
-	return class_entry;
-}

Modified: trunk/MgDev/Oem/php/include/Zend/zend_builtin_functions_arginfo.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_builtin_functions_arginfo.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_builtin_functions_arginfo.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 80355bb52d643177e3a661a515d9ea915bd1e2fc */
+ * Stub hash: f87d92c002674c431827895a8d8b3a5da3b95482 */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_version, 0, 0, IS_STRING, 0)
 ZEND_END_ARG_INFO()
@@ -139,7 +139,7 @@
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, error_levels, IS_LONG, 0, "E_ALL")
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_restore_error_handler, 0, 0, IS_TRUE, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_restore_error_handler, 0, 0, _IS_BOOL, 0)
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_set_exception_handler, 0, 0, 1)
@@ -207,8 +207,7 @@
 
 #define arginfo_gc_collect_cycles arginfo_func_num_args
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_gc_enabled, 0, 0, _IS_BOOL, 0)
-ZEND_END_ARG_INFO()
+#define arginfo_gc_enabled arginfo_restore_error_handler
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_gc_enable, 0, 0, IS_VOID, 0)
 ZEND_END_ARG_INFO()
@@ -284,10 +283,10 @@
 	ZEND_FE(func_get_arg, arginfo_func_get_arg)
 	ZEND_FE(func_get_args, arginfo_func_get_args)
 	ZEND_FE(strlen, arginfo_strlen)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(strcmp, arginfo_strcmp)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(strncmp, arginfo_strncmp)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(strcasecmp, arginfo_strcasecmp)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(strncasecmp, arginfo_strncasecmp)
+	ZEND_FE(strcmp, arginfo_strcmp)
+	ZEND_FE(strncmp, arginfo_strncmp)
+	ZEND_FE(strcasecmp, arginfo_strcasecmp)
+	ZEND_FE(strncasecmp, arginfo_strncasecmp)
 	ZEND_FE(error_reporting, arginfo_error_reporting)
 	ZEND_FE(define, arginfo_define)
 	ZEND_FE(defined, arginfo_defined)
@@ -353,11 +352,6 @@
 
 	INIT_CLASS_ENTRY(ce, "stdClass", class_stdClass_methods);
 	class_entry = zend_register_internal_class_ex(&ce, NULL);
-	class_entry->ce_flags |= ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES;
 
-	zend_string *attribute_name_AllowDynamicProperties_class_stdClass = zend_string_init_interned("AllowDynamicProperties", sizeof("AllowDynamicProperties") - 1, 1);
-	zend_add_class_attribute(class_entry, attribute_name_AllowDynamicProperties_class_stdClass, 0);
-	zend_string_release(attribute_name_AllowDynamicProperties_class_stdClass);
-
 	return class_entry;
 }

Modified: trunk/MgDev/Oem/php/include/Zend/zend_compile.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_compile.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_compile.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -27,10 +27,7 @@
 
 #include "zend_llist.h"
 
-#define SET_UNUSED(op) do { \
-	op ## _type = IS_UNUSED; \
-	op.num = (uint32_t) -1; \
-} while (0)
+#define SET_UNUSED(op)  op ## _type = IS_UNUSED
 
 #define MAKE_NOP(opline) do { \
 	(opline)->op1.num = 0; \
@@ -37,9 +34,9 @@
 	(opline)->op2.num = 0; \
 	(opline)->result.num = 0; \
 	(opline)->opcode = ZEND_NOP; \
-	SET_UNUSED((opline)->op1); \
-	SET_UNUSED((opline)->op2); \
-	SET_UNUSED((opline)->result); \
+	(opline)->op1_type =  IS_UNUSED; \
+	(opline)->op2_type = IS_UNUSED; \
+	(opline)->result_type = IS_UNUSED; \
 } while (0)
 
 #define RESET_DOC_COMMENT() do { \
@@ -240,7 +237,7 @@
 /* or IS_CONSTANT_VISITED_MARK                            |     |     |     */
 #define ZEND_CLASS_CONST_IS_CASE         (1 << 6)  /*     |     |     |  X  */
 /*                                                        |     |     |     */
-/* Class Flags (unused: 21,30,31)                         |     |     |     */
+/* Class Flags (unused: 15,21,30,31)                      |     |     |     */
 /* ===========                                            |     |     |     */
 /*                                                        |     |     |     */
 /* Special class types                                    |     |     |     */
@@ -269,13 +266,9 @@
 /* User class has methods with static variables           |     |     |     */
 #define ZEND_HAS_STATIC_IN_METHODS       (1 << 14) /*  X  |     |     |     */
 /*                                                        |     |     |     */
-/* Objects of this class may have dynamic properties      |     |     |     */
-/* without triggering a deprecation warning               |     |     |     */
-#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
+/* Children must reuse parent get_iterator()              |     |     |     */
+#define ZEND_ACC_REUSE_GET_ITERATOR      (1 << 16) /*  X  |     |     |     */
 /*                                                        |     |     |     */
-/* Readonly class                                         |     |     |     */
-#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
-/*                                                        |     |     |     */
 /* Parent class is resolved (CE).                         |     |     |     */
 #define ZEND_ACC_RESOLVED_PARENT         (1 << 17) /*  X  |     |     |     */
 /*                                                        |     |     |     */
@@ -304,7 +297,7 @@
 /* Class cannot be serialized or unserialized             |     |     |     */
 #define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
 /*                                                        |     |     |     */
-/* Function Flags (unused: 28-30)                         |     |     |     */
+/* Function Flags (unused: 27-30)                         |     |     |     */
 /* ==============                                         |     |     |     */
 /*                                                        |     |     |     */
 /* deprecation flag                                       |     |     |     */
@@ -360,9 +353,6 @@
 /* method flag used by Closure::__invoke() (int only)     |     |     |     */
 #define ZEND_ACC_USER_ARG_INFO           (1 << 26) /*     |  X  |     |     */
 /*                                                        |     |     |     */
-/* supports opcache compile-time evaluation (funcs)       |     |     |     */
-#define ZEND_ACC_COMPILE_TIME_EVAL       (1 << 27) /*     |  X  |     |     */
-/*                                                        |     |     |     */
 /* op_array uses strict mode types                        |     |     |     */
 #define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
 
@@ -372,14 +362,10 @@
 /* call through internal function handler. e.g. Closure::invoke() */
 #define ZEND_ACC_CALL_VIA_HANDLER     ZEND_ACC_CALL_VIA_TRAMPOLINE
 
-#define ZEND_SHORT_CIRCUITING_CHAIN_MASK 0x3
 #define ZEND_SHORT_CIRCUITING_CHAIN_EXPR 0
 #define ZEND_SHORT_CIRCUITING_CHAIN_ISSET 1
 #define ZEND_SHORT_CIRCUITING_CHAIN_EMPTY 2
 
-// Must not clash with ZEND_SHORT_CIRCUITING_CHAIN_MASK
-#define ZEND_JMP_NULL_BP_VAR_IS 4
-
 char *zend_visibility_string(uint32_t fn_flags);
 
 typedef struct _zend_property_info {
@@ -448,15 +434,15 @@
 	uint32_t required_num_args;
 	zend_arg_info *arg_info;
 	HashTable *attributes;
-	uint32_t T;         /* number of temporary variables */
-	ZEND_MAP_PTR_DEF(void **, run_time_cache);
 	/* END of common elements */
 
 	int cache_size;     /* number of run_time_cache_slots * sizeof(void*) */
 	int last_var;       /* number of CV variables */
+	uint32_t T;         /* number of temporary variables */
 	uint32_t last;      /* number of opcodes */
 
 	zend_op *opcodes;
+	ZEND_MAP_PTR_DEF(void **, run_time_cache);
 	ZEND_MAP_PTR_DEF(HashTable *, static_variables_ptr);
 	HashTable *static_variables;
 	zend_string **vars; /* names of CV variables */
@@ -503,8 +489,6 @@
 	uint32_t required_num_args;
 	zend_internal_arg_info *arg_info;
 	HashTable *attributes;
-	uint32_t T;         /* number of temporary variables */
-	ZEND_MAP_PTR_DEF(void **, run_time_cache);
 	/* END of common elements */
 
 	zif_handler handler;
@@ -529,8 +513,6 @@
 		uint32_t required_num_args;
 		zend_arg_info *arg_info;  /* index -1 represents the return value info, if any */
 		HashTable   *attributes;
-		uint32_t T;         /* number of temporary variables */
-		ZEND_MAP_PTR_DEF(void **, run_time_cache);
 	} common;
 
 	zend_op_array op_array;
@@ -570,7 +552,6 @@
                                                /* to prevent optimization in RETURN handler and    */
                                                /* keep all local variables for "fcall_end" handler */
 #define ZEND_CALL_JIT_RESERVED       (1 << 29) /* reserved for tracing JIT */
-#define ZEND_CALL_NEEDS_REATTACH     (1 << 30)
 #define ZEND_CALL_SEND_ARG_BY_REF    (1u << 31)
 
 #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
@@ -760,12 +741,6 @@
 
 #include "zend_globals.h"
 
-typedef enum _zend_compile_position {
-	ZEND_COMPILE_POSITION_AT_SHEBANG = 0,
-	ZEND_COMPILE_POSITION_AT_OPEN_TAG,
-	ZEND_COMPILE_POSITION_AFTER_OPEN_TAG
-} zend_compile_position;
-
 BEGIN_EXTERN_C()
 
 void init_compiler(void);
@@ -778,7 +753,7 @@
 void zend_file_context_end(zend_file_context *prev_context);
 
 extern ZEND_API zend_op_array *(*zend_compile_file)(zend_file_handle *file_handle, int type);
-extern ZEND_API zend_op_array *(*zend_compile_string)(zend_string *source_string, const char *filename, zend_compile_position position);
+extern ZEND_API zend_op_array *(*zend_compile_string)(zend_string *source_string, const char *filename);
 
 ZEND_API int ZEND_FASTCALL lex_scan(zval *zendlval, zend_parser_stack_elem *elem);
 void startup_scanner(void);
@@ -817,10 +792,13 @@
 		zval *class_table_slot, zval *lcname, zend_string *lc_parent_name);
 ZEND_API zend_result do_bind_function(zend_function *func, zval *lcname);
 ZEND_API zend_result do_bind_class(zval *lcname, zend_string *lc_parent_name);
+ZEND_API uint32_t zend_build_delayed_early_binding_list(const zend_op_array *op_array);
+ZEND_API void zend_do_delayed_early_binding(zend_op_array *op_array, uint32_t first_early_binding_opline);
 
 void zend_resolve_goto_label(zend_op_array *op_array, zend_op *opline);
 
 ZEND_API void function_add_ref(zend_function *function);
+void zend_init_static_variables_map_ptr(zend_op_array *op_array);
 zend_string *zval_make_interned_string(zval *zv);
 
 #define INITIAL_OP_ARRAY_SIZE 64
@@ -830,7 +808,7 @@
 struct _zend_arena;
 
 ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type);
-ZEND_API zend_op_array *compile_string(zend_string *source_string, const char *filename, zend_compile_position position);
+ZEND_API zend_op_array *compile_string(zend_string *source_string, const char *filename);
 ZEND_API zend_op_array *compile_filename(int type, zend_string *filename);
 ZEND_API zend_ast *zend_compile_string_to_ast(
 		zend_string *code, struct _zend_arena **ast_arena, zend_string *filename);
@@ -983,13 +961,6 @@
 #define ZEND_FETCH_DIM_WRITE	2
 #define ZEND_FETCH_OBJ_FLAGS	3
 
-/* Used to mark what kind of operation a writing FETCH_DIM is used in,
- * to produce a more precise error on incorrect string offset use. */
-#define ZEND_FETCH_DIM_REF 1
-#define ZEND_FETCH_DIM_DIM 2
-#define ZEND_FETCH_DIM_OBJ 3
-#define ZEND_FETCH_DIM_INCDEC 4
-
 #define ZEND_ISEMPTY			(1<<0)
 
 #define ZEND_LAST_CATCH			(1<<0)
@@ -1019,15 +990,9 @@
 #define ZEND_ARG_TYPE_IS_TENTATIVE(arg_info) \
 	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_TENTATIVE_BIT) != 0)
 
-#define ZEND_DIM_IS					(1 << 0) /* isset fetch needed for null coalesce. Set in zend_compile.c for ZEND_AST_DIM nested within ZEND_AST_COALESCE. */
+#define ZEND_DIM_IS					(1 << 0) /* isset fetch needed for null coalesce */
 #define ZEND_DIM_ALTERNATIVE_SYNTAX	(1 << 1) /* deprecated curly brace usage */
 
-/* Attributes for ${} encaps var in strings (ZEND_AST_DIM or ZEND_AST_VAR node) */
-/* ZEND_AST_VAR nodes can have any of the ZEND_ENCAPS_VAR_* flags */
-/* ZEND_AST_DIM flags can have ZEND_DIM_ALTERNATIVE_SYNTAX or ZEND_ENCAPS_VAR_DOLLAR_CURLY during the parse phase (ZEND_DIM_ALTERNATIVE_SYNTAX is a thrown fatal error). */
-#define ZEND_ENCAPS_VAR_DOLLAR_CURLY (1 << 0)
-#define ZEND_ENCAPS_VAR_DOLLAR_CURLY_VAR_VAR (1 << 1)
-
 /* Make sure these don't clash with ZEND_FETCH_CLASS_* flags. */
 #define IS_CONSTANT_CLASS                    0x400 /* __CLASS__ in trait */
 #define IS_CONSTANT_UNQUALIFIED_IN_NAMESPACE 0x800
@@ -1184,9 +1149,6 @@
 /* this flag is set when compiler invoked during preloading in separate process */
 #define ZEND_COMPILE_PRELOAD_IN_CHILD           (1<<17)
 
-/* ignore observer notifications, e.g. to manually notify afterwards in a post-processing step after compilation */
-#define ZEND_COMPILE_IGNORE_OBSERVER			(1<<18)
-
 /* The default value for CG(compiler_options) */
 #define ZEND_COMPILE_DEFAULT					ZEND_COMPILE_HANDLE_OP_ARRAY
 

Deleted: trunk/MgDev/Oem/php/include/Zend/zend_constants_arginfo.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_constants_arginfo.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_constants_arginfo.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,24 +0,0 @@
-/* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 50b960193f55c7b09316355a0c0ae1d572ca9694 */
-
-
-
-static void register_zend_constants_symbols(int module_number)
-{
-	REGISTER_LONG_CONSTANT("E_ERROR", E_ERROR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_WARNING", E_WARNING, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_PARSE", E_PARSE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_NOTICE", E_NOTICE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_CORE_ERROR", E_CORE_ERROR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_CORE_WARNING", E_CORE_WARNING, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_COMPILE_ERROR", E_COMPILE_ERROR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_COMPILE_WARNING", E_COMPILE_WARNING, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_USER_ERROR", E_USER_ERROR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_USER_WARNING", E_USER_WARNING, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_USER_NOTICE", E_USER_NOTICE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_STRICT", E_STRICT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_RECOVERABLE_ERROR", E_RECOVERABLE_ERROR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_DEPRECATED", E_DEPRECATED, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_USER_DEPRECATED", E_USER_DEPRECATED, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("E_ALL", E_ALL, CONST_PERSISTENT);
-}

Modified: trunk/MgDev/Oem/php/include/Zend/zend_enum.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_enum.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_enum.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -29,7 +29,6 @@
 
 void zend_register_enum_ce(void);
 void zend_enum_add_interfaces(zend_class_entry *ce);
-zend_result zend_enum_build_backed_enum_table(zend_class_entry *ce);
 zend_object *zend_enum_new(zval *result, zend_class_entry *ce, zend_string *case_name, zval *backing_value_zv);
 void zend_verify_enum(zend_class_entry *ce);
 void zend_enum_register_funcs(zend_class_entry *ce);
@@ -41,7 +40,6 @@
 ZEND_API void zend_enum_add_case_cstr(zend_class_entry *ce, const char *name, zval *value);
 ZEND_API zend_object *zend_enum_get_case(zend_class_entry *ce, zend_string *name);
 ZEND_API zend_object *zend_enum_get_case_cstr(zend_class_entry *ce, const char *name);
-ZEND_API zend_result zend_enum_get_case_by_value(zend_object **result, zend_class_entry *ce, zend_long long_key, zend_string *string_key, bool try);
 
 static zend_always_inline zval *zend_enum_fetch_case_name(zend_object *zobj)
 {

Modified: trunk/MgDev/Oem/php/include/Zend/zend_exceptions_arginfo.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_exceptions_arginfo.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_exceptions_arginfo.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 4cf2c620393f468968a219b5bd12a2b5f6b03ecc */
+ * Stub hash: 9d1c2027ebd14e621d9b5b79056ba7300a455be8 */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_Throwable_getMessage, 0, 0, IS_STRING, 0)
 ZEND_END_ARG_INFO()
@@ -259,12 +259,6 @@
 	INIT_CLASS_ENTRY(ce, "ErrorException", class_ErrorException_methods);
 	class_entry = zend_register_internal_class_ex(&ce, class_entry_Exception);
 
-	zval property_severity_default_value;
-	ZVAL_LONG(&property_severity_default_value, E_ERROR);
-	zend_string *property_severity_name = zend_string_init("severity", sizeof("severity") - 1, 1);
-	zend_declare_typed_property(class_entry, property_severity_name, &property_severity_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
-	zend_string_release(property_severity_name);
-
 	return class_entry;
 }
 

Modified: trunk/MgDev/Oem/php/include/Zend/zend_execute.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_execute.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_execute.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -245,10 +245,10 @@
 
 static zend_always_inline uint32_t zend_vm_calc_used_stack(uint32_t num_args, zend_function *func)
 {
-	uint32_t used_stack = ZEND_CALL_FRAME_SLOT + num_args + func->common.T;
+	uint32_t used_stack = ZEND_CALL_FRAME_SLOT + num_args;
 
 	if (EXPECTED(ZEND_USER_CODE(func->type))) {
-		used_stack += func->op_array.last_var - MIN(func->op_array.num_args, num_args);
+		used_stack += func->op_array.last_var + func->op_array.T - MIN(func->op_array.num_args, num_args);
 	}
 	return used_stack * sizeof(zval);
 }
@@ -349,9 +349,9 @@
 ZEND_API void zend_set_timeout(zend_long seconds, bool reset_signals);
 ZEND_API void zend_unset_timeout(void);
 ZEND_API ZEND_NORETURN void ZEND_FASTCALL zend_timeout(void);
-ZEND_API zend_class_entry *zend_fetch_class(zend_string *class_name, uint32_t fetch_type);
-ZEND_API zend_class_entry *zend_fetch_class_with_scope(zend_string *class_name, uint32_t fetch_type, zend_class_entry *scope);
-ZEND_API zend_class_entry *zend_fetch_class_by_name(zend_string *class_name, zend_string *lcname, uint32_t fetch_type);
+ZEND_API zend_class_entry *zend_fetch_class(zend_string *class_name, int fetch_type);
+ZEND_API zend_class_entry *zend_fetch_class_with_scope(zend_string *class_name, int fetch_type, zend_class_entry *scope);
+ZEND_API zend_class_entry *zend_fetch_class_by_name(zend_string *class_name, zend_string *lcname, int fetch_type);
 
 ZEND_API zend_function * ZEND_FASTCALL zend_fetch_function(zend_string *name);
 ZEND_API zend_function * ZEND_FASTCALL zend_fetch_function_str(const char *name, size_t len);
@@ -361,8 +361,6 @@
 
 ZEND_API zval* zend_get_compiled_variable_value(const zend_execute_data *execute_data_ptr, uint32_t var);
 
-ZEND_API bool zend_gcc_global_regs(void);
-
 #define ZEND_USER_OPCODE_CONTINUE   0 /* execute next opcode */
 #define ZEND_USER_OPCODE_RETURN     1 /* exit from executor (return from function) */
 #define ZEND_USER_OPCODE_DISPATCH   2 /* call original opcode handler */

Modified: trunk/MgDev/Oem/php/include/Zend/zend_extensions.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_extensions.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_extensions.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -44,7 +44,7 @@
 
 /* The first number is the engine version and the rest is the date (YYYYMMDD).
  * This way engine 2/3 API no. is always greater than engine 1 API no..  */
-#define ZEND_EXTENSION_API_NO	420220829
+#define ZEND_EXTENSION_API_NO	420210902
 
 typedef struct _zend_extension_version_info {
 	int zend_extension_api_no;
@@ -145,9 +145,6 @@
 void zend_startup_extensions(void);
 void zend_shutdown_extensions(void);
 
-ZEND_API size_t zend_internal_run_time_cache_reserved_size(void);
-ZEND_API void zend_init_internal_run_time_cache(void);
-
 BEGIN_EXTERN_C()
 ZEND_API zend_result zend_load_extension(const char *path);
 ZEND_API zend_result zend_load_extension_handle(DL_HANDLE handle, const char *path);

Modified: trunk/MgDev/Oem/php/include/Zend/zend_fibers.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_fibers.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_fibers.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -71,7 +71,6 @@
 /* Coroutine functions must populate the given transfer with a new context
  * and (optional) data before they return. */
 typedef void (*zend_fiber_coroutine)(zend_fiber_transfer *transfer);
-typedef void (*zend_fiber_clean)(zend_fiber_context *context);
 
 struct _zend_fiber_context {
 	/* Pointer to boost.context or ucontext_t data. */
@@ -83,9 +82,6 @@
 	/* Entrypoint function of the fiber. */
 	zend_fiber_coroutine function;
 
-	/* Cleanup function for fiber. */
-	zend_fiber_clean cleanup;
-
 	/* Assigned C stack. */
 	zend_fiber_stack *stack;
 
@@ -92,9 +88,6 @@
 	/* Fiber status. */
 	zend_fiber_status status;
 
-	/* Observer state */
-	zend_execute_data *top_observed_frame;
-
 	/* Reserved for extensions */
 	void *reserved[ZEND_MAX_RESERVED_RESOURCES];
 };
@@ -125,9 +118,6 @@
 	/* Frame on the bottom of the fiber vm stack. */
 	zend_execute_data *stack_bottom;
 
-	/* Active fiber vm stack. */
-	zend_vm_stack vm_stack;
-
 	/* Storage for fiber return value. */
 	zval result;
 };

Modified: trunk/MgDev/Oem/php/include/Zend/zend_globals.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_globals.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_globals.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -25,7 +25,6 @@
 
 #include "zend_globals_macros.h"
 
-#include "zend_atomic.h"
 #include "zend_stack.h"
 #include "zend_ptr_stack.h"
 #include "zend_hash.h"
@@ -190,8 +189,8 @@
 	/* for extended information support */
 	bool no_extensions;
 
-	zend_atomic_bool vm_interrupt;
-	zend_atomic_bool timed_out;
+	bool vm_interrupt;
+	bool timed_out;
 	zend_long hard_timeout;
 
 #ifdef ZEND_WIN32
@@ -267,10 +266,6 @@
 	uint32_t num_errors;
 	zend_error_info **errors;
 
-	/* Override filename or line number of thrown errors and exceptions */
-	zend_string *filename_override;
-	zend_long lineno_override;
-
 	void *reserved[ZEND_MAX_RESERVED_RESOURCES];
 };
 

Modified: trunk/MgDev/Oem/php/include/Zend/zend_hash.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_hash.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_hash.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -22,7 +22,6 @@
 #define ZEND_HASH_H
 
 #include "zend.h"
-#include "zend_sort.h"
 
 #define HASH_KEY_IS_STRING 1
 #define HASH_KEY_IS_LONG 2
@@ -171,7 +170,6 @@
 ZEND_API zend_result ZEND_FASTCALL zend_hash_str_del_ind(HashTable *ht, const char *key, size_t len);
 ZEND_API zend_result ZEND_FASTCALL zend_hash_index_del(HashTable *ht, zend_ulong h);
 ZEND_API void ZEND_FASTCALL zend_hash_del_bucket(HashTable *ht, Bucket *p);
-ZEND_API void ZEND_FASTCALL zend_hash_packed_del_val(HashTable *ht, zval *zv);
 
 /* Data retrieval */
 ZEND_API zval* ZEND_FASTCALL zend_hash_find(const HashTable *ht, zend_string *key);
@@ -180,7 +178,7 @@
 ZEND_API zval* ZEND_FASTCALL _zend_hash_index_find(const HashTable *ht, zend_ulong h);
 
 /* The same as zend_hash_find(), but hash value of the key must be already calculated. */
-ZEND_API zval* ZEND_FASTCALL zend_hash_find_known_hash(const HashTable *ht, const zend_string *key);
+ZEND_API zval* ZEND_FASTCALL zend_hash_find_known_hash(const HashTable *ht, zend_string *key);
 
 static zend_always_inline zval *zend_hash_find_ex(const HashTable *ht, zend_string *key, bool known_hash)
 {
@@ -194,7 +192,7 @@
 #define ZEND_HASH_INDEX_FIND(_ht, _h, _ret, _not_found) do { \
 		if (EXPECTED(HT_FLAGS(_ht) & HASH_FLAG_PACKED)) { \
 			if (EXPECTED((zend_ulong)(_h) < (zend_ulong)(_ht)->nNumUsed)) { \
-				_ret = &_ht->arPacked[_h]; \
+				_ret = &_ht->arData[_h].val; \
 				if (UNEXPECTED(Z_TYPE_P(_ret) == IS_UNDEF)) { \
 					goto _not_found; \
 				} \
@@ -217,7 +215,7 @@
 #define ZEND_HASH_INDEX_LOOKUP(_ht, _h, _ret) do { \
 		if (EXPECTED(HT_FLAGS(_ht) & HASH_FLAG_PACKED)) { \
 			if (EXPECTED((zend_ulong)(_h) < (zend_ulong)(_ht)->nNumUsed)) { \
-				_ret = &_ht->arPacked[_h]; \
+				_ret = &_ht->arData[_h].val; \
 				if (EXPECTED(Z_TYPE_P(_ret) != IS_UNDEF)) { \
 					break; \
 				} \
@@ -245,45 +243,35 @@
 /* traversing */
 ZEND_API HashPosition ZEND_FASTCALL zend_hash_get_current_pos(const HashTable *ht);
 
+#define zend_hash_has_more_elements_ex(ht, pos) \
+	(zend_hash_get_current_key_type_ex(ht, pos) == HASH_KEY_NON_EXISTENT ? FAILURE : SUCCESS)
 ZEND_API zend_result   ZEND_FASTCALL zend_hash_move_forward_ex(HashTable *ht, HashPosition *pos);
 ZEND_API zend_result   ZEND_FASTCALL zend_hash_move_backwards_ex(HashTable *ht, HashPosition *pos);
-ZEND_API int   ZEND_FASTCALL zend_hash_get_current_key_ex(const HashTable *ht, zend_string **str_index, zend_ulong *num_index, const HashPosition *pos);
-ZEND_API void  ZEND_FASTCALL zend_hash_get_current_key_zval_ex(const HashTable *ht, zval *key, const HashPosition *pos);
+ZEND_API int   ZEND_FASTCALL zend_hash_get_current_key_ex(const HashTable *ht, zend_string **str_index, zend_ulong *num_index, HashPosition *pos);
+ZEND_API void  ZEND_FASTCALL zend_hash_get_current_key_zval_ex(const HashTable *ht, zval *key, HashPosition *pos);
 ZEND_API int   ZEND_FASTCALL zend_hash_get_current_key_type_ex(HashTable *ht, HashPosition *pos);
 ZEND_API zval* ZEND_FASTCALL zend_hash_get_current_data_ex(HashTable *ht, HashPosition *pos);
 ZEND_API void  ZEND_FASTCALL zend_hash_internal_pointer_reset_ex(HashTable *ht, HashPosition *pos);
 ZEND_API void  ZEND_FASTCALL zend_hash_internal_pointer_end_ex(HashTable *ht, HashPosition *pos);
 
-static zend_always_inline zend_result zend_hash_has_more_elements_ex(HashTable *ht, HashPosition *pos) {
-	return (zend_hash_get_current_key_type_ex(ht, pos) == HASH_KEY_NON_EXISTENT ? FAILURE : SUCCESS);
-}
-static zend_always_inline zend_result zend_hash_has_more_elements(HashTable *ht) {
-	return zend_hash_has_more_elements_ex(ht, &ht->nInternalPointer);
-}
-static zend_always_inline zend_result zend_hash_move_forward(HashTable *ht) {
-	return zend_hash_move_forward_ex(ht, &ht->nInternalPointer);
-}
-static zend_always_inline zend_result zend_hash_move_backwards(HashTable *ht) {
-	return zend_hash_move_backwards_ex(ht, &ht->nInternalPointer);
-}
-static zend_always_inline int zend_hash_get_current_key(const HashTable *ht, zend_string **str_index, zend_ulong *num_index) {
-	return zend_hash_get_current_key_ex(ht, str_index, num_index, &ht->nInternalPointer);
-}
-static zend_always_inline void zend_hash_get_current_key_zval(const HashTable *ht, zval *key) {
-	zend_hash_get_current_key_zval_ex(ht, key, &ht->nInternalPointer);
-}
-static zend_always_inline int zend_hash_get_current_key_type(HashTable *ht) {
-	return zend_hash_get_current_key_type_ex(ht, &ht->nInternalPointer);
-}
-static zend_always_inline zval* zend_hash_get_current_data(HashTable *ht) {
-	return zend_hash_get_current_data_ex(ht, &ht->nInternalPointer);
-}
-static zend_always_inline void zend_hash_internal_pointer_reset(HashTable *ht) {
-	zend_hash_internal_pointer_reset_ex(ht, &ht->nInternalPointer);
-}
-static zend_always_inline void zend_hash_internal_pointer_end(HashTable *ht) {
-	zend_hash_internal_pointer_end_ex(ht, &ht->nInternalPointer);
-}
+#define zend_hash_has_more_elements(ht) \
+	zend_hash_has_more_elements_ex(ht, &(ht)->nInternalPointer)
+#define zend_hash_move_forward(ht) \
+	zend_hash_move_forward_ex(ht, &(ht)->nInternalPointer)
+#define zend_hash_move_backwards(ht) \
+	zend_hash_move_backwards_ex(ht, &(ht)->nInternalPointer)
+#define zend_hash_get_current_key(ht, str_index, num_index) \
+	zend_hash_get_current_key_ex(ht, str_index, num_index, &(ht)->nInternalPointer)
+#define zend_hash_get_current_key_zval(ht, key) \
+	zend_hash_get_current_key_zval_ex(ht, key, &(ht)->nInternalPointer)
+#define zend_hash_get_current_key_type(ht) \
+	zend_hash_get_current_key_type_ex(ht, &(ht)->nInternalPointer)
+#define zend_hash_get_current_data(ht) \
+	zend_hash_get_current_data_ex(ht, &(ht)->nInternalPointer)
+#define zend_hash_internal_pointer_reset(ht) \
+	zend_hash_internal_pointer_reset_ex(ht, &(ht)->nInternalPointer)
+#define zend_hash_internal_pointer_end(ht) \
+	zend_hash_internal_pointer_end_ex(ht, &(ht)->nInternalPointer)
 
 /* Copying, merging and sorting */
 ZEND_API void  ZEND_FASTCALL zend_hash_copy(HashTable *target, HashTable *source, copy_ctor_func_t pCopyConstructor);
@@ -296,19 +284,16 @@
 typedef int (*bucket_compare_func_t)(Bucket *a, Bucket *b);
 ZEND_API int   zend_hash_compare(HashTable *ht1, HashTable *ht2, compare_func_t compar, bool ordered);
 ZEND_API void  ZEND_FASTCALL zend_hash_sort_ex(HashTable *ht, sort_func_t sort_func, bucket_compare_func_t compare_func, bool renumber);
-ZEND_API zval* ZEND_FASTCALL zend_hash_minmax(const HashTable *ht, compare_func_t compar, uint32_t flag);
+ZEND_API zval* ZEND_FASTCALL zend_hash_minmax(const HashTable *ht, bucket_compare_func_t compar, uint32_t flag);
 
-static zend_always_inline void ZEND_FASTCALL zend_hash_sort(HashTable *ht, bucket_compare_func_t compare_func, zend_bool renumber) {
-	zend_hash_sort_ex(ht, zend_sort, compare_func, renumber);
-}
+#define zend_hash_sort(ht, compare_func, renumber) \
+	zend_hash_sort_ex(ht, zend_sort, compare_func, renumber)
 
-static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
-	return ht->nNumOfElements;
-}
+#define zend_hash_num_elements(ht) \
+	(ht)->nNumOfElements
 
-static zend_always_inline zend_long zend_hash_next_free_element(const HashTable *ht) {
-	return ht->nNextFreeElement;
-}
+#define zend_hash_next_free_element(ht) \
+	(ht)->nNextFreeElement
 
 ZEND_API void ZEND_FASTCALL zend_hash_rehash(HashTable *ht);
 
@@ -334,7 +319,6 @@
 ZEND_API uint32_t zend_array_count(HashTable *ht);
 ZEND_API HashTable* ZEND_FASTCALL zend_array_dup(HashTable *source);
 ZEND_API void ZEND_FASTCALL zend_array_destroy(HashTable *ht);
-ZEND_API HashTable* zend_array_to_list(HashTable *source);
 ZEND_API void ZEND_FASTCALL zend_symtable_clean(HashTable *ht);
 ZEND_API HashTable* ZEND_FASTCALL zend_symtable_to_proptable(HashTable *ht);
 ZEND_API HashTable* ZEND_FASTCALL zend_proptable_to_symtable(HashTable *ht, bool always_duplicate);
@@ -974,68 +958,15 @@
 #define zend_hash_get_current_data_ptr(ht) \
 	zend_hash_get_current_data_ptr_ex(ht, &(ht)->nInternalPointer)
 
-/* Common hash/packed array iterators */
-#if 0
-# define ZEND_HASH_ELEMENT_SIZE(__ht) \
-	(HT_IS_PACKED(__ht) ? sizeof(zval) : sizeof(Bucket))
-#else /* optimized version */
-# define ZEND_HASH_ELEMENT_SIZE(__ht) \
-	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
-#endif
-
-#define ZEND_HASH_ELEMENT_EX(__ht, _idx, _size) \
-	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
-
-#define ZEND_HASH_ELEMENT(__ht, _idx) \
-	ZEND_HASH_ELEMENT_EX(__ht, _idx, ZEND_HASH_ELEMENT_SIZE(__ht))
-
-#define ZEND_HASH_NEXT_ELEMENT(_el, _size) \
-	((zval*)(((char*)(_el)) + (_size)))
-
-#define ZEND_HASH_PREV_ELEMENT(_el, _size) \
-	((zval*)(((char*)(_el)) - (_size)))
-
-#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
-		HashTable *__ht = (_ht); \
-		uint32_t _count = __ht->nNumUsed; \
-		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
-		zval *_z = __ht->arPacked; \
-		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
-			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
-
-#define _ZEND_HASH_REVERSE_FOREACH_VAL(_ht) do { \
-		HashTable *__ht = (_ht); \
-		uint32_t _idx = __ht->nNumUsed; \
-		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
-		zval *_z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
-		for (;_idx > 0; _idx--) { \
-			_z = ZEND_HASH_PREV_ELEMENT(_z, _size); \
-			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
-
 #define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
 		HashTable *__ht = (_ht); \
-		zend_ulong __h; \
-		zend_string *__key = NULL; \
-		uint32_t _idx = (_from); \
-		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
-		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
-		uint32_t _count = __ht->nNumUsed - _idx; \
-		for (;_count > 0; _count--) { \
-			zval *_z = __z; \
-			if (HT_IS_PACKED(__ht)) { \
-				__z++; \
-				__h = _idx; \
-				_idx++; \
-			} else { \
-				Bucket *_p = (Bucket*)__z; \
-				__z = &(_p + 1)->val; \
-				__h = _p->h; \
-				__key = _p->key; \
-				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
-					_z = Z_INDIRECT_P(_z); \
-				} \
+		Bucket *_p = __ht->arData + (_from); \
+		Bucket *_end = __ht->arData + __ht->nNumUsed; \
+		for (; _p != _end; _p++) { \
+			zval *_z = &_p->val; \
+			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
+				_z = Z_INDIRECT_P(_z); \
 			} \
-			(void) __h; (void) __key; (void) _idx; \
 			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
 
 #define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
@@ -1043,28 +974,14 @@
 #define ZEND_HASH_REVERSE_FOREACH(_ht, indirect) do { \
 		HashTable *__ht = (_ht); \
 		uint32_t _idx = __ht->nNumUsed; \
+		Bucket *_p = __ht->arData + _idx; \
 		zval *_z; \
-		zend_ulong __h; \
-		zend_string *__key = NULL; \
-		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
-		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
-		for (;_idx > 0; _idx--) { \
-			if (HT_IS_PACKED(__ht)) { \
-				__z--; \
-				_z = __z; \
-				__h = _idx - 1; \
-			} else { \
-				Bucket *_p = (Bucket*)__z; \
-				_p--; \
-				__z = &_p->val; \
-				_z = __z; \
-				__h = _p->h; \
-				__key = _p->key; \
-				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
-					_z = Z_INDIRECT_P(_z); \
-				} \
+		for (_idx = __ht->nNumUsed; _idx > 0; _idx--) { \
+			_p--; \
+			_z = &_p->val; \
+			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
+				_z = Z_INDIRECT_P(_z); \
 			} \
-			(void) __h; (void) __key; (void) __z; \
 			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
 
 #define ZEND_HASH_FOREACH_END() \
@@ -1072,23 +989,44 @@
 	} while (0)
 
 #define ZEND_HASH_FOREACH_END_DEL() \
-	ZEND_HASH_MAP_FOREACH_END_DEL()
+			__ht->nNumOfElements--; \
+			do { \
+				uint32_t j = HT_IDX_TO_HASH(_idx - 1); \
+				uint32_t nIndex = _p->h | __ht->nTableMask; \
+				uint32_t i = HT_HASH(__ht, nIndex); \
+				if (UNEXPECTED(j != i)) { \
+					Bucket *prev = HT_HASH_TO_BUCKET(__ht, i); \
+					while (Z_NEXT(prev->val) != j) { \
+						i = Z_NEXT(prev->val); \
+						prev = HT_HASH_TO_BUCKET(__ht, i); \
+					} \
+					Z_NEXT(prev->val) = Z_NEXT(_p->val); \
+				} else { \
+					HT_HASH(__ht, nIndex) = Z_NEXT(_p->val); \
+				} \
+			} while (0); \
+		} \
+		__ht->nNumUsed = _idx; \
+	} while (0)
 
 #define ZEND_HASH_FOREACH_BUCKET(ht, _bucket) \
-	ZEND_HASH_MAP_FOREACH_BUCKET(ht, _bucket)
+	ZEND_HASH_FOREACH(ht, 0); \
+	_bucket = _p;
 
 #define ZEND_HASH_FOREACH_BUCKET_FROM(ht, _bucket, _from) \
-	ZEND_HASH_MAP_FOREACH_BUCKET_FROM(ht, _bucket, _from)
+	ZEND_HASH_FOREACH_FROM(ht, 0, _from); \
+	_bucket = _p;
 
 #define ZEND_HASH_REVERSE_FOREACH_BUCKET(ht, _bucket) \
-	ZEND_HASH_MAP_REVERSE_FOREACH_BUCKET(ht, _bucket)
+	ZEND_HASH_REVERSE_FOREACH(ht, 0); \
+	_bucket = _p;
 
 #define ZEND_HASH_FOREACH_VAL(ht, _val) \
-	_ZEND_HASH_FOREACH_VAL(ht); \
+	ZEND_HASH_FOREACH(ht, 0); \
 	_val = _z;
 
 #define ZEND_HASH_REVERSE_FOREACH_VAL(ht, _val) \
-	_ZEND_HASH_REVERSE_FOREACH_VAL(ht); \
+	ZEND_HASH_REVERSE_FOREACH(ht, 0); \
 	_val = _z;
 
 #define ZEND_HASH_FOREACH_VAL_IND(ht, _val) \
@@ -1100,7 +1038,7 @@
 	_val = _z;
 
 #define ZEND_HASH_FOREACH_PTR(ht, _ptr) \
-	_ZEND_HASH_FOREACH_VAL(ht); \
+	ZEND_HASH_FOREACH(ht, 0); \
 	_ptr = Z_PTR_P(_z);
 
 #define ZEND_HASH_FOREACH_PTR_FROM(ht, _ptr, _from) \
@@ -1108,402 +1046,126 @@
 	_ptr = Z_PTR_P(_z);
 
 #define ZEND_HASH_REVERSE_FOREACH_PTR(ht, _ptr) \
-	_ZEND_HASH_REVERSE_FOREACH_VAL(ht); \
+	ZEND_HASH_REVERSE_FOREACH(ht, 0); \
 	_ptr = Z_PTR_P(_z);
 
 #define ZEND_HASH_FOREACH_NUM_KEY(ht, _h) \
 	ZEND_HASH_FOREACH(ht, 0); \
-	_h = __h;
+	_h = _p->h;
 
 #define ZEND_HASH_REVERSE_FOREACH_NUM_KEY(ht, _h) \
 	ZEND_HASH_REVERSE_FOREACH(ht, 0); \
-	_h = __h;
+	_h = _p->h;
 
 #define ZEND_HASH_FOREACH_STR_KEY(ht, _key) \
 	ZEND_HASH_FOREACH(ht, 0); \
-	_key = __key;
+	_key = _p->key;
 
 #define ZEND_HASH_REVERSE_FOREACH_STR_KEY(ht, _key) \
 	ZEND_HASH_REVERSE_FOREACH(ht, 0); \
-	_key = __key;
+	_key = _p->key;
 
 #define ZEND_HASH_FOREACH_KEY(ht, _h, _key) \
 	ZEND_HASH_FOREACH(ht, 0); \
-	_h = __h; \
-	_key = __key;
+	_h = _p->h; \
+	_key = _p->key;
 
 #define ZEND_HASH_REVERSE_FOREACH_KEY(ht, _h, _key) \
 	ZEND_HASH_REVERSE_FOREACH(ht, 0); \
-	_h = __h; \
-	_key = __key;
+	_h = _p->h; \
+	_key = _p->key;
 
 #define ZEND_HASH_FOREACH_NUM_KEY_VAL(ht, _h, _val) \
 	ZEND_HASH_FOREACH(ht, 0); \
-	_h = __h; \
+	_h = _p->h; \
 	_val = _z;
 
 #define ZEND_HASH_REVERSE_FOREACH_NUM_KEY_VAL(ht, _h, _val) \
 	ZEND_HASH_REVERSE_FOREACH(ht, 0); \
-	_h = __h; \
+	_h = _p->h; \
 	_val = _z;
 
 #define ZEND_HASH_FOREACH_STR_KEY_VAL(ht, _key, _val) \
 	ZEND_HASH_FOREACH(ht, 0); \
-	_key = __key; \
+	_key = _p->key; \
 	_val = _z;
 
 #define ZEND_HASH_FOREACH_STR_KEY_VAL_FROM(ht, _key, _val, _from) \
 	ZEND_HASH_FOREACH_FROM(ht, 0, _from); \
-	_key = __key; \
+	_key = _p->key; \
 	_val = _z;
 
 #define ZEND_HASH_REVERSE_FOREACH_STR_KEY_VAL(ht, _key, _val) \
 	ZEND_HASH_REVERSE_FOREACH(ht, 0); \
-	_key = __key; \
+	_key = _p->key; \
 	_val = _z;
 
 #define ZEND_HASH_FOREACH_KEY_VAL(ht, _h, _key, _val) \
 	ZEND_HASH_FOREACH(ht, 0); \
-	_h = __h; \
-	_key = __key; \
+	_h = _p->h; \
+	_key = _p->key; \
 	_val = _z;
 
 #define ZEND_HASH_REVERSE_FOREACH_KEY_VAL(ht, _h, _key, _val) \
 	ZEND_HASH_REVERSE_FOREACH(ht, 0); \
-	_h = __h; \
-	_key = __key; \
+	_h = _p->h; \
+	_key = _p->key; \
 	_val = _z;
 
 #define ZEND_HASH_FOREACH_STR_KEY_VAL_IND(ht, _key, _val) \
 	ZEND_HASH_FOREACH(ht, 1); \
-	_key = __key; \
+	_key = _p->key; \
 	_val = _z;
 
 #define ZEND_HASH_REVERSE_FOREACH_STR_KEY_VAL_IND(ht, _key, _val) \
 	ZEND_HASH_REVERSE_FOREACH(ht, 1); \
-	_key = __key; \
+	_key = _p->key; \
 	_val = _z;
 
 #define ZEND_HASH_FOREACH_KEY_VAL_IND(ht, _h, _key, _val) \
 	ZEND_HASH_FOREACH(ht, 1); \
-	_h = __h; \
-	_key = __key; \
+	_h = _p->h; \
+	_key = _p->key; \
 	_val = _z;
 
 #define ZEND_HASH_REVERSE_FOREACH_KEY_VAL_IND(ht, _h, _key, _val) \
 	ZEND_HASH_REVERSE_FOREACH(ht, 1); \
-	_h = __h; \
-	_key = __key; \
+	_h = _p->h; \
+	_key = _p->key; \
 	_val = _z;
 
 #define ZEND_HASH_FOREACH_NUM_KEY_PTR(ht, _h, _ptr) \
 	ZEND_HASH_FOREACH(ht, 0); \
-	_h = __h; \
+	_h = _p->h; \
 	_ptr = Z_PTR_P(_z);
 
 #define ZEND_HASH_REVERSE_FOREACH_NUM_KEY_PTR(ht, _h, _ptr) \
 	ZEND_HASH_REVERSE_FOREACH(ht, 0); \
-	_h = __h; \
+	_h = _p->h; \
 	_ptr = Z_PTR_P(_z);
 
 #define ZEND_HASH_FOREACH_STR_KEY_PTR(ht, _key, _ptr) \
 	ZEND_HASH_FOREACH(ht, 0); \
-	_key = __key; \
+	_key = _p->key; \
 	_ptr = Z_PTR_P(_z);
 
 #define ZEND_HASH_REVERSE_FOREACH_STR_KEY_PTR(ht, _key, _ptr) \
 	ZEND_HASH_REVERSE_FOREACH(ht, 0); \
-	_key = __key; \
+	_key = _p->key; \
 	_ptr = Z_PTR_P(_z);
 
 #define ZEND_HASH_FOREACH_KEY_PTR(ht, _h, _key, _ptr) \
 	ZEND_HASH_FOREACH(ht, 0); \
-	_h = __h; \
-	_key = __key; \
+	_h = _p->h; \
+	_key = _p->key; \
 	_ptr = Z_PTR_P(_z);
 
 #define ZEND_HASH_REVERSE_FOREACH_KEY_PTR(ht, _h, _key, _ptr) \
 	ZEND_HASH_REVERSE_FOREACH(ht, 0); \
-	_h = __h; \
-	_key = __key; \
-	_ptr = Z_PTR_P(_z);
-
-/* Hash array iterators */
-#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
-		HashTable *__ht = (_ht); \
-		Bucket *_p = __ht->arData + (_from); \
-		Bucket *_end = __ht->arData + __ht->nNumUsed; \
-		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
-		for (; _p != _end; _p++) { \
-			zval *_z = &_p->val; \
-			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
-				_z = Z_INDIRECT_P(_z); \
-			} \
-			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
-
-#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH(_ht, indirect) do { \
-		HashTable *__ht = (_ht); \
-		uint32_t _idx = __ht->nNumUsed; \
-		Bucket *_p = __ht->arData + _idx; \
-		zval *_z; \
-		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
-		for (_idx = __ht->nNumUsed; _idx > 0; _idx--) { \
-			_p--; \
-			_z = &_p->val; \
-			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
-				_z = Z_INDIRECT_P(_z); \
-			} \
-			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
-
-#define ZEND_HASH_MAP_FOREACH_END_DEL() \
-			ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
-			__ht->nNumOfElements--; \
-			do { \
-				uint32_t j = HT_IDX_TO_HASH(_idx - 1); \
-				uint32_t nIndex = _p->h | __ht->nTableMask; \
-				uint32_t i = HT_HASH(__ht, nIndex); \
-				if (UNEXPECTED(j != i)) { \
-					Bucket *prev = HT_HASH_TO_BUCKET(__ht, i); \
-					while (Z_NEXT(prev->val) != j) { \
-						i = Z_NEXT(prev->val); \
-						prev = HT_HASH_TO_BUCKET(__ht, i); \
-					} \
-					Z_NEXT(prev->val) = Z_NEXT(_p->val); \
-				} else { \
-					HT_HASH(__ht, nIndex) = Z_NEXT(_p->val); \
-				} \
-			} while (0); \
-		} \
-		__ht->nNumUsed = _idx; \
-	} while (0)
-
-#define ZEND_HASH_MAP_FOREACH_BUCKET(ht, _bucket) \
-	ZEND_HASH_MAP_FOREACH(ht, 0); \
-	_bucket = _p;
-
-#define ZEND_HASH_MAP_FOREACH_BUCKET_FROM(ht, _bucket, _from) \
-	ZEND_HASH_MAP_FOREACH_FROM(ht, 0, _from); \
-	_bucket = _p;
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH_BUCKET(ht, _bucket) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
-	_bucket = _p;
-
-#define ZEND_HASH_MAP_FOREACH_VAL(ht, _val) \
-	ZEND_HASH_MAP_FOREACH(ht, 0); \
-	_val = _z;
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH_VAL(ht, _val) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
-	_val = _z;
-
-#define ZEND_HASH_MAP_FOREACH_VAL_IND(ht, _val) \
-	ZEND_HASH_MAP_FOREACH(ht, 1); \
-	_val = _z;
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH_VAL_IND(ht, _val) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 1); \
-	_val = _z;
-
-#define ZEND_HASH_MAP_FOREACH_PTR(ht, _ptr) \
-	ZEND_HASH_MAP_FOREACH(ht, 0); \
-	_ptr = Z_PTR_P(_z);
-
-#define ZEND_HASH_MAP_FOREACH_PTR_FROM(ht, _ptr, _from) \
-	ZEND_HASH_MAP_FOREACH_FROM(ht, 0, _from); \
-	_ptr = Z_PTR_P(_z);
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH_PTR(ht, _ptr) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
-	_ptr = Z_PTR_P(_z);
-
-#define ZEND_HASH_MAP_FOREACH_NUM_KEY(ht, _h) \
-	ZEND_HASH_MAP_FOREACH(ht, 0); \
-	_h = _p->h;
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH_NUM_KEY(ht, _h) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
-	_h = _p->h;
-
-#define ZEND_HASH_MAP_FOREACH_STR_KEY(ht, _key) \
-	ZEND_HASH_MAP_FOREACH(ht, 0); \
-	_key = _p->key;
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH_STR_KEY(ht, _key) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
-	_key = _p->key;
-
-#define ZEND_HASH_MAP_FOREACH_KEY(ht, _h, _key) \
-	ZEND_HASH_MAP_FOREACH(ht, 0); \
 	_h = _p->h; \
-	_key = _p->key;
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH_KEY(ht, _h, _key) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
-	_h = _p->h; \
-	_key = _p->key;
-
-#define ZEND_HASH_MAP_FOREACH_NUM_KEY_VAL(ht, _h, _val) \
-	ZEND_HASH_MAP_FOREACH(ht, 0); \
-	_h = _p->h; \
-	_val = _z;
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH_NUM_KEY_VAL(ht, _h, _val) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
-	_h = _p->h; \
-	_val = _z;
-
-#define ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(ht, _key, _val) \
-	ZEND_HASH_MAP_FOREACH(ht, 0); \
 	_key = _p->key; \
-	_val = _z;
-
-#define ZEND_HASH_MAP_FOREACH_STR_KEY_VAL_FROM(ht, _key, _val, _from) \
-	ZEND_HASH_MAP_FOREACH_FROM(ht, 0, _from); \
-	_key = _p->key; \
-	_val = _z;
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH_STR_KEY_VAL(ht, _key, _val) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
-	_key = _p->key; \
-	_val = _z;
-
-#define ZEND_HASH_MAP_FOREACH_KEY_VAL(ht, _h, _key, _val) \
-	ZEND_HASH_MAP_FOREACH(ht, 0); \
-	_h = _p->h; \
-	_key = _p->key; \
-	_val = _z;
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH_KEY_VAL(ht, _h, _key, _val) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
-	_h = _p->h; \
-	_key = _p->key; \
-	_val = _z;
-
-#define ZEND_HASH_MAP_FOREACH_STR_KEY_VAL_IND(ht, _key, _val) \
-	ZEND_HASH_MAP_FOREACH(ht, 1); \
-	_key = _p->key; \
-	_val = _z;
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH_STR_KEY_VAL_IND(ht, _key, _val) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 1); \
-	_key = _p->key; \
-	_val = _z;
-
-#define ZEND_HASH_MAP_FOREACH_KEY_VAL_IND(ht, _h, _key, _val) \
-	ZEND_HASH_MAP_FOREACH(ht, 1); \
-	_h = _p->h; \
-	_key = _p->key; \
-	_val = _z;
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH_KEY_VAL_IND(ht, _h, _key, _val) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 1); \
-	_h = _p->h; \
-	_key = _p->key; \
-	_val = _z;
-
-#define ZEND_HASH_MAP_FOREACH_NUM_KEY_PTR(ht, _h, _ptr) \
-	ZEND_HASH_MAP_FOREACH(ht, 0); \
-	_h = _p->h; \
 	_ptr = Z_PTR_P(_z);
 
-#define ZEND_HASH_MAP_REVERSE_FOREACH_NUM_KEY_PTR(ht, _h, _ptr) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
-	_h = _p->h; \
-	_ptr = Z_PTR_P(_z);
-
-#define ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(ht, _key, _ptr) \
-	ZEND_HASH_MAP_FOREACH(ht, 0); \
-	_key = _p->key; \
-	_ptr = Z_PTR_P(_z);
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH_STR_KEY_PTR(ht, _key, _ptr) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
-	_key = _p->key; \
-	_ptr = Z_PTR_P(_z);
-
-#define ZEND_HASH_MAP_FOREACH_KEY_PTR(ht, _h, _key, _ptr) \
-	ZEND_HASH_MAP_FOREACH(ht, 0); \
-	_h = _p->h; \
-	_key = _p->key; \
-	_ptr = Z_PTR_P(_z);
-
-#define ZEND_HASH_MAP_REVERSE_FOREACH_KEY_PTR(ht, _h, _key, _ptr) \
-	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
-	_h = _p->h; \
-	_key = _p->key; \
-	_ptr = Z_PTR_P(_z);
-
-/* Packed array iterators */
-#define ZEND_HASH_PACKED_FOREACH_FROM(_ht, _from) do { \
-		HashTable *__ht = (_ht); \
-		zend_ulong _idx = (_from); \
-		zval *_z = __ht->arPacked + (_from); \
-		zval *_end = __ht->arPacked + __ht->nNumUsed; \
-		ZEND_ASSERT(HT_IS_PACKED(__ht)); \
-		for (;_z != _end; _z++, _idx++) { \
-			(void) _idx; \
-			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
-
-#define ZEND_HASH_PACKED_FOREACH(_ht) ZEND_HASH_PACKED_FOREACH_FROM(_ht, 0)
-
-#define ZEND_HASH_PACKED_REVERSE_FOREACH(_ht) do { \
-		HashTable *__ht = (_ht); \
-		zend_ulong _idx = __ht->nNumUsed; \
-		zval *_z = __ht->arPacked + _idx; \
-		ZEND_ASSERT(HT_IS_PACKED(__ht)); \
-		while (_idx > 0) { \
-			_z--; \
-			_idx--; \
-			(void) _idx; \
-			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
-
-#define ZEND_HASH_PACKED_FOREACH_VAL(ht, _val) \
-	ZEND_HASH_PACKED_FOREACH(ht); \
-	_val = _z;
-
-#define ZEND_HASH_PACKED_REVERSE_FOREACH_VAL(ht, _val) \
-	ZEND_HASH_PACKED_REVERSE_FOREACH(ht); \
-	_val = _z;
-
-#define ZEND_HASH_PACKED_FOREACH_PTR(ht, _ptr) \
-	ZEND_HASH_PACKED_FOREACH(ht); \
-	_ptr = Z_PTR_P(_z);
-
-#define ZEND_HASH_PACKED_REVERSE_FOREACH_PTR(ht, _ptr) \
-	ZEND_HASH_PACKED_REVERSE_FOREACH(ht); \
-	_ptr = Z_PTR_P(_z);
-
-#define ZEND_HASH_PACKED_FOREACH_KEY(ht, _h) \
-	ZEND_HASH_PACKED_FOREACH(ht); \
-	_h = _idx;
-
-#define ZEND_HASH_PACKED_REVERSE_FOREACH_KEY(ht, _h) \
-	ZEND_HASH_PACKED_REVERSE_FOREACH(ht); \
-	_h = _idx;
-
-#define ZEND_HASH_PACKED_FOREACH_KEY_VAL(ht, _h, _val) \
-	ZEND_HASH_PACKED_FOREACH(ht); \
-	_h = _idx; \
-	_val = _z;
-
-#define ZEND_HASH_PACKED_REVERSE_FOREACH_KEY_VAL(ht, _h, _val) \
-	ZEND_HASH_PACKED_REVERSE_FOREACH(ht); \
-	_h = _idx; \
-	_val = _z;
-
-#define ZEND_HASH_PACKED_FOREACH_KEY_PTR(ht, _h, _ptr) \
-	ZEND_HASH_PACKED_FOREACH(ht); \
-	_h = _idx; \
-	_ptr = Z_PTR_P(_z);
-
-#define ZEND_HASH_PACKED_REVERSE_FOREACH_KEY_PTR(ht, _h, _ptr) \
-	ZEND_HASH_PACKED_REVERSE_FOREACH(ht); \
-	_h = _idx; \
-	_ptr = Z_PTR_P(_z);
-
 /* The following macros are useful to insert a sequence of new elements
  * of packed array. They may be used instead of series of
  * zend_hash_next_index_insert_new()
@@ -1511,7 +1173,7 @@
  */
 #define ZEND_HASH_FILL_PACKED(ht) do { \
 		HashTable *__fill_ht = (ht); \
-		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
+		Bucket *__fill_bkt = __fill_ht->arData + __fill_ht->nNumUsed; \
 		uint32_t __fill_idx = __fill_ht->nNumUsed; \
 		ZEND_ASSERT(HT_FLAGS(__fill_ht) & HASH_FLAG_PACKED);
 
@@ -1521,33 +1183,35 @@
 			__fill_ht->nNumOfElements = __fill_idx; \
 			__fill_ht->nNextFreeElement = __fill_idx; \
 			zend_hash_packed_grow(__fill_ht); \
-			__fill_val = __fill_ht->arPacked + __fill_idx; \
+			__fill_bkt = __fill_ht->arData + __fill_idx; \
 		} \
 	} while (0);
 
 #define ZEND_HASH_FILL_SET(_val) \
-		ZVAL_COPY_VALUE(__fill_val, _val)
+		ZVAL_COPY_VALUE(&__fill_bkt->val, _val)
 
 #define ZEND_HASH_FILL_SET_NULL() \
-		ZVAL_NULL(__fill_val)
+		ZVAL_NULL(&__fill_bkt->val)
 
 #define ZEND_HASH_FILL_SET_LONG(_val) \
-		ZVAL_LONG(__fill_val, _val)
+		ZVAL_LONG(&__fill_bkt->val, _val)
 
 #define ZEND_HASH_FILL_SET_DOUBLE(_val) \
-		ZVAL_DOUBLE(__fill_val, _val)
+		ZVAL_DOUBLE(&__fill_bkt->val, _val)
 
 #define ZEND_HASH_FILL_SET_STR(_val) \
-		ZVAL_STR(__fill_val, _val)
+		ZVAL_STR(&__fill_bkt->val, _val)
 
 #define ZEND_HASH_FILL_SET_STR_COPY(_val) \
-		ZVAL_STR_COPY(__fill_val, _val)
+		ZVAL_STR_COPY(&__fill_bkt->val, _val)
 
 #define ZEND_HASH_FILL_SET_INTERNED_STR(_val) \
-		ZVAL_INTERNED_STR(__fill_val, _val)
+		ZVAL_INTERNED_STR(&__fill_bkt->val, _val)
 
 #define ZEND_HASH_FILL_NEXT() do {\
-		__fill_val++; \
+		__fill_bkt->h = (__fill_idx); \
+		__fill_bkt->key = NULL; \
+		__fill_bkt++; \
 		__fill_idx++; \
 	} while (0)
 
@@ -1570,8 +1234,8 @@
 /* Check if an array is a list */
 static zend_always_inline bool zend_array_is_list(zend_array *array)
 {
-	zend_ulong expected_idx = 0;
-	zend_ulong num_idx;
+	zend_long expected_idx = 0;
+	zend_long num_idx;
 	zend_string* str_idx;
 	/* Empty arrays are lists */
 	if (zend_hash_num_elements(array) == 0) {
@@ -1579,25 +1243,17 @@
 	}
 
 	/* Packed arrays are lists */
-	if (HT_IS_PACKED(array)) {
-		if (HT_IS_WITHOUT_HOLES(array)) {
-			return 1;
-		}
-		/* Check if the list could theoretically be repacked */
-		ZEND_HASH_PACKED_FOREACH_KEY(array, num_idx) {
-			if (num_idx != expected_idx++) {
-				return 0;
-			}
-		} ZEND_HASH_FOREACH_END();
-	} else {
-		/* Check if the list could theoretically be repacked */
-		ZEND_HASH_MAP_FOREACH_KEY(array, num_idx, str_idx) {
-			if (str_idx != NULL || num_idx != expected_idx++) {
-				return 0;
-			}
-		} ZEND_HASH_FOREACH_END();
+	if (HT_IS_PACKED(array) && HT_IS_WITHOUT_HOLES(array)) {
+		return 1;
 	}
 
+	/* Check if the list could theoretically be repacked */
+	ZEND_HASH_FOREACH_KEY(array, num_idx, str_idx) {
+		if (str_idx != NULL || num_idx != expected_idx++) {
+			return 0;
+		}
+	} ZEND_HASH_FOREACH_END();
+
 	return 1;
 }
 

Modified: trunk/MgDev/Oem/php/include/Zend/zend_inheritance.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_inheritance.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_inheritance.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -27,15 +27,14 @@
 ZEND_API void zend_do_implement_interface(zend_class_entry *ce, zend_class_entry *iface);
 ZEND_API void zend_do_inheritance_ex(zend_class_entry *ce, zend_class_entry *parent_ce, bool checked);
 
-static zend_always_inline void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent_ce) {
-	zend_do_inheritance_ex(ce, parent_ce, 0);
-}
+#define zend_do_inheritance(ce, parent_ce) \
+	zend_do_inheritance_ex(ce, parent_ce, 0)
 
 ZEND_API zend_class_entry *zend_do_link_class(zend_class_entry *ce, zend_string *lc_parent_name, zend_string *key);
 
 void zend_verify_abstract_class(zend_class_entry *ce);
 void zend_build_properties_info_table(zend_class_entry *ce);
-ZEND_API zend_class_entry *zend_try_early_bind(zend_class_entry *ce, zend_class_entry *parent_ce, zend_string *lcname, zval *delayed_early_binding);
+zend_class_entry *zend_try_early_bind(zend_class_entry *ce, zend_class_entry *parent_ce, zend_string *lcname, zval *delayed_early_binding);
 
 ZEND_API extern zend_class_entry* (*zend_inheritance_cache_get)(zend_class_entry *ce, zend_class_entry *parent, zend_class_entry **traits_and_interfaces);
 ZEND_API extern zend_class_entry* (*zend_inheritance_cache_add)(zend_class_entry *ce, zend_class_entry *proto, zend_class_entry *parent, zend_class_entry **traits_and_interfaces, HashTable *dependencies);

Modified: trunk/MgDev/Oem/php/include/Zend/zend_ini.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_ini.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_ini.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -90,52 +90,6 @@
 ZEND_API zend_string *zend_ini_get_value(zend_string *name);
 ZEND_API bool zend_ini_parse_bool(zend_string *str);
 
-/**
- * Parses an ini quantity
- *
- * The value parameter must be a string in the form
- *
- *     sign? digits ws* multiplier?
- *
- * with
- *
- *     sign: [+-]
- *     digit: [0-9]
- *     digits: digit+
- *     ws: [ \t\n\r\v\f]
- *     multiplier: [KMG]
- *
- * Leading and trailing whitespaces are ignored.
- *
- * If the string is empty or consists only of only whitespaces, 0 is returned.
- *
- * Digits is parsed as decimal unless the first digit is '0', in which case
- * digits is parsed as octal.
- *
- * The multiplier is case-insensitive. K, M, and G multiply the quantity by
- * 2**10, 2**20, and 2**30, respectively.
- *
- * For backwards compatibility, ill-formatted values are handled as follows:
- * - No leading digits: value is treated as '0'
- * - Invalid multiplier: multiplier is ignored
- * - Invalid characters between digits and multiplier: invalid characters are
- *   ignored
- * - Integer overflow: The result of the overflow is returned
- *
- * In any of these cases an error string is stored in *errstr (caller must
- * release it), otherwise *errstr is set to NULL.
- */
-ZEND_API zend_long zend_ini_parse_quantity(zend_string *value, zend_string **errstr);
-
-/**
- * Unsigned variant of zend_ini_parse_quantity
- */
-ZEND_API zend_ulong zend_ini_parse_uquantity(zend_string *value, zend_string **errstr);
-
-ZEND_API zend_long zend_ini_parse_quantity_warn(zend_string *value, zend_string *setting);
-
-ZEND_API zend_ulong zend_ini_parse_uquantity_warn(zend_string *value, zend_string *setting);
-
 ZEND_API zend_result zend_ini_register_displayer(const char *name, uint32_t name_length, void (*displayer)(zend_ini_entry *ini_entry, int type));
 
 ZEND_API ZEND_INI_DISP(zend_ini_boolean_displayer_cb);
@@ -196,8 +150,8 @@
 #define INI_ORIG_STR(name)	zend_ini_string((name), strlen(name), 1)
 #define INI_ORIG_BOOL(name) ((bool) INI_ORIG_INT(name))
 
-#define REGISTER_INI_ENTRIES() zend_register_ini_entries_ex(ini_entries, module_number, type)
-#define UNREGISTER_INI_ENTRIES() zend_unregister_ini_entries_ex(module_number, type)
+#define REGISTER_INI_ENTRIES() zend_register_ini_entries(ini_entries, module_number)
+#define UNREGISTER_INI_ENTRIES() zend_unregister_ini_entries(module_number)
 #define DISPLAY_INI_ENTRIES() display_ini_entries(zend_module)
 
 #define REGISTER_INI_DISPLAYER(name, displayer) zend_ini_register_displayer((name), strlen(name), displayer)
@@ -209,12 +163,8 @@
 ZEND_API ZEND_INI_MH(OnUpdateLong);
 ZEND_API ZEND_INI_MH(OnUpdateLongGEZero);
 ZEND_API ZEND_INI_MH(OnUpdateReal);
-/* char* versions */
 ZEND_API ZEND_INI_MH(OnUpdateString);
 ZEND_API ZEND_INI_MH(OnUpdateStringUnempty);
-/* zend_string* versions */
-ZEND_API ZEND_INI_MH(OnUpdateStr);
-ZEND_API ZEND_INI_MH(OnUpdateStrNotEmpty);
 END_EXTERN_C()
 
 #define ZEND_INI_DISPLAY_ORIG	1

Modified: trunk/MgDev/Oem/php/include/Zend/zend_interfaces.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_interfaces.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_interfaces.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -40,23 +40,14 @@
 
 ZEND_API zval* zend_call_method(zend_object *object, zend_class_entry *obj_ce, zend_function **fn_proxy, const char *function_name, size_t function_name_len, zval *retval, uint32_t param_count, zval* arg1, zval* arg2);
 
-static zend_always_inline zval* zend_call_method_with_0_params(zend_object *object, zend_class_entry *obj_ce,
-		zend_function **fn_proxy, const char *function_name, zval *retval)
-{
-	return zend_call_method(object, obj_ce, fn_proxy, function_name, strlen(function_name), retval, 0, NULL, NULL);
-}
+#define zend_call_method_with_0_params(obj, obj_ce, fn_proxy, function_name, retval) \
+	zend_call_method(obj, obj_ce, fn_proxy, function_name, sizeof(function_name)-1, retval, 0, NULL, NULL)
 
-static zend_always_inline zval* zend_call_method_with_1_params(zend_object *object, zend_class_entry *obj_ce,
-		zend_function **fn_proxy, const char *function_name, zval *retval, zval* arg1)
-{
-	return zend_call_method(object, obj_ce, fn_proxy, function_name, strlen(function_name), retval, 1, arg1, NULL);
-}
+#define zend_call_method_with_1_params(obj, obj_ce, fn_proxy, function_name, retval, arg1) \
+	zend_call_method(obj, obj_ce, fn_proxy, function_name, sizeof(function_name)-1, retval, 1, arg1, NULL)
 
-static zend_always_inline zval* zend_call_method_with_2_params(zend_object *object, zend_class_entry *obj_ce,
-		zend_function **fn_proxy, const char *function_name, zval *retval, zval* arg1, zval* arg2)
-{
-	return zend_call_method(object, obj_ce, fn_proxy, function_name, strlen(function_name), retval, 2, arg1, arg2);
-}
+#define zend_call_method_with_2_params(obj, obj_ce, fn_proxy, function_name, retval, arg1, arg2) \
+	zend_call_method(obj, obj_ce, fn_proxy, function_name, sizeof(function_name)-1, retval, 2, arg1, arg2)
 
 ZEND_API void zend_user_it_rewind(zend_object_iterator *_iter);
 ZEND_API zend_result zend_user_it_valid(zend_object_iterator *_iter);

Modified: trunk/MgDev/Oem/php/include/Zend/zend_iterators.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_iterators.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_iterators.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -72,13 +72,6 @@
 	zend_function *zf_rewind;
 } zend_class_iterator_funcs;
 
-typedef struct _zend_class_arrayaccess_funcs {
-	zend_function *zf_offsetget;
-	zend_function *zf_offsetexists;
-	zend_function *zf_offsetset;
-	zend_function *zf_offsetunset;
-} zend_class_arrayaccess_funcs;
-
 BEGIN_EXTERN_C()
 /* given a zval, returns stuff that can be used to iterate it. */
 ZEND_API zend_object_iterator* zend_iterator_unwrap(zval *array_ptr);

Modified: trunk/MgDev/Oem/php/include/Zend/zend_llist.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_llist.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_llist.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -66,26 +66,11 @@
 ZEND_API void *zend_llist_get_next_ex(zend_llist *l, zend_llist_position *pos);
 ZEND_API void *zend_llist_get_prev_ex(zend_llist *l, zend_llist_position *pos);
 
-static zend_always_inline void *zend_llist_get_first(zend_llist *l)
-{
-	return zend_llist_get_first_ex(l, NULL);
-}
+#define zend_llist_get_first(l) zend_llist_get_first_ex(l, NULL)
+#define zend_llist_get_last(l) zend_llist_get_last_ex(l, NULL)
+#define zend_llist_get_next(l) zend_llist_get_next_ex(l, NULL)
+#define zend_llist_get_prev(l) zend_llist_get_prev_ex(l, NULL)
 
-static zend_always_inline void *zend_llist_get_last(zend_llist *l)
-{
-	return zend_llist_get_last_ex(l, NULL);
-}
-
-static zend_always_inline void *zend_llist_get_next(zend_llist *l)
-{
-	return zend_llist_get_next_ex(l, NULL);
-}
-
-static zend_always_inline void *zend_llist_get_prev(zend_llist *l)
-{
-	return zend_llist_get_prev_ex(l, NULL);
-}
-
 END_EXTERN_C()
 
 #endif /* ZEND_LLIST_H */

Modified: trunk/MgDev/Oem/php/include/Zend/zend_long.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_long.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_long.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -19,8 +19,7 @@
 #ifndef ZEND_LONG_H
 #define ZEND_LONG_H
 
-#include <inttypes.h>
-#include <stdint.h>
+#include "main/php_stdint.h"
 
 /* This is the heart of the whole int64 enablement in zval. */
 #if defined(__x86_64__) || defined(__LP64__) || defined(_LP64) || defined(_WIN64)

Modified: trunk/MgDev/Oem/php/include/Zend/zend_map_ptr.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_map_ptr.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_map_ptr.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -24,12 +24,16 @@
 #define ZEND_MAP_PTR_KIND_PTR           0
 #define ZEND_MAP_PTR_KIND_PTR_OR_OFFSET 1
 
-#define ZEND_MAP_PTR_KIND ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
+//#if defined(ZTS) || defined(TSRM_WIN32)
+# define ZEND_MAP_PTR_KIND ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
+//#else
+//# define ZEND_MAP_PTR_KIND ZEND_MAP_PTR_KIND_PTR
+//#endif
 
 #define ZEND_MAP_PTR(ptr) \
 	ptr ## __ptr
 #define ZEND_MAP_PTR_DEF(type, name) \
-	type ZEND_MAP_PTR(name)
+	type * ZEND_MAP_PTR(name)
 #define ZEND_MAP_PTR_OFFSET2PTR(offset) \
 	((void**)((char*)CG(map_ptr_base) + offset))
 #define ZEND_MAP_PTR_PTR2OFFSET(ptr) \
@@ -41,23 +45,37 @@
 		ZEND_MAP_PTR(ptr) = zend_map_ptr_new(); \
 	} while (0)
 
-#if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
+#if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR
 # define ZEND_MAP_PTR_NEW_OFFSET() \
+	((uint32_t)(uintptr_t)ZEND_MAP_PTR_PTR2OFFSET(zend_map_ptr_new()))
+# define ZEND_MAP_PTR_GET(ptr) \
+	(*(ZEND_MAP_PTR(ptr)))
+# define ZEND_MAP_PTR_GET_IMM(ptr) \
+	ZEND_MAP_PTR_GET(ptr)
+# define ZEND_MAP_PTR_SET(ptr, val) do { \
+		(*(ZEND_MAP_PTR(ptr))) = (val); \
+	} while (0)
+# define ZEND_MAP_PTR_SET_IMM(ptr, val) \
+	ZEND_MAP_PTR_SET(ptr, val)
+# define ZEND_MAP_PTR_BIASED_BASE(real_base) \
+	(real_base)
+#elif ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
+# define ZEND_MAP_PTR_NEW_OFFSET() \
 	((uint32_t)(uintptr_t)zend_map_ptr_new())
 # define ZEND_MAP_PTR_IS_OFFSET(ptr) \
 	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
 # define ZEND_MAP_PTR_GET(ptr) \
-	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
-		ZEND_MAP_PTR_GET_IMM(ptr) : \
-		((void*)(ZEND_MAP_PTR(ptr)))))
+	(*(ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
+		ZEND_MAP_PTR_OFFSET2PTR((uintptr_t)ZEND_MAP_PTR(ptr)) : \
+		((void**)(ZEND_MAP_PTR(ptr)))))
 # define ZEND_MAP_PTR_GET_IMM(ptr) \
 	(*ZEND_MAP_PTR_OFFSET2PTR((uintptr_t)ZEND_MAP_PTR(ptr)))
 # define ZEND_MAP_PTR_SET(ptr, val) do { \
+		void **__p = (void**)(ZEND_MAP_PTR(ptr)); \
 		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
-			ZEND_MAP_PTR_SET_IMM(ptr, val); \
-		} else { \
-			ZEND_MAP_PTR_INIT(ptr, val); \
+			__p = ZEND_MAP_PTR_OFFSET2PTR((uintptr_t)ZEND_MAP_PTR(ptr)); \
 		} \
+		*__p = (val); \
 	} while (0)
 # define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
 		void **__p = ZEND_MAP_PTR_OFFSET2PTR((uintptr_t)ZEND_MAP_PTR(ptr)); \
@@ -69,13 +87,9 @@
 # error "Unknown ZEND_MAP_PTR_KIND"
 #endif
 
-BEGIN_EXTERN_C()
-
 ZEND_API void  zend_map_ptr_reset(void);
 ZEND_API void *zend_map_ptr_new(void);
 ZEND_API void  zend_map_ptr_extend(size_t last);
 ZEND_API void zend_alloc_ce_cache(zend_string *type_name);
 
-END_EXTERN_C()
-
 #endif /* ZEND_MAP_PTR_H */

Deleted: trunk/MgDev/Oem/php/include/Zend/zend_mmap.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_mmap.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_mmap.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,44 +0,0 @@
-/*
-   +----------------------------------------------------------------------+
-   | This source file is subject to version 2.00 of the Zend license,     |
-   | that is bundled with this package in the file LICENSE, and is        |
-   | available through the world-wide-web at the following url:           |
-   | http://www.zend.com/license/2_00.txt.                                |
-   | If you did not receive a copy of the Zend license and are unable to  |
-   | obtain it through the world-wide-web, please send a note to          |
-   | license at zend.com so we can mail you a copy immediately.              |
-   +----------------------------------------------------------------------+
-   | Authors: Max Kellermann <max.kellermann at ionos.com>                   |
-   +----------------------------------------------------------------------+
-*/
-
-#ifndef ZEND_MMAP_H
-#define ZEND_MMAP_H
-
-#include "zend_portability.h"
-
-#ifdef __linux__
-# include <sys/prctl.h>
-
-/* fallback definitions if our libc is older than the kernel */
-# ifndef PR_SET_VMA
-#  define PR_SET_VMA 0x53564d41
-# endif
-# ifndef PR_SET_VMA_ANON_NAME
-#  define PR_SET_VMA_ANON_NAME 0
-# endif
-#endif // __linux__
-
-/**
- * Set a name for the specified memory area.
- *
- * This feature requires Linux 5.17.
- */
-static zend_always_inline void zend_mmap_set_name(const void *start, size_t len, const char *name)
-{
-#ifdef __linux__
-	prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, (unsigned long)start, len, (unsigned long)name);
-#endif
-}
-
-#endif /* ZEND_MMAP_H */

Modified: trunk/MgDev/Oem/php/include/Zend/zend_modules.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_modules.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_modules.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -31,7 +31,7 @@
 #define ZEND_MODULE_INFO_FUNC_ARGS zend_module_entry *zend_module
 #define ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU zend_module
 
-#define ZEND_MODULE_API_NO 20220829
+#define ZEND_MODULE_API_NO 20210902
 #ifdef ZTS
 #define USING_ZTS 1
 #else

Modified: trunk/MgDev/Oem/php/include/Zend/zend_multiply.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_multiply.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_multiply.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -94,19 +94,6 @@
 		(dval) = (double)(a) * (double)(b); \
 	} \
 } while (0)
-# elif defined(_M_ARM64)
-#  pragma intrinsic(__mulh)
-#  define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {       \
-	__int64 __high = __mulh((a), (b)); \
-	__int64 __low  = (a) * (b); \
-	if ((__low >> 63I64) == __high) { \
-		(usedval) = 0; \
-		(lval) = __low; \
-	} else { \
-		(usedval) = 1; \
-		(dval) = (double)(a) * (double)(b); \
-	} \
-} while (0)
 # else
 #  define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
 	zend_long   __lres  = (a) * (b);										\

Modified: trunk/MgDev/Oem/php/include/Zend/zend_object_handlers.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_object_handlers.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_object_handlers.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -144,17 +144,17 @@
 /* Cast an object to some other type.
  * readobj and retval must point to distinct zvals.
  */
-typedef zend_result (*zend_object_cast_t)(zend_object *readobj, zval *retval, int type);
+typedef int (*zend_object_cast_t)(zend_object *readobj, zval *retval, int type);
 
 /* updates *count to hold the number of elements present and returns SUCCESS.
  * Returns FAILURE if the object does not have any sense of overloaded dimensions */
-typedef zend_result (*zend_object_count_elements_t)(zend_object *object, zend_long *count);
+typedef int (*zend_object_count_elements_t)(zend_object *object, zend_long *count);
 
-typedef zend_result (*zend_object_get_closure_t)(zend_object *obj, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zend_object **obj_ptr, bool check_only);
+typedef int (*zend_object_get_closure_t)(zend_object *obj, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zend_object **obj_ptr, bool check_only);
 
 typedef HashTable *(*zend_object_get_gc_t)(zend_object *object, zval **table, int *n);
 
-typedef zend_result (*zend_object_do_operation_t)(zend_uchar opcode, zval *result, zval *op1, zval *op2);
+typedef int (*zend_object_do_operation_t)(zend_uchar opcode, zval *result, zval *op1, zval *op2);
 
 struct _zend_object_handlers {
 	/* offset of real object header (usually zero) */
@@ -209,7 +209,7 @@
 ZEND_API HashTable *zend_std_get_properties(zend_object *object);
 ZEND_API HashTable *zend_std_get_gc(zend_object *object, zval **table, int *n);
 ZEND_API HashTable *zend_std_get_debug_info(zend_object *object, int *is_temp);
-ZEND_API zend_result zend_std_cast_object_tostring(zend_object *object, zval *writeobj, int type);
+ZEND_API int zend_std_cast_object_tostring(zend_object *object, zval *writeobj, int type);
 ZEND_API zval *zend_std_get_property_ptr_ptr(zend_object *object, zend_string *member, int type, void **cache_slot);
 ZEND_API zval *zend_std_read_property(zend_object *object, zend_string *member, int type, void **cache_slot, zval *rv);
 ZEND_API zval *zend_std_write_property(zend_object *object, zend_string *member, zval *value, void **cache_slot);
@@ -222,7 +222,7 @@
 ZEND_API zend_function *zend_std_get_method(zend_object **obj_ptr, zend_string *method_name, const zval *key);
 ZEND_API zend_string *zend_std_get_class_name(const zend_object *zobj);
 ZEND_API int zend_std_compare_objects(zval *o1, zval *o2);
-ZEND_API zend_result zend_std_get_closure(zend_object *obj, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zend_object **obj_ptr, bool check_only);
+ZEND_API int zend_std_get_closure(zend_object *obj, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zend_object **obj_ptr, bool check_only);
 ZEND_API void rebuild_object_properties(zend_object *zobj);
 
 ZEND_API HashTable *zend_std_build_object_properties_array(zend_object *zobj);

Modified: trunk/MgDev/Oem/php/include/Zend/zend_observer.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_observer.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_observer.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -27,9 +27,6 @@
 BEGIN_EXTERN_C()
 
 extern ZEND_API int zend_observer_fcall_op_array_extension;
-extern ZEND_API bool zend_observer_errors_observed;
-extern ZEND_API bool zend_observer_function_declared_observed;
-extern ZEND_API bool zend_observer_class_linked_observed;
 
 #define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
 
@@ -59,16 +56,10 @@
 // Call during minit/startup ONLY
 ZEND_API void zend_observer_fcall_register(zend_observer_fcall_init);
 
-// Call during runtime, but only if you have used zend_observer_fcall_register.
-// You must not have more than one begin and one end handler active at the same time. Remove the old one first, if there is an existing one.
-ZEND_API void zend_observer_add_begin_handler(zend_function *function, zend_observer_fcall_begin_handler begin);
-ZEND_API bool zend_observer_remove_begin_handler(zend_function *function, zend_observer_fcall_begin_handler begin);
-ZEND_API void zend_observer_add_end_handler(zend_function *function, zend_observer_fcall_end_handler end);
-ZEND_API bool zend_observer_remove_end_handler(zend_function *function, zend_observer_fcall_end_handler end);
-
 ZEND_API void zend_observer_startup(void); // Called by engine before MINITs
 ZEND_API void zend_observer_post_startup(void); // Called by engine after MINITs
 ZEND_API void zend_observer_activate(void);
+ZEND_API void zend_observer_deactivate(void);
 ZEND_API void zend_observer_shutdown(void);
 
 ZEND_API void ZEND_FASTCALL zend_observer_fcall_begin(
@@ -83,35 +74,10 @@
 
 ZEND_API void zend_observer_fcall_end_all(void);
 
-typedef void (*zend_observer_function_declared_cb)(zend_op_array *op_array, zend_string *name);
-
-ZEND_API void zend_observer_function_declared_register(zend_observer_function_declared_cb cb);
-ZEND_API void ZEND_FASTCALL _zend_observer_function_declared_notify(zend_op_array *op_array, zend_string *name);
-static inline void zend_observer_function_declared_notify(zend_op_array *op_array, zend_string *name) {
-    if (UNEXPECTED(zend_observer_function_declared_observed)) {
-		_zend_observer_function_declared_notify(op_array, name);
-	}
-}
-
-typedef void (*zend_observer_class_linked_cb)(zend_class_entry *ce, zend_string *name);
-
-ZEND_API void zend_observer_class_linked_register(zend_observer_class_linked_cb cb);
-ZEND_API void ZEND_FASTCALL _zend_observer_class_linked_notify(zend_class_entry *ce, zend_string *name);
-static inline void zend_observer_class_linked_notify(zend_class_entry *ce, zend_string *name) {
-	if (UNEXPECTED(zend_observer_class_linked_observed)) {
-		_zend_observer_class_linked_notify(ce, name);
-	}
-}
-
 typedef void (*zend_observer_error_cb)(int type, zend_string *error_filename, uint32_t error_lineno, zend_string *message);
 
 ZEND_API void zend_observer_error_register(zend_observer_error_cb callback);
-ZEND_API void _zend_observer_error_notify(int type, zend_string *error_filename, uint32_t error_lineno, zend_string *message);
-static inline void zend_observer_error_notify(int type, zend_string *error_filename, uint32_t error_lineno, zend_string *message) {
-	if (UNEXPECTED(zend_observer_errors_observed)) {
-		_zend_observer_error_notify(type, error_filename, error_lineno, message);
-	}
-}
+void zend_observer_error_notify(int type, zend_string *error_filename, uint32_t error_lineno, zend_string *message);
 
 typedef void (*zend_observer_fiber_init_handler)(zend_fiber_context *initializing);
 typedef void (*zend_observer_fiber_switch_handler)(zend_fiber_context *from, zend_fiber_context *to);

Modified: trunk/MgDev/Oem/php/include/Zend/zend_operators.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_operators.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_operators.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -161,17 +161,19 @@
 zend_memnstr(const char *haystack, const char *needle, size_t needle_len, const char *end)
 {
 	const char *p = haystack;
+	ptrdiff_t off_p;
 	size_t off_s;
 
-	ZEND_ASSERT(end >= p);
+	if (needle_len == 0) {
+		return p;
+	}
 
 	if (needle_len == 1) {
 		return (const char *)memchr(p, *needle, (end-p));
-	} else if (UNEXPECTED(needle_len == 0)) {
-		return p;
 	}
 
-	off_s = (size_t)(end - p);
+	off_p = end - haystack;
+	off_s = (off_p > 0) ? (size_t)off_p : 0;
 
 	if (needle_len > off_s) {
 		return NULL;
@@ -182,13 +184,16 @@
 		end -= needle_len;
 
 		while (p <= end) {
-			if ((p = (const char *)memchr(p, *needle, (end-p+1)))) {
-				if (ne == p[needle_len-1] && !memcmp(needle+1, p+1, needle_len-2)) {
+			if ((p = (const char *)memchr(p, *needle, (end-p+1))) && ne == p[needle_len-1]) {
+				if (!memcmp(needle+1, p+1, needle_len-2)) {
 					return p;
 				}
-			} else {
+			}
+
+			if (p == NULL) {
 				return NULL;
 			}
+
 			p++;
 		}
 
@@ -200,10 +205,6 @@
 
 static zend_always_inline const void *zend_memrchr(const void *s, int c, size_t n)
 {
-#if defined(HAVE_MEMRCHR) && !defined(i386)
-	/* On x86 memrchr() doesn't use SSE/AVX, so inlined version is faster */
-	return (const void*)memrchr(s, c, n);
-#else
 	const unsigned char *e;
 	if (0 == n) {
 		return NULL;
@@ -215,7 +216,6 @@
 		}
 	}
 	return NULL;
-#endif
 }
 
 
@@ -422,32 +422,18 @@
 ZEND_API int ZEND_FASTCALL string_case_compare_function(zval *op1, zval *op2);
 ZEND_API int ZEND_FASTCALL string_locale_compare_function(zval *op1, zval *op2);
 
-ZEND_API extern const unsigned char zend_tolower_map[256];
-ZEND_API extern const unsigned char zend_toupper_map[256];
-
-#define zend_tolower_ascii(c) (zend_tolower_map[(unsigned char)(c)])
-#define zend_toupper_ascii(c) (zend_toupper_map[(unsigned char)(c)])
-
 ZEND_API void         ZEND_FASTCALL zend_str_tolower(char *str, size_t length);
-ZEND_API void         ZEND_FASTCALL zend_str_toupper(char *str, size_t length);
 ZEND_API char*        ZEND_FASTCALL zend_str_tolower_copy(char *dest, const char *source, size_t length);
-ZEND_API char*        ZEND_FASTCALL zend_str_toupper_copy(char *dest, const char *source, size_t length);
 ZEND_API char*        ZEND_FASTCALL zend_str_tolower_dup(const char *source, size_t length);
-ZEND_API char*        ZEND_FASTCALL zend_str_toupper_dup(const char *source, size_t length);
 ZEND_API char*        ZEND_FASTCALL zend_str_tolower_dup_ex(const char *source, size_t length);
-ZEND_API char*        ZEND_FASTCALL zend_str_toupper_dup_ex(const char *source, size_t length);
 ZEND_API zend_string* ZEND_FASTCALL zend_string_tolower_ex(zend_string *str, bool persistent);
-ZEND_API zend_string* ZEND_FASTCALL zend_string_toupper_ex(zend_string *str, bool persistent);
 
-static zend_always_inline zend_string* zend_string_tolower(zend_string *str) {
-	return zend_string_tolower_ex(str, false);
-}
-static zend_always_inline zend_string* zend_string_toupper(zend_string *str) {
-	return zend_string_toupper_ex(str, false);
-}
+#define zend_string_tolower(str) zend_string_tolower_ex(str, 0)
 
 ZEND_API int ZEND_FASTCALL zend_binary_zval_strcmp(zval *s1, zval *s2);
 ZEND_API int ZEND_FASTCALL zend_binary_zval_strncmp(zval *s1, zval *s2, zval *s3);
+ZEND_API int ZEND_FASTCALL zend_binary_zval_strcasecmp(zval *s1, zval *s2);
+ZEND_API int ZEND_FASTCALL zend_binary_zval_strncasecmp(zval *s1, zval *s2, zval *s3);
 ZEND_API int ZEND_FASTCALL zend_binary_strcmp(const char *s1, size_t len1, const char *s2, size_t len2);
 ZEND_API int ZEND_FASTCALL zend_binary_strncmp(const char *s1, size_t len1, const char *s2, size_t len2, size_t length);
 ZEND_API int ZEND_FASTCALL zend_binary_strcasecmp(const char *s1, size_t len1, const char *s2, size_t len2);
@@ -461,12 +447,9 @@
 ZEND_API int ZEND_FASTCALL zend_compare_arrays(zval *a1, zval *a2);
 ZEND_API int ZEND_FASTCALL zend_compare_objects(zval *o1, zval *o2);
 
-/** Deprecatd in favor of ZEND_STRTOL() */
-ZEND_ATTRIBUTE_DEPRECATED ZEND_API int ZEND_FASTCALL zend_atoi(const char *str, size_t str_len);
+ZEND_API int ZEND_FASTCALL zend_atoi(const char *str, size_t str_len);
+ZEND_API zend_long ZEND_FASTCALL zend_atol(const char *str, size_t str_len);
 
-/** Deprecatd in favor of ZEND_STRTOL() */
-ZEND_ATTRIBUTE_DEPRECATED ZEND_API zend_long ZEND_FASTCALL zend_atol(const char *str, size_t str_len);
-
 #define convert_to_null_ex(zv) convert_to_null(zv)
 #define convert_to_boolean_ex(zv) convert_to_boolean(zv)
 #define convert_to_long_ex(zv) convert_to_long(zv)
@@ -915,68 +898,7 @@
 }
 /* }}} */
 
-static zend_always_inline bool zend_strnieq(const char *ptr1, const char *ptr2, size_t num)
-{
-	const char *end = ptr1 + num;
-	while (ptr1 < end) {
-		if (zend_tolower_ascii(*ptr1++) != zend_tolower_ascii(*ptr2++)) {
-			return 0;
-		}
-	}
-	return 1;
-}
 
-static zend_always_inline const char *
-zend_memnistr(const char *haystack, const char *needle, size_t needle_len, const char *end)
-{
-	ZEND_ASSERT(end >= haystack);
-
-	if (UNEXPECTED(needle_len == 0)) {
-		return haystack;
-	}
-
-	if (UNEXPECTED(needle_len > (size_t)(end - haystack))) {
-		return NULL;
-	}
-
-	const char first_lower = zend_tolower_ascii(*needle);
-	const char first_upper = zend_toupper_ascii(*needle);
-	const char *p_lower = (const char *)memchr(haystack, first_lower, end - haystack);
-	const char *p_upper = NULL;
-	if (first_lower != first_upper) {
-		// If the needle length is 1 we don't need to look beyond p_lower as it is a guaranteed match
-		size_t upper_search_length = end - (needle_len == 1 && p_lower != NULL ? p_lower : haystack);
-		p_upper = (const char *)memchr(haystack, first_upper, upper_search_length);
-	}
-	const char *p = !p_upper || (p_lower && p_lower < p_upper) ? p_lower : p_upper;
-
-	if (needle_len == 1) {
-		return p;
-	}
-
-	const char needle_end_lower = zend_tolower_ascii(needle[needle_len - 1]);
-	const char needle_end_upper = zend_toupper_ascii(needle[needle_len - 1]);
-	end -= needle_len;
-
-	while (p && p <= end) {
-		if (needle_end_lower == p[needle_len - 1] || needle_end_upper == p[needle_len - 1]) {
-			if (zend_strnieq(needle + 1, p + 1, needle_len - 2)) {
-				return p;
-			}
-		}
-		if (p_lower == p) {
-			p_lower = (const char *)memchr(p_lower + 1, first_lower, end - p_lower);
-		}
-		if (p_upper == p) {
-			p_upper = (const char *)memchr(p_upper + 1, first_upper, end - p_upper);
-		}
-		p = !p_upper || (p_lower && p_lower < p_upper) ? p_lower : p_upper;
-	}
-
-	return NULL;
-}
-
-
 END_EXTERN_C()
 
 #endif

Modified: trunk/MgDev/Oem/php/include/Zend/zend_portability.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_portability.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_portability.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -63,6 +63,10 @@
 
 #include <limits.h>
 
+#if HAVE_ALLOCA_H && !defined(_ALLOCA_H)
+# include <alloca.h>
+#endif
+
 #if defined(ZEND_WIN32) && !defined(__clang__)
 #include <intrin.h>
 #endif
@@ -177,9 +181,6 @@
 # define ZEND_EXTENSIONS_SUPPORT	0
 #endif
 
-#if defined(HAVE_ALLOCA_H) && !defined(_ALLOCA_H)
-# include <alloca.h>
-#endif
 /* AIX requires this to be the first thing in the file.  */
 #ifndef __GNUC__
 # ifndef HAVE_ALLOCA_H
@@ -193,29 +194,8 @@
 # endif
 #endif
 
-#if !ZEND_DEBUG && (defined(HAVE_ALLOCA) || (defined (__GNUC__) && __GNUC__ >= 2)) && !(defined(ZTS) && defined(HPUX)) && !defined(DARWIN)
-# define ZEND_ALLOCA_MAX_SIZE (32 * 1024)
-# define ALLOCA_FLAG(name) \
-	bool name;
-# define SET_ALLOCA_FLAG(name) \
-	name = true
-# define do_alloca_ex(size, limit, use_heap) \
-	((use_heap = (UNEXPECTED((size) > (limit)))) ? emalloc(size) : alloca(size))
-# define do_alloca(size, use_heap) \
-	do_alloca_ex(size, ZEND_ALLOCA_MAX_SIZE, use_heap)
-# define free_alloca(p, use_heap) \
-	do { if (UNEXPECTED(use_heap)) efree(p); } while (0)
-#else
-# define ALLOCA_FLAG(name)
-# define SET_ALLOCA_FLAG(name)
-# define do_alloca(p, use_heap)		emalloc(p)
-# define free_alloca(p, use_heap)	efree(p)
-#endif
-
 #if ZEND_GCC_VERSION >= 2096 || __has_attribute(__malloc__)
 # define ZEND_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
-#elif defined(ZEND_WIN32)
-# define ZEND_ATTRIBUTE_MALLOC __declspec(allocator) __declspec(restrict)
 #else
 # define ZEND_ATTRIBUTE_MALLOC
 #endif
@@ -228,12 +208,6 @@
 # define ZEND_ATTRIBUTE_ALLOC_SIZE2(X,Y)
 #endif
 
-#if ZEND_GCC_VERSION >= 3000
-# define ZEND_ATTRIBUTE_CONST __attribute__((const))
-#else
-# define ZEND_ATTRIBUTE_CONST
-#endif
-
 #if ZEND_GCC_VERSION >= 2007 || __has_attribute(format)
 # define ZEND_ATTRIBUTE_FORMAT(type, idx, first) __attribute__ ((format(type, idx, first)))
 #else
@@ -371,6 +345,25 @@
 # define XtOffsetOf(s_type, field) offsetof(s_type, field)
 #endif
 
+#if (defined(HAVE_ALLOCA) || (defined (__GNUC__) && __GNUC__ >= 2)) && !(defined(ZTS) && defined(HPUX)) && !defined(DARWIN)
+# define ZEND_ALLOCA_MAX_SIZE (32 * 1024)
+# define ALLOCA_FLAG(name) \
+	bool name;
+# define SET_ALLOCA_FLAG(name) \
+	name = 1
+# define do_alloca_ex(size, limit, use_heap) \
+	((use_heap = (UNEXPECTED((size) > (limit)))) ? emalloc(size) : alloca(size))
+# define do_alloca(size, use_heap) \
+	do_alloca_ex(size, ZEND_ALLOCA_MAX_SIZE, use_heap)
+# define free_alloca(p, use_heap) \
+	do { if (UNEXPECTED(use_heap)) efree(p); } while (0)
+#else
+# define ALLOCA_FLAG(name)
+# define SET_ALLOCA_FLAG(name)
+# define do_alloca(p, use_heap)		emalloc(p)
+# define free_alloca(p, use_heap)	efree(p)
+#endif
+
 #ifdef HAVE_SIGSETJMP
 # define SETJMP(a) sigsetjmp(a, 0)
 # define LONGJMP(a,b) siglongjmp(a, b)
@@ -464,12 +457,6 @@
 #define ZEND_TRUTH(x)		((x) ? 1 : 0)
 #define ZEND_LOG_XOR(a, b)		(ZEND_TRUTH(a) ^ ZEND_TRUTH(b))
 
-/**
- * Do a three-way comparison of two integers and returns -1, 0 or 1
- * depending on whether #a is smaller, equal or larger than #b.
- */
-#define ZEND_THREEWAY_COMPARE(a, b) ((a) == (b) ? 0 : ((a) < (b) ? -1 : 1))
-
 #define ZEND_MAX_RESERVED_RESOURCES	6
 
 /* excpt.h on Digital Unix 4.0 defines function_table */
@@ -530,7 +517,7 @@
 #ifdef __SSSE3__
 /* Instructions compiled directly. */
 # define ZEND_INTRIN_SSSE3_NATIVE 1
-#elif (defined(HAVE_FUNC_ATTRIBUTE_TARGET) && defined(PHP_HAVE_SSSE3)) || (defined(ZEND_WIN32) && (!defined(_M_ARM64)))
+#elif (defined(HAVE_FUNC_ATTRIBUTE_TARGET) && defined(PHP_HAVE_SSSE3)) || defined(ZEND_WIN32)
 /* Function resolved by ifunc or MINIT. */
 # define ZEND_INTRIN_SSSE3_RESOLVER 1
 #endif
@@ -555,7 +542,7 @@
 #ifdef __SSE4_2__
 /* Instructions compiled directly. */
 # define ZEND_INTRIN_SSE4_2_NATIVE 1
-#elif (defined(HAVE_FUNC_ATTRIBUTE_TARGET) && defined(PHP_HAVE_SSE4_2)) || (defined(ZEND_WIN32) && (!defined(_M_ARM64)))
+#elif (defined(HAVE_FUNC_ATTRIBUTE_TARGET) && defined(PHP_HAVE_SSE4_2)) || defined(ZEND_WIN32)
 /* Function resolved by ifunc or MINIT. */
 # define ZEND_INTRIN_SSE4_2_RESOLVER 1
 #endif
@@ -580,7 +567,7 @@
 #ifdef __PCLMUL__
 /* Instructions compiled directly. */
 # define ZEND_INTRIN_PCLMUL_NATIVE 1
-#elif (defined(HAVE_FUNC_ATTRIBUTE_TARGET) && defined(PHP_HAVE_PCLMUL)) || (defined(ZEND_WIN32) && (!defined(_M_ARM64)))
+#elif (defined(HAVE_FUNC_ATTRIBUTE_TARGET) && defined(PHP_HAVE_PCLMUL)) || defined(ZEND_WIN32)
 /* Function resolved by ifunc or MINIT. */
 # define ZEND_INTRIN_PCLMUL_RESOLVER 1
 #endif
@@ -606,7 +593,7 @@
 #if defined(ZEND_INTRIN_SSE4_2_NATIVE) && defined(ZEND_INTRIN_PCLMUL_NATIVE)
 /* Instructions compiled directly. */
 # define ZEND_INTRIN_SSE4_2_PCLMUL_NATIVE 1
-#elif (defined(HAVE_FUNC_ATTRIBUTE_TARGET) && defined(PHP_HAVE_SSE4_2) && defined(PHP_HAVE_PCLMUL)) || (defined(ZEND_WIN32) && (!defined(_M_ARM64)))
+#elif (defined(HAVE_FUNC_ATTRIBUTE_TARGET) && defined(PHP_HAVE_SSE4_2) && defined(PHP_HAVE_PCLMUL)) || defined(ZEND_WIN32)
 /* Function resolved by ifunc or MINIT. */
 # define ZEND_INTRIN_SSE4_2_PCLMUL_RESOLVER 1
 #endif
@@ -631,7 +618,7 @@
 
 #ifdef __AVX2__
 # define ZEND_INTRIN_AVX2_NATIVE 1
-#elif (defined(HAVE_FUNC_ATTRIBUTE_TARGET) && defined(PHP_HAVE_AVX2)) || (defined(ZEND_WIN32) && (!defined(_M_ARM64)))
+#elif (defined(HAVE_FUNC_ATTRIBUTE_TARGET) && defined(PHP_HAVE_AVX2)) || defined(ZEND_WIN32)
 # define ZEND_INTRIN_AVX2_RESOLVER 1
 #endif
 

Modified: trunk/MgDev/Oem/php/include/Zend/zend_ptr_stack.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_ptr_stack.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_ptr_stack.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -48,7 +48,7 @@
 		do {												\
 			stack->max += PTR_STACK_BLOCK_SIZE;				\
 		} while (stack->top+count > stack->max);			\
-		stack->elements = (void **) safe_perealloc(stack->elements, sizeof(void *), (stack->max), 0, stack->persistent);	\
+		stack->elements = (void **) perealloc(stack->elements, (sizeof(void *) * (stack->max)), stack->persistent);	\
 		stack->top_element = stack->elements+stack->top;	\
 	}
 

Modified: trunk/MgDev/Oem/php/include/Zend/zend_smart_str.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_smart_str.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_smart_str.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -21,6 +21,29 @@
 #include "zend_globals.h"
 #include "zend_smart_str_public.h"
 
+#define smart_str_appends_ex(dest, src, what) \
+	smart_str_appendl_ex((dest), (src), strlen(src), (what))
+#define smart_str_appends(dest, src) \
+	smart_str_appendl((dest), (src), strlen(src))
+#define smart_str_extend(dest, len) \
+	smart_str_extend_ex((dest), (len), 0)
+#define smart_str_appendc(dest, c) \
+	smart_str_appendc_ex((dest), (c), 0)
+#define smart_str_appendl(dest, src, len) \
+	smart_str_appendl_ex((dest), (src), (len), 0)
+#define smart_str_append(dest, src) \
+	smart_str_append_ex((dest), (src), 0)
+#define smart_str_append_smart_str(dest, src) \
+	smart_str_append_smart_str_ex((dest), (src), 0)
+#define smart_str_sets(dest, src) \
+	smart_str_setl((dest), (src), strlen(src));
+#define smart_str_append_long(dest, val) \
+	smart_str_append_long_ex((dest), (val), 0)
+#define smart_str_append_unsigned(dest, val) \
+	smart_str_append_unsigned_ex((dest), (val), 0)
+#define smart_str_free(dest) \
+	smart_str_free_ex((dest), 0)
+
 BEGIN_EXTERN_C()
 
 ZEND_API void ZEND_FASTCALL smart_str_erealloc(smart_str *str, size_t len);
@@ -60,11 +83,6 @@
 	return ret;
 }
 
-static zend_always_inline char* smart_str_extend(smart_str *dest, size_t length)
-{
-	return smart_str_extend_ex(dest, length, false);
-}
-
 static zend_always_inline void smart_str_free_ex(smart_str *str, bool persistent) {
 	if (str->s) {
 		zend_string_release_ex(str->s, persistent);
@@ -73,11 +91,6 @@
 	str->a = 0;
 }
 
-static zend_always_inline void smart_str_free(smart_str *str)
-{
-	smart_str_free_ex(str, false);
-}
-
 static zend_always_inline void smart_str_0(smart_str *str) {
 	if (str->s) {
 		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
@@ -88,24 +101,10 @@
 	return str->s ? ZSTR_LEN(str->s) : 0;
 }
 
-static zend_always_inline void smart_str_trim_to_size_ex(smart_str *str, bool persistent)
-{
-	if (str->s && str->a > ZSTR_LEN(str->s)) {
-		str->s = zend_string_realloc(str->s, ZSTR_LEN(str->s), persistent);
-		str->a = ZSTR_LEN(str->s);
-	}
-}
-
-static zend_always_inline void smart_str_trim_to_size(smart_str *dest)
-{
-	smart_str_trim_to_size_ex(dest, false);
-}
-
-static zend_always_inline zend_string *smart_str_extract_ex(smart_str *str, bool persistent) {
+static zend_always_inline zend_string *smart_str_extract(smart_str *str) {
 	if (str->s) {
 		zend_string *res;
 		smart_str_0(str);
-		smart_str_trim_to_size_ex(str, persistent);
 		res = str->s;
 		str->s = NULL;
 		return res;
@@ -114,11 +113,6 @@
 	}
 }
 
-static zend_always_inline zend_string *smart_str_extract(smart_str *dest)
-{
-	return smart_str_extract_ex(dest, false);
-}
-
 static zend_always_inline void smart_str_appendc_ex(smart_str *dest, char ch, bool persistent) {
 	size_t new_len = smart_str_alloc(dest, 1, persistent);
 	ZSTR_VAL(dest->s)[new_len - 1] = ch;
@@ -147,11 +141,6 @@
 	smart_str_appendl_ex(dest, result, buf + sizeof(buf) - 1 - result, persistent);
 }
 
-static zend_always_inline void smart_str_append_long(smart_str *dest, zend_long num)
-{
-	smart_str_append_long_ex(dest, num, false);
-}
-
 static zend_always_inline void smart_str_append_unsigned_ex(smart_str *dest, zend_ulong num, bool persistent) {
 	char buf[32];
 	char *result = zend_print_ulong_to_buf(buf + sizeof(buf) - 1, num);
@@ -158,43 +147,9 @@
 	smart_str_appendl_ex(dest, result, buf + sizeof(buf) - 1 - result, persistent);
 }
 
-static zend_always_inline void smart_str_append_unsigned(smart_str *dest, zend_ulong num)
-{
-	smart_str_append_unsigned_ex(dest, num, false);
-}
-
-static zend_always_inline void smart_str_appendl(smart_str *dest, const char *src, size_t length)
-{
-	smart_str_appendl_ex(dest, src, length, false);
-}
-static zend_always_inline void smart_str_appends_ex(smart_str *dest, const char *src, bool persistent)
-{
-	smart_str_appendl_ex(dest, src, strlen(src), persistent);
-}
-static zend_always_inline void smart_str_appends(smart_str *dest, const char *src)
-{
-	smart_str_appendl_ex(dest, src, strlen(src), false);
-}
-static zend_always_inline void smart_str_append(smart_str *dest, const zend_string *src)
-{
-	smart_str_append_ex(dest, src, false);
-}
-static zend_always_inline void smart_str_appendc(smart_str *dest, char ch)
-{
-	smart_str_appendc_ex(dest, ch, false);
-}
-static zend_always_inline void smart_str_append_smart_str(smart_str *dest, const smart_str *src)
-{
-	smart_str_append_smart_str_ex(dest, src, false);
-}
-
 static zend_always_inline void smart_str_setl(smart_str *dest, const char *src, size_t len) {
 	smart_str_free(dest);
 	smart_str_appendl(dest, src, len);
 }
 
-static zend_always_inline void smart_str_sets(smart_str *dest, const char *src)
-{
-	smart_str_setl(dest, src, strlen(src));
-}
 #endif

Modified: trunk/MgDev/Oem/php/include/Zend/zend_smart_str_public.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_smart_str_public.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_smart_str_public.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -18,7 +18,6 @@
 #define ZEND_SMART_STR_PUBLIC_H
 
 typedef struct {
-	/** See smart_str_extract() */
 	zend_string *s;
 	size_t a;
 } smart_str;

Modified: trunk/MgDev/Oem/php/include/Zend/zend_string.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_string.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_string.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -339,28 +339,23 @@
 	}
 }
 
-static zend_always_inline bool zend_string_equals_cstr(const zend_string *s1, const char *s2, size_t s2_length)
-{
-	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
-}
-
 #if defined(__GNUC__) && (defined(__i386__) || (defined(__x86_64__) && !defined(__ILP32__)))
 BEGIN_EXTERN_C()
-ZEND_API bool ZEND_FASTCALL zend_string_equal_val(const zend_string *s1, const zend_string *s2);
+ZEND_API bool ZEND_FASTCALL zend_string_equal_val(zend_string *s1, zend_string *s2);
 END_EXTERN_C()
 #else
-static zend_always_inline bool zend_string_equal_val(const zend_string *s1, const zend_string *s2)
+static zend_always_inline bool zend_string_equal_val(zend_string *s1, zend_string *s2)
 {
 	return !memcmp(ZSTR_VAL(s1), ZSTR_VAL(s2), ZSTR_LEN(s1));
 }
 #endif
 
-static zend_always_inline bool zend_string_equal_content(const zend_string *s1, const zend_string *s2)
+static zend_always_inline bool zend_string_equal_content(zend_string *s1, zend_string *s2)
 {
 	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
 }
 
-static zend_always_inline bool zend_string_equals(const zend_string *s1, const zend_string *s2)
+static zend_always_inline bool zend_string_equals(zend_string *s1, zend_string *s2)
 {
 	return s1 == s2 || zend_string_equal_content(s1, s2);
 }
@@ -372,21 +367,8 @@
 	(ZSTR_LEN(str) == sizeof(c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
 
 #define zend_string_equals_literal(str, literal) \
-	zend_string_equals_cstr(str, literal, strlen(literal))
+	(ZSTR_LEN(str) == sizeof(literal)-1 && !memcmp(ZSTR_VAL(str), literal, sizeof(literal) - 1))
 
-static zend_always_inline bool zend_string_starts_with_cstr(const zend_string *str, const char *prefix, size_t prefix_length)
-{
-	return ZSTR_LEN(str) >= prefix_length && !memcmp(ZSTR_VAL(str), prefix, prefix_length);
-}
-
-static zend_always_inline bool zend_string_starts_with(const zend_string *str, const zend_string *prefix)
-{
-	return zend_string_starts_with_cstr(str, ZSTR_VAL(prefix), ZSTR_LEN(prefix));
-}
-
-#define zend_string_starts_with_literal(str, prefix) \
-	zend_string_starts_with_cstr(str, prefix, strlen(prefix))
-
 /*
  * DJBX33A (Daniel J. Bernstein, Times 33 with Addition)
  *
@@ -447,25 +429,25 @@
 			((chunk >> (8 * 7)) & 0xff);
 # else
 		hash =
-			hash   * Z_L(33 * 33 * 33 * 33) +
-			str[0] * Z_L(33 * 33 * 33) +
-			str[1] * Z_L(33 * 33) +
-			str[2] * Z_L(33) +
+			hash   * 33 * 33 * 33 * 33 +
+			str[0] * 33 * 33 * 33 +
+			str[1] * 33 * 33 +
+			str[2] * 33 +
 			str[3];
 		hash =
-			hash   * Z_L(33 * 33 * 33 * 33) +
-			str[4] * Z_L(33 * 33 * 33) +
-			str[5] * Z_L(33 * 33) +
-			str[6] * Z_L(33) +
+			hash   * 33 * 33 * 33 * 33 +
+			str[4] * 33 * 33 * 33 +
+			str[5] * 33 * 33 +
+			str[6] * 33 +
 			str[7];
 # endif
 	}
 	if (len >= 4) {
 		hash =
-			hash   * Z_L(33 * 33 * 33 * 33) +
-			str[0] * Z_L(33 * 33 * 33) +
-			str[1] * Z_L(33 * 33) +
-			str[2] * Z_L(33) +
+			hash   * 33 * 33 * 33 * 33 +
+			str[0] * 33 * 33 * 33 +
+			str[1] * 33 * 33 +
+			str[2] * 33 +
 			str[3];
 		len -= 4;
 		str += 4;
@@ -473,18 +455,18 @@
 	if (len >= 2) {
 		if (len > 2) {
 			hash =
-				hash   * Z_L(33 * 33 * 33) +
-				str[0] * Z_L(33 * 33) +
-				str[1] * Z_L(33) +
+				hash   * 33 * 33 * 33 +
+				str[0] * 33 * 33 +
+				str[1] * 33 +
 				str[2];
 		} else {
 			hash =
-				hash   * Z_L(33 * 33) +
-				str[0] * Z_L(33) +
+				hash   * 33 * 33 +
+				str[0] * 33 +
 				str[1];
 		}
 	} else if (len != 0) {
-		hash = hash * Z_L(33) + *str;
+		hash = hash * 33 + *str;
 	}
 #else
 	/* variant with the hash unrolled eight times */
@@ -578,10 +560,8 @@
 	_(ZEND_STR_VOID,                   "void") \
 	_(ZEND_STR_NEVER,                  "never") \
 	_(ZEND_STR_FALSE,                  "false") \
-	_(ZEND_STR_TRUE,                   "true") \
 	_(ZEND_STR_NULL_LOWERCASE,         "null") \
 	_(ZEND_STR_MIXED,                  "mixed") \
-	_(ZEND_STR_TRAVERSABLE,            "Traversable") \
 	_(ZEND_STR_SLEEP,                  "__sleep") \
 	_(ZEND_STR_WAKEUP,                 "__wakeup") \
 	_(ZEND_STR_CASES,                  "cases") \
@@ -591,8 +571,6 @@
 	_(ZEND_STR_AUTOGLOBAL_SERVER,      "_SERVER") \
 	_(ZEND_STR_AUTOGLOBAL_ENV,         "_ENV") \
 	_(ZEND_STR_AUTOGLOBAL_REQUEST,     "_REQUEST") \
-	_(ZEND_STR_COUNT,                  "count") \
-	_(ZEND_STR_SENSITIVEPARAMETER,     "SensitiveParameter") \
 
 
 typedef enum _zend_known_string_id {

Modified: trunk/MgDev/Oem/php/include/Zend/zend_type_info.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_type_info.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_type_info.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -38,6 +38,7 @@
 /* These are used in zend_type, but not for type inference.
  * They are allowed to overlap with types used during inference. */
 #define MAY_BE_CALLABLE             (1 << IS_CALLABLE)
+#define MAY_BE_ITERABLE             (1 << IS_ITERABLE)
 #define MAY_BE_VOID                 (1 << IS_VOID)
 #define MAY_BE_NEVER                (1 << IS_NEVER)
 #define MAY_BE_STATIC               (1 << IS_STATIC)

Modified: trunk/MgDev/Oem/php/include/Zend/zend_types.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_types.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_types.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -144,8 +144,7 @@
 #define _ZEND_TYPE_NAME_BIT (1u << 24)
 #define _ZEND_TYPE_LIST_BIT (1u << 22)
 #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT)
-/* For BC behaviour with iterable type */
-#define _ZEND_TYPE_ITERABLE_BIT (1u << 21)
+/* TODO: bit 21 is not used */
 /* Whether the type list is arena allocated */
 #define _ZEND_TYPE_ARENA_BIT (1u << 20)
 /* Whether the type list is an intersection type */
@@ -171,9 +170,6 @@
 #define ZEND_TYPE_HAS_LIST(t) \
 	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
 
-#define ZEND_TYPE_IS_ITERABLE_FALLBACK(t) \
-	((((t).type_mask) & _ZEND_TYPE_ITERABLE_BIT) != 0)
-
 #define ZEND_TYPE_IS_INTERSECTION(t) \
 	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
 
@@ -267,7 +263,7 @@
 	{ NULL, (_type_mask) }
 
 #define ZEND_TYPE_INIT_CODE(code, allow_null, extra_flags) \
-	ZEND_TYPE_INIT_MASK(((code) == _IS_BOOL ? MAY_BE_BOOL : ( (code) == IS_ITERABLE ? _ZEND_TYPE_ITERABLE_BIT : ((code) == IS_MIXED ? MAY_BE_ANY : (1 << (code))))) \
+	ZEND_TYPE_INIT_MASK(((code) == _IS_BOOL ? MAY_BE_BOOL : ((code) == IS_MIXED ? MAY_BE_ANY : (1 << (code)))) \
 		| ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags))
 
 #define ZEND_TYPE_INIT_PTR(ptr, type_kind, allow_null, extra_flags) \
@@ -280,9 +276,6 @@
 #define ZEND_TYPE_INIT_UNION(ptr, extra_flags) \
 	{ (void *) (ptr), (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_UNION_BIT) | (extra_flags) }
 
-#define ZEND_TYPE_INIT_INTERSECTION(ptr, extra_flags) \
-	{ (void *) (ptr), (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_INTERSECTION_BIT) | (extra_flags) }
-
 #define ZEND_TYPE_INIT_CLASS(class_name, allow_null, extra_flags) \
 	ZEND_TYPE_INIT_PTR(class_name, _ZEND_TYPE_NAME_BIT, allow_null, extra_flags)
 
@@ -378,11 +371,7 @@
 		uint32_t flags;
 	} u;
 	uint32_t          nTableMask;
-	union {
-		uint32_t     *arHash;   /* hash table (allocated above this pointer) */
-		Bucket       *arData;   /* array of hash buckets */
-		zval         *arPacked; /* packed array of zvals */
-	};
+	Bucket           *arData;
 	uint32_t          nNumUsed;
 	uint32_t          nNumOfElements;
 	uint32_t          nTableSize;
@@ -396,14 +385,14 @@
  * =====================
  *
  *                 +=============================+
- *                 | HT_HASH(ht, ht->nTableMask) |                   +=============================+
- *                 | ...                         |                   | HT_INVALID_IDX              |
- *                 | HT_HASH(ht, -1)             |                   | HT_INVALID_IDX              |
- *                 +-----------------------------+                   +-----------------------------+
- * ht->arData ---> | Bucket[0]                   | ht->arPacked ---> | ZVAL[0]                     |
- *                 | ...                         |                   | ...                         |
- *                 | Bucket[ht->nTableSize-1]    |                   | ZVAL[ht->nTableSize-1]      |
- *                 +=============================+                   +=============================+
+ *                 | HT_HASH(ht, ht->nTableMask) |
+ *                 | ...                         |
+ *                 | HT_HASH(ht, -1)             |
+ *                 +-----------------------------+
+ * ht->arData ---> | Bucket[0]                   |
+ *                 | ...                         |
+ *                 | Bucket[ht->nTableSize-1]    |
+ *                 +=============================+
  */
 
 #define HT_INVALID_IDX ((uint32_t) -1)
@@ -441,7 +430,7 @@
 #define HT_HASH_EX(data, idx) \
 	((uint32_t*)(data))[(int32_t)(idx)]
 #define HT_HASH(ht, idx) \
-	HT_HASH_EX((ht)->arHash, idx)
+	HT_HASH_EX((ht)->arData, idx)
 
 #define HT_SIZE_TO_MASK(nTableSize) \
 	((uint32_t)(-((nTableSize) + (nTableSize))))
@@ -455,14 +444,6 @@
 	HT_SIZE_EX((ht)->nTableSize, (ht)->nTableMask)
 #define HT_USED_SIZE(ht) \
 	(HT_HASH_SIZE((ht)->nTableMask) + ((size_t)(ht)->nNumUsed * sizeof(Bucket)))
-#define HT_PACKED_DATA_SIZE(nTableSize) \
-	((size_t)(nTableSize) * sizeof(zval))
-#define HT_PACKED_SIZE_EX(nTableSize, nTableMask) \
-	(HT_PACKED_DATA_SIZE((nTableSize)) + HT_HASH_SIZE((nTableMask)))
-#define HT_PACKED_SIZE(ht) \
-	HT_PACKED_SIZE_EX((ht)->nTableSize, (ht)->nTableMask)
-#define HT_PACKED_USED_SIZE(ht) \
-	(HT_HASH_SIZE((ht)->nTableMask) + ((size_t)(ht)->nNumUsed * sizeof(zval)))
 #ifdef __SSE2__
 # define HT_HASH_RESET(ht) do { \
 		char *p = (char*)&HT_HASH(ht, (ht)->nTableMask); \

Modified: trunk/MgDev/Oem/php/include/Zend/zend_vm.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_vm.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_vm.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -29,7 +29,6 @@
 ZEND_API const zend_op *zend_get_halt_op(void);
 ZEND_API int ZEND_FASTCALL zend_vm_call_opcode_handler(zend_execute_data *ex);
 ZEND_API int zend_vm_kind(void);
-ZEND_API bool zend_gcc_global_regs(void);
 
 void zend_vm_init(void);
 void zend_vm_dtor(void);

Modified: trunk/MgDev/Oem/php/include/Zend/zend_vm_def.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_vm_def.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_vm_def.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -405,7 +405,7 @@
 			}
 		} else if (OP1_TYPE != IS_CONST && OP1_TYPE != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
 				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
@@ -1093,7 +1093,7 @@
 
 	FREE_OP_DATA();
 	FREE_OP2();
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	/* assign_obj has two opcodes! */
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
@@ -1242,7 +1242,7 @@
 	}
 
 	FREE_OP2();
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
 
@@ -1273,7 +1273,7 @@
 	}
 
 	FREE_OP2();
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 }
 
@@ -1341,7 +1341,7 @@
 	} while (0);
 
 	FREE_OP2();
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 }
 
@@ -1413,7 +1413,7 @@
 	} while (0);
 
 	FREE_OP2();
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 }
 
@@ -1503,7 +1503,7 @@
 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
 	}
 
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 }
 
@@ -1555,7 +1555,7 @@
 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
 	}
 
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 }
 
@@ -1605,7 +1605,7 @@
 		increment_function(var_ptr);
 	} while (0);
 
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 }
 
@@ -1653,7 +1653,7 @@
 		decrement_function(var_ptr);
 	} while (0);
 
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 }
 
@@ -1837,7 +1837,7 @@
 
 	SAVE_OPLINE();
 
-	if (UNEXPECTED(zend_fetch_static_property_address(&prop, NULL, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, opline->extended_value OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
+	if (UNEXPECTED(zend_fetch_static_property_address(&prop, NULL, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, opline->extended_value & ZEND_FETCH_OBJ_FLAGS OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
 		ZEND_ASSERT(EG(exception) || (type == BP_VAR_IS));
 		prop = &EG(uninitialized_zval);
 	}
@@ -1998,9 +1998,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((OP1_TYPE & (IS_CONST|IS_TMP_VAR))) {
+        if ((OP1_TYPE & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_DISPATCH_TO_HELPER(zend_use_tmp_in_write_context_helper);
-		}
+        }
 		ZEND_VM_DISPATCH_TO_HANDLER(ZEND_FETCH_DIM_W);
 	} else {
 		if (OP2_TYPE == IS_UNUSED) {
@@ -2036,7 +2036,7 @@
 
 	if (OP1_TYPE == IS_CONST ||
 	    (OP1_TYPE != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
-		do {
+	    do {
 			if ((OP1_TYPE & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
 				container = Z_REFVAL_P(container);
 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
@@ -2083,10 +2083,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (!ZEND_VM_SPEC || (OP1_TYPE & (IS_TMP_VAR|IS_VAR)) != 0) {
 									ZEND_VM_C_GOTO(fetch_obj_r_copy);
@@ -2118,20 +2119,10 @@
 			}
 		}
 
-#if ZEND_DEBUG
-		/* For non-standard object handlers, verify a declared property type in debug builds.
-		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
-		zend_property_info *prop_info = NULL;
-		if (zobj->handlers->read_property != zend_std_read_property) {
-			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
-		}
-#endif
 		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
 #if ZEND_DEBUG
-		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
-				&& ZEND_TYPE_IS_SET(prop_info->type)) {
-			ZVAL_OPT_DEREF(retval);
-			zend_verify_property_type(prop_info, retval, /* strict */ true);
+		if (!EG(exception) && zobj->handlers->read_property != zend_std_read_property) {
+			zend_verify_internal_read_property_type(zobj, name, retval);
 		}
 #endif
 
@@ -2166,7 +2157,7 @@
 	zend_fetch_property_address(
 		result, container, OP1_TYPE, property, OP2_TYPE,
 		((OP2_TYPE == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
-		BP_VAR_W, opline->extended_value, 1 OPLINE_CC EXECUTE_DATA_CC);
+		BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC EXECUTE_DATA_CC);
 	FREE_OP2();
 	if (OP1_TYPE == IS_VAR) {
 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
@@ -2248,10 +2239,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (!ZEND_VM_SPEC || (OP1_TYPE & (IS_TMP_VAR|IS_VAR)) != 0) {
 									ZEND_VM_C_GOTO(fetch_obj_is_copy);
@@ -2434,7 +2426,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -2497,7 +2489,7 @@
 	FREE_OP_DATA();
 ZEND_VM_C_LABEL(exit_assign_obj):
 	FREE_OP2();
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	/* assign_obj has two opcodes! */
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
@@ -2678,7 +2670,7 @@
 	if (OP2_TYPE != IS_UNUSED) {
 		FREE_OP2();
 	}
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	/* assign_dim has two opcodes! */
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
@@ -2697,7 +2689,7 @@
 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
 		ZVAL_COPY(EX_VAR(opline->result.var), value);
 	}
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	/* zend_assign_to_variable() always takes care of op2, never free it! */
 
 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -2732,8 +2724,8 @@
 		ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
 	}
 
-	FREE_OP2();
-	FREE_OP1();
+	FREE_OP2_VAR_PTR();
+	FREE_OP1_VAR_PTR();
 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 }
 
@@ -2767,9 +2759,9 @@
 		zend_assign_to_property_reference(container, OP1_TYPE, property, OP2_TYPE, value_ptr OPLINE_CC EXECUTE_DATA_CC);
 	}
 
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	FREE_OP2();
-	FREE_OP_DATA();
+	FREE_OP_DATA_VAR_PTR();
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
 
@@ -2804,7 +2796,7 @@
 		ZVAL_COPY(EX_VAR(opline->result.var), prop);
 	}
 
-	FREE_OP_DATA();
+	FREE_OP_DATA_VAR_PTR();
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
 
@@ -2873,24 +2865,18 @@
 		LOAD_NEXT_OPLINE();
 		ZEND_VM_LEAVE();
 	} else if (EXPECTED((call_info & ZEND_CALL_TOP) == 0)) {
-		if (EX(func)->op_array.last_var > 0) {
-			zend_detach_symbol_table(execute_data);
-			call_info |= ZEND_CALL_NEEDS_REATTACH;
-		}
+		zend_detach_symbol_table(execute_data);
 		zend_destroy_static_vars(&EX(func)->op_array);
 		destroy_op_array(&EX(func)->op_array);
 		efree_size(EX(func), sizeof(zend_op_array));
+#ifdef ZEND_PREFER_RELOAD
+		call_info = EX_CALL_INFO();
+#endif
 		old_execute_data = execute_data;
 		execute_data = EG(current_execute_data) = EX(prev_execute_data);
 		zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
 
-		if (call_info & ZEND_CALL_NEEDS_REATTACH) {
-			if (EX(func)->op_array.last_var > 0) {
-				zend_attach_symbol_table(execute_data);
-			} else {
-				ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_NEEDS_REATTACH);
-			}
-		}
+		zend_attach_symbol_table(execute_data);
 		if (UNEXPECTED(EG(exception) != NULL)) {
 			zend_rethrow_exception(execute_data);
 			HANDLE_EXCEPTION_LEAVE();
@@ -2921,25 +2907,16 @@
 		} else /* if (call_kind == ZEND_CALL_TOP_CODE) */ {
 			zend_array *symbol_table = EX(symbol_table);
 
-			if (EX(func)->op_array.last_var > 0) {
-				zend_detach_symbol_table(execute_data);
-				call_info |= ZEND_CALL_NEEDS_REATTACH;
-			}
-			if (call_info & ZEND_CALL_NEEDS_REATTACH) {
-				old_execute_data = EX(prev_execute_data);
-				while (old_execute_data) {
-					if (old_execute_data->func && (ZEND_CALL_INFO(old_execute_data) & ZEND_CALL_HAS_SYMBOL_TABLE)) {
-						if (old_execute_data->symbol_table == symbol_table) {
-							if (old_execute_data->func->op_array.last_var > 0) {
-								zend_attach_symbol_table(old_execute_data);
-							} else {
-								ZEND_ADD_CALL_FLAG(old_execute_data, ZEND_CALL_NEEDS_REATTACH);
-							}
-						}
-						break;
+			zend_detach_symbol_table(execute_data);
+			old_execute_data = EX(prev_execute_data);
+			while (old_execute_data) {
+				if (old_execute_data->func && (ZEND_CALL_INFO(old_execute_data) & ZEND_CALL_HAS_SYMBOL_TABLE)) {
+					if (old_execute_data->symbol_table == symbol_table) {
+						zend_attach_symbol_table(old_execute_data);
 					}
-					old_execute_data = old_execute_data->prev_execute_data;
+					break;
 				}
+				old_execute_data = old_execute_data->prev_execute_data;
 			}
 			EG(current_execute_data) = EX(prev_execute_data);
 			ZEND_VM_RETURN();
@@ -3022,6 +2999,41 @@
 	ZEND_VM_JMP(opline);
 }
 
+ZEND_VM_HANDLER(45, ZEND_JMPZNZ, CONST|TMPVAR|CV, JMP_ADDR, JMP_ADDR)
+{
+	USE_OPLINE
+	zval *val;
+	zend_uchar op1_type;
+
+	val = GET_OP1_ZVAL_PTR_UNDEF(BP_VAR_R);
+
+	if (EXPECTED(Z_TYPE_INFO_P(val) == IS_TRUE)) {
+		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
+		ZEND_VM_CONTINUE();
+	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
+		if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
+			SAVE_OPLINE();
+			ZVAL_UNDEFINED_OP1();
+			if (UNEXPECTED(EG(exception))) {
+				HANDLE_EXCEPTION();
+			}
+		}
+		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
+	}
+
+	SAVE_OPLINE();
+	op1_type = OP1_TYPE;
+	if (i_zend_is_true(val)) {
+		opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value);
+	} else {
+		opline = OP_JMP_ADDR(opline, opline->op2);
+	}
+	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
+		zval_ptr_dtor_nogc(val);
+	}
+	ZEND_VM_JMP(opline);
+}
+
 ZEND_VM_COLD_CONST_HANDLER(46, ZEND_JMPZ_EX, CONST|TMPVAR|CV, JMP_ADDR)
 {
 	USE_OPLINE
@@ -3162,7 +3174,7 @@
 			}
 		} else if (OP1_TYPE != IS_CONST && OP1_TYPE != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
@@ -3504,9 +3516,9 @@
 
 	if (OP2_TYPE == IS_CONST &&
 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
-		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
+	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
 	} else {
-		zend_object *orig_obj = obj;
+	    zend_object *orig_obj = obj;
 
 		if (OP2_TYPE == IS_CONST) {
 			function_name = GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R);
@@ -3892,7 +3904,9 @@
 	if (UNEXPECTED(fbc == NULL)) {
 		fname = (zval*)RT_CONSTANT(opline, opline->op2);
 		func = zend_hash_find_known_hash(EG(function_table), Z_STR_P(fname));
-		ZEND_ASSERT(func != NULL && "Function existence must be checked at compile time");
+		if (UNEXPECTED(func == NULL)) {
+			ZEND_VM_DISPATCH_TO_HELPER(zend_undefined_function_helper);
+		}
 		fbc = Z_FUNC_P(func);
 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
 			init_func_run_time_cache(&fbc->op_array);
@@ -3909,7 +3923,7 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
-ZEND_VM_HOT_HANDLER(129, ZEND_DO_ICALL, ANY, ANY, SPEC(RETVAL,OBSERVER))
+ZEND_VM_HOT_HANDLER(129, ZEND_DO_ICALL, ANY, ANY, SPEC(RETVAL))
 {
 	USE_OPLINE
 	zend_execute_data *call = EX(call);
@@ -3930,7 +3944,6 @@
 	ret = RETURN_VALUE_USED(opline) ? EX_VAR(opline->result.var) : &retval;
 	ZVAL_NULL(ret);
 
-	ZEND_OBSERVER_FCALL_BEGIN(call);
 	fbc->internal_function.handler(call, ret);
 
 #if ZEND_DEBUG
@@ -3945,7 +3958,6 @@
 		zend_verify_internal_func_info(call->func, ret);
 	}
 #endif
-	ZEND_OBSERVER_FCALL_END(call, EG(exception) ? NULL : ret);
 
 	EG(current_execute_data) = execute_data;
 	zend_vm_stack_free_args(call);
@@ -4051,7 +4063,6 @@
 		ret = RETURN_VALUE_USED(opline) ? EX_VAR(opline->result.var) : &retval;
 		ZVAL_NULL(ret);
 
-		ZEND_OBSERVER_FCALL_BEGIN(call);
 		fbc->internal_function.handler(call, ret);
 
 #if ZEND_DEBUG
@@ -4066,7 +4077,6 @@
 			zend_verify_internal_func_info(call->func, ret);
 		}
 #endif
-		ZEND_OBSERVER_FCALL_END(call, EG(exception) ? NULL : ret);
 
 		EG(current_execute_data) = execute_data;
 
@@ -4158,7 +4168,6 @@
 		ret = RETURN_VALUE_USED(opline) ? EX_VAR(opline->result.var) : &retval;
 		ZVAL_NULL(ret);
 
-		ZEND_OBSERVER_FCALL_BEGIN(call);
 		if (!zend_execute_internal) {
 			/* saves one function call if zend_execute_internal is not used */
 			fbc->internal_function.handler(call, ret);
@@ -4167,7 +4176,7 @@
 		}
 
 #if ZEND_DEBUG
-		if (!EG(exception) && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) {
+		if (!EG(exception) && call->func) {
 			if (should_throw) {
 				zend_internal_call_arginfo_violation(call->func);
 			}
@@ -4178,7 +4187,6 @@
 			zend_verify_internal_func_info(call->func, ret);
 		}
 #endif
-		ZEND_OBSERVER_FCALL_END(call, EG(exception) ? NULL : ret);
 
 		EG(current_execute_data) = execute_data;
 
@@ -4403,7 +4411,7 @@
 				if (return_value) {
 					ZVAL_NEW_REF(return_value, retval_ptr);
 				} else {
-					FREE_OP1();
+					FREE_OP1_VAR_PTR();
 				}
 				break;
 			}
@@ -4418,7 +4426,7 @@
 			ZVAL_REF(return_value, Z_REF_P(retval_ptr));
 		}
 
-		FREE_OP1();
+		FREE_OP1_VAR_PTR();
 	} while (0);
 
 	ZEND_OBSERVER_FCALL_END(execute_data, return_value);
@@ -4884,7 +4892,7 @@
 	}
 	ZVAL_REF(arg, Z_REF_P(varptr));
 
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	ZEND_VM_NEXT_OPCODE();
 }
 
@@ -4921,7 +4929,7 @@
 		}
 		ZVAL_REF(arg, Z_REF_P(varptr));
 
-		FREE_OP1();
+		FREE_OP1_VAR_PTR();
 		ZEND_VM_NEXT_OPCODE();
 	}
 
@@ -5014,7 +5022,7 @@
 		}
 		ZVAL_REF(arg, Z_REF_P(varptr));
 
-		FREE_OP1();
+		FREE_OP1_VAR_PTR();
 		ZEND_VM_NEXT_OPCODE();
 	}
 
@@ -5589,7 +5597,7 @@
 		zend_arg_info *arg_info = &EX(func)->common.arg_info[EX(func)->common.num_args];
 		if (ZEND_TYPE_IS_SET(arg_info->type)) {
 			SEPARATE_ARRAY(params);
-			ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(EX(extra_named_params), name, param) {
+			ZEND_HASH_FOREACH_STR_KEY_VAL(EX(extra_named_params), name, param) {
 				if (UNEXPECTED(!zend_verify_variadic_arg_type(EX(func), arg_info, arg_num, param, CACHE_ADDR(opline->extended_value)))) {
 					HANDLE_EXCEPTION();
 				}
@@ -5601,7 +5609,7 @@
 			ZVAL_ARR(params, EX(extra_named_params));
 		} else {
 			SEPARATE_ARRAY(params);
-			ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(EX(extra_named_params), name, param) {
+			ZEND_HASH_FOREACH_STR_KEY_VAL(EX(extra_named_params), name, param) {
 				Z_TRY_ADDREF_P(param);
 				zend_hash_add_new(Z_ARRVAL_P(params), name, param);
 			} ZEND_HASH_FOREACH_END();
@@ -5791,7 +5799,7 @@
 	do {
 		if (OP1_TYPE == IS_CONST ||
 		    (OP1_TYPE != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
-			if ((OP1_TYPE & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
+		    if ((OP1_TYPE & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
 				obj = Z_REFVAL_P(obj);
 				if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
 					break;
@@ -5904,21 +5912,7 @@
 				ZVAL_UNDEF(EX_VAR(opline->result.var));
 				HANDLE_EXCEPTION();
 			}
-
-			if (ce->ce_flags & ZEND_ACC_TRAIT) {
-				zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(ce->name), Z_STRVAL_P(RT_CONSTANT(opline, opline->op2)));
-				ZVAL_UNDEF(EX_VAR(opline->result.var));
-				HANDLE_EXCEPTION();
-			}
-
 			value = &c->value;
-			// Enums require loading of all class constants to build the backed enum table
-			if (ce->ce_flags & ZEND_ACC_ENUM && ce->enum_backing_type != IS_UNDEF && ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
-				if (UNEXPECTED(zend_update_class_constants(ce) == FAILURE)) {
-					ZVAL_UNDEF(EX_VAR(opline->result.var));
-					HANDLE_EXCEPTION();
-				}
-			}
 			if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
 				zval_update_constant_ex(value, c->ce);
 				if (UNEXPECTED(EG(exception) != NULL)) {
@@ -5954,7 +5948,7 @@
 		} else {
 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
 		}
-		FREE_OP1();
+		FREE_OP1_VAR_PTR();
 	} else {
 		expr_ptr = GET_OP1_ZVAL_PTR(BP_VAR_R);
 		if (OP1_TYPE == IS_TMP_VAR) {
@@ -6291,25 +6285,10 @@
 		if (RETURN_VALUE_USED(opline)) {
 			ZVAL_TRUE(EX_VAR(opline->result.var));
 		}
-	} else if (UNEXPECTED(new_op_array == NULL)) {
-		if (RETURN_VALUE_USED(opline)) {
-			ZVAL_FALSE(EX_VAR(opline->result.var));
-		}
-	} else if (new_op_array->last == 1
-			&& new_op_array->opcodes[0].opcode == ZEND_RETURN
-			&& new_op_array->opcodes[0].op1_type == IS_CONST
-			&& EXPECTED(zend_execute_ex == execute_ex)) {
-		if (RETURN_VALUE_USED(opline)) {
-			const zend_op *op = new_op_array->opcodes;
-
-			ZVAL_COPY(EX_VAR(opline->result.var), RT_CONSTANT(op, op->op1));
-		}
-		zend_destroy_static_vars(new_op_array);
-		destroy_op_array(new_op_array);
-		efree_size(new_op_array, sizeof(zend_op_array));
-	} else {
+	} else if (EXPECTED(new_op_array != NULL)) {
 		zval *return_value = NULL;
 		zend_execute_data *call;
+
 		if (RETURN_VALUE_USED(opline)) {
 			return_value = EX_VAR(opline->result.var);
 		}
@@ -6317,7 +6296,7 @@
 		new_op_array->scope = EX(func)->op_array.scope;
 
 		call = zend_vm_stack_push_call_frame(
-			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
+		    (Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
 			(zend_function*)new_op_array, 0,
 			Z_PTR(EX(This)));
 
@@ -6348,6 +6327,8 @@
 			UNDEF_RESULT();
 			HANDLE_EXCEPTION();
 		}
+	} else if (RETURN_VALUE_USED(opline)) {
+		ZVAL_FALSE(EX_VAR(opline->result.var));
 	}
 	FREE_OP1();
 	ZEND_VM_NEXT_OPCODE();
@@ -6553,7 +6534,7 @@
 	} while (0);
 
 	FREE_OP2();
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 }
 
@@ -6598,7 +6579,7 @@
 	} while (0);
 
 	FREE_OP2();
-	FREE_OP1();
+	FREE_OP1_VAR_PTR();
 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 }
 
@@ -6707,7 +6688,9 @@
 		}
 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
 
-		FREE_OP1_IF_VAR();
+		if (OP1_TYPE == IS_VAR) {
+			FREE_OP1_VAR_PTR();
+		}
 		ZEND_VM_NEXT_OPCODE();
 	} else if (OP1_TYPE != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
@@ -6734,16 +6717,21 @@
 			properties = Z_OBJPROP_P(array_ptr);
 			if (zend_hash_num_elements(properties) == 0) {
 				Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t) -1;
-				FREE_OP1_IF_VAR();
+				FREE_OP1_VAR_PTR();
 				ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
 			}
 
 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(properties, 0);
-			FREE_OP1_IF_VAR();
+			FREE_OP1_VAR_PTR();
 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 		} else {
 			bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
-			FREE_OP1();
+
+			if (OP1_TYPE == IS_VAR) {
+				FREE_OP1_VAR_PTR();
+			} else {
+				FREE_OP1();
+			}
 			if (UNEXPECTED(EG(exception))) {
 				HANDLE_EXCEPTION();
 			} else if (is_empty) {
@@ -6756,7 +6744,11 @@
 		zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_zval_type_name(array_ptr));
 		ZVAL_UNDEF(EX_VAR(opline->result.var));
 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
-		FREE_OP1();
+		if (OP1_TYPE == IS_VAR) {
+			FREE_OP1_VAR_PTR();
+		} else {
+			FREE_OP1();
+		}
 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
 	}
 }
@@ -6887,6 +6879,7 @@
 	uint32_t value_type;
 	HashTable *fe_ht;
 	HashPosition pos;
+	Bucket *p;
 
 	array = EX_VAR(opline->op1.var);
 	if (UNEXPECTED(Z_TYPE_P(array) != IS_ARRAY)) {
@@ -6894,54 +6887,31 @@
 	}
 	fe_ht = Z_ARRVAL_P(array);
 	pos = Z_FE_POS_P(array);
-	if (HT_IS_PACKED(fe_ht)) {
-		value = fe_ht->arPacked + pos;
-		while (1) {
-			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-				/* reached end of iteration */
-				ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
-				ZEND_VM_CONTINUE();
-			}
-			value_type = Z_TYPE_INFO_P(value);
-			ZEND_ASSERT(value_type != IS_INDIRECT);
-			if (EXPECTED(value_type != IS_UNDEF)) {
-				break;
-			}
-			pos++;
-			value++;
+	p = fe_ht->arData + pos;
+	while (1) {
+		if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
+			/* reached end of iteration */
+			ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
+			ZEND_VM_CONTINUE();
 		}
-		Z_FE_POS_P(array) = pos + 1;
-		if (RETURN_VALUE_USED(opline)) {
-			ZVAL_LONG(EX_VAR(opline->result.var), pos);
+		pos++;
+		value = &p->val;
+		value_type = Z_TYPE_INFO_P(value);
+		ZEND_ASSERT(value_type != IS_INDIRECT);
+		if (EXPECTED(value_type != IS_UNDEF)) {
+			break;
 		}
-	} else {
-		Bucket *p;
-
-		p = fe_ht->arData + pos;
-		while (1) {
-			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-				/* reached end of iteration */
-				ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
-				ZEND_VM_CONTINUE();
-			}
-			pos++;
-			value = &p->val;
-			value_type = Z_TYPE_INFO_P(value);
-			ZEND_ASSERT(value_type != IS_INDIRECT);
-			if (EXPECTED(value_type != IS_UNDEF)) {
-				break;
-			}
-			p++;
+		p++;
+	}
+	Z_FE_POS_P(array) = pos;
+	if (RETURN_VALUE_USED(opline)) {
+		if (!p->key) {
+			ZVAL_LONG(EX_VAR(opline->result.var), p->h);
+		} else {
+			ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
 		}
-		Z_FE_POS_P(array) = pos;
-		if (RETURN_VALUE_USED(opline)) {
-			if (!p->key) {
-				ZVAL_LONG(EX_VAR(opline->result.var), p->h);
-			} else {
-				ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
-			}
-		}
 	}
+
 	if (EXPECTED(OP2_TYPE == IS_CV)) {
 		zval *variable_ptr = EX_VAR(opline->op2.var);
 		SAVE_OPLINE();
@@ -6976,49 +6946,28 @@
 	if (EXPECTED(Z_TYPE_P(array) == IS_ARRAY)) {
 		pos = zend_hash_iterator_pos_ex(Z_FE_ITER_P(EX_VAR(opline->op1.var)), array);
 		fe_ht = Z_ARRVAL_P(array);
-		if (HT_IS_PACKED(fe_ht)) {
-			value = fe_ht->arPacked + pos;
-			while (1) {
-				if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-					/* reached end of iteration */
-					ZEND_VM_C_GOTO(fe_fetch_w_exit);
-				}
-				value_type = Z_TYPE_INFO_P(value);
-				ZEND_ASSERT(value_type != IS_INDIRECT);
-				if (EXPECTED(value_type != IS_UNDEF)) {
-					break;
-				}
-				pos++;
-				value++;
+		p = fe_ht->arData + pos;
+		while (1) {
+			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
+				/* reached end of iteration */
+				ZEND_VM_C_GOTO(fe_fetch_w_exit);
 			}
-			EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos + 1;
-			if (RETURN_VALUE_USED(opline)) {
-				ZVAL_LONG(EX_VAR(opline->result.var), pos);
+			pos++;
+			value = &p->val;
+			value_type = Z_TYPE_INFO_P(value);
+			ZEND_ASSERT(value_type != IS_INDIRECT);
+			if (EXPECTED(value_type != IS_UNDEF)) {
+				break;
 			}
-		} else {
-			p = fe_ht->arData + pos;
-			while (1) {
-				if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-					/* reached end of iteration */
-					ZEND_VM_C_GOTO(fe_fetch_w_exit);
-				}
-				pos++;
-				value = &p->val;
-				value_type = Z_TYPE_INFO_P(value);
-				ZEND_ASSERT(value_type != IS_INDIRECT);
-				if (EXPECTED(value_type != IS_UNDEF)) {
-					break;
-				}
-				p++;
+			p++;
+		}
+		EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos;
+		if (RETURN_VALUE_USED(opline)) {
+			if (!p->key) {
+				ZVAL_LONG(EX_VAR(opline->result.var), p->h);
+			} else {
+				ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
 			}
-			EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos;
-			if (RETURN_VALUE_USED(opline)) {
-				if (!p->key) {
-					ZVAL_LONG(EX_VAR(opline->result.var), p->h);
-				} else {
-					ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
-				}
-			}
 		}
 	} else if (EXPECTED(Z_TYPE_P(array) == IS_OBJECT)) {
 		zend_object_iterator *iter;
@@ -7598,13 +7547,9 @@
 	}
 
 	result = EX_VAR(opline->result.var);
-	uint32_t short_circuiting_type = opline->extended_value & ZEND_SHORT_CIRCUITING_CHAIN_MASK;
-	if (EXPECTED(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EXPR)) {
+	if (EXPECTED(opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_EXPR)) {
 		ZVAL_NULL(result);
-		if (OP1_TYPE == IS_CV 
-			&& UNEXPECTED(Z_TYPE_P(val) == IS_UNDEF)
-			&& (opline->extended_value & ZEND_JMP_NULL_BP_VAR_IS) == 0
-		) {
+		if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_P(val) == IS_UNDEF)) {
 			SAVE_OPLINE();
 			ZVAL_UNDEFINED_OP1();
 			if (UNEXPECTED(EG(exception) != NULL)) {
@@ -7611,10 +7556,10 @@
 				HANDLE_EXCEPTION();
 			}
 		}
-	} else if (short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_ISSET) {
+	} else if (opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_ISSET) {
 		ZVAL_FALSE(result);
 	} else {
-		ZEND_ASSERT(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EMPTY);
+		ZEND_ASSERT(opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_EMPTY);
 		ZVAL_TRUE(result);
 	}
 
@@ -7768,9 +7713,7 @@
 		EG(ticks_count) = 0;
 		if (zend_ticks_function) {
 			SAVE_OPLINE();
-			zend_fiber_switch_block();
 			zend_ticks_function(opline->extended_value);
-			zend_fiber_switch_unblock();
 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 		}
 	}
@@ -7879,12 +7822,7 @@
 			/* Chain potential exception from wrapping finally block */
 			if (Z_OBJ_P(fast_call)) {
 				if (ex) {
-					if (zend_is_unwind_exit(ex) || zend_is_graceful_exit(ex)) {
-						/* discard the previously thrown exception */
-						OBJ_RELEASE(Z_OBJ_P(fast_call));
-					} else {
-						zend_exception_set_previous(ex, Z_OBJ_P(fast_call));
-					}
+					zend_exception_set_previous(ex, Z_OBJ_P(fast_call));
 				} else {
 					ex = EG(exception) = Z_OBJ_P(fast_call);
 				}
@@ -8150,7 +8088,7 @@
 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
 				} while (0);
 
-				FREE_OP1();
+				FREE_OP1_VAR_PTR();
 			}
 		} else {
 			zval *value = GET_OP1_ZVAL_PTR(BP_VAR_R);
@@ -8163,7 +8101,7 @@
 				}
 			} else if (OP1_TYPE == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((OP1_TYPE & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((OP1_TYPE & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 				FREE_OP1_IF_VAR();
 			} else {
@@ -8397,10 +8335,11 @@
 	if (EXPECTED(idx < EG(symbol_table).nNumUsed * sizeof(Bucket))) {
 		Bucket *p = (Bucket*)((char*)EG(symbol_table).arData + idx);
 
-		if (EXPECTED(p->key == varname) ||
-		    (EXPECTED(p->h == ZSTR_H(varname)) &&
-		     EXPECTED(p->key != NULL) &&
-		     EXPECTED(zend_string_equal_content(p->key, varname)))) {
+		if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+	        (EXPECTED(p->key == varname) ||
+	         (EXPECTED(p->h == ZSTR_H(varname)) &&
+	          EXPECTED(p->key != NULL) &&
+	          EXPECTED(zend_string_equal_content(p->key, varname))))) {
 
 			value = (zval*)p; /* value = &p->val; */
 			ZEND_VM_C_GOTO(check_indirect);
@@ -8746,7 +8685,6 @@
 		}
 
 		ZVAL_NULL(ret);
-		ZEND_OBSERVER_FCALL_BEGIN(call);
 		if (!zend_execute_internal) {
 			/* saves one function call if zend_execute_internal is not used */
 			fbc->internal_function.handler(call, ret);
@@ -8766,7 +8704,6 @@
 			zend_verify_internal_func_info(call->func, ret);
 		}
 #endif
-		ZEND_OBSERVER_FCALL_END(call, EG(exception) ? NULL : ret);
 
 		EG(current_execute_data) = call->prev_execute_data;
 
@@ -9132,7 +9069,7 @@
 		}
 
 		SAVE_OPLINE();
-		ZEND_HASH_MAP_FOREACH_STR_KEY(ht, key) {
+		ZEND_HASH_FOREACH_STR_KEY(ht, key) {
 			ZVAL_STR(&key_tmp, key);
 			if (zend_compare(op1, &key_tmp) == 0) {
 				FREE_OP1();
@@ -9175,8 +9112,7 @@
 			if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) {
 				zval retval;
 
-				zend_function *count_fn = zend_hash_find_ptr(&zobj->ce->function_table, ZSTR_KNOWN(ZEND_STR_COUNT));
-				zend_call_known_instance_method_with_0_params(count_fn, zobj, &retval);
+				zend_call_method_with_0_params(zobj, NULL, NULL, "count", &retval);
 				count = zval_get_long(&retval);
 				zval_ptr_dtor(&retval);
 				break;
@@ -9881,58 +9817,35 @@
 	uint32_t value_type;
 	HashTable *fe_ht;
 	HashPosition pos;
+	Bucket *p;
 
 	array = EX_VAR(opline->op1.var);
 	SAVE_OPLINE();
 	fe_ht = Z_ARRVAL_P(array);
 	pos = Z_FE_POS_P(array);
-	if (HT_IS_PACKED(fe_ht)) {
-		value = fe_ht->arPacked + pos;
-		while (1) {
-			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-				/* reached end of iteration */
-				ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
-				ZEND_VM_CONTINUE();
-			}
-			value_type = Z_TYPE_INFO_P(value);
-			ZEND_ASSERT(value_type != IS_INDIRECT);
-			if (EXPECTED(value_type != IS_UNDEF)) {
-				break;
-			}
-			pos++;
-			value++;
+	p = fe_ht->arData + pos;
+	while (1) {
+		if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
+			/* reached end of iteration */
+			ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
+			ZEND_VM_CONTINUE();
 		}
-		Z_FE_POS_P(array) = pos + 1;
-		if (RETURN_VALUE_USED(opline)) {
-			ZVAL_LONG(EX_VAR(opline->result.var), pos);
+		pos++;
+		value = &p->val;
+		value_type = Z_TYPE_INFO_P(value);
+		ZEND_ASSERT(value_type != IS_INDIRECT);
+		if (EXPECTED(value_type != IS_UNDEF)) {
+			break;
 		}
-	} else {
-		Bucket *p;
-
-		p = fe_ht->arData + pos;
-		while (1) {
-			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-				/* reached end of iteration */
-				ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
-				ZEND_VM_CONTINUE();
-			}
-			pos++;
-			value = &p->val;
-			value_type = Z_TYPE_INFO_P(value);
-			ZEND_ASSERT(value_type != IS_INDIRECT);
-			if (EXPECTED(value_type != IS_UNDEF)) {
-				break;
-			}
-			p++;
+		p++;
+	}
+	Z_FE_POS_P(array) = pos;
+	if (RETURN_VALUE_USED(opline)) {
+		if (!p->key) {
+			ZVAL_LONG(EX_VAR(opline->result.var), p->h);
+		} else {
+			ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
 		}
-		Z_FE_POS_P(array) = pos;
-		if (RETURN_VALUE_USED(opline)) {
-			if (!p->key) {
-				ZVAL_LONG(EX_VAR(opline->result.var), p->h);
-			} else {
-				ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
-			}
-		}
 	}
 
 	variable_ptr = EX_VAR(opline->op2.var);
@@ -9944,9 +9857,9 @@
 
 ZEND_VM_HELPER(zend_interrupt_helper, ANY, ANY)
 {
-	zend_atomic_bool_store_ex(&EG(vm_interrupt), false);
+	EG(vm_interrupt) = 0;
 	SAVE_OPLINE();
-	if (zend_atomic_bool_load_ex(&EG(timed_out))) {
+	if (EG(timed_out)) {
 		zend_timeout();
 	} else if (zend_interrupt_function) {
 		zend_interrupt_function(execute_data);

Modified: trunk/MgDev/Oem/php/include/Zend/zend_vm_execute.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_vm_execute.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_vm_execute.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -846,7 +846,7 @@
 
 	SAVE_OPLINE();
 
-	if (UNEXPECTED(zend_fetch_static_property_address(&prop, NULL, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, opline->extended_value OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
+	if (UNEXPECTED(zend_fetch_static_property_address(&prop, NULL, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, opline->extended_value & ZEND_FETCH_OBJ_FLAGS OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
 		ZEND_ASSERT(EG(exception) || (type == BP_VAR_IS));
 		prop = &EG(uninitialized_zval);
 	}
@@ -1076,7 +1076,7 @@
 		ZVAL_COPY(EX_VAR(opline->result.var), prop);
 	}
 
-	FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
+	if ((opline+1)->op1_type == IS_VAR) {zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));};
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
 
@@ -1145,24 +1145,18 @@
 		LOAD_NEXT_OPLINE();
 		ZEND_VM_LEAVE();
 	} else if (EXPECTED((call_info & ZEND_CALL_TOP) == 0)) {
-		if (EX(func)->op_array.last_var > 0) {
-			zend_detach_symbol_table(execute_data);
-			call_info |= ZEND_CALL_NEEDS_REATTACH;
-		}
+		zend_detach_symbol_table(execute_data);
 		zend_destroy_static_vars(&EX(func)->op_array);
 		destroy_op_array(&EX(func)->op_array);
 		efree_size(EX(func), sizeof(zend_op_array));
+#ifdef ZEND_PREFER_RELOAD
+		call_info = EX_CALL_INFO();
+#endif
 		old_execute_data = execute_data;
 		execute_data = EG(current_execute_data) = EX(prev_execute_data);
 		zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
 
-		if (call_info & ZEND_CALL_NEEDS_REATTACH) {
-			if (EX(func)->op_array.last_var > 0) {
-				zend_attach_symbol_table(execute_data);
-			} else {
-				ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_NEEDS_REATTACH);
-			}
-		}
+		zend_attach_symbol_table(execute_data);
 		if (UNEXPECTED(EG(exception) != NULL)) {
 			zend_rethrow_exception(execute_data);
 			HANDLE_EXCEPTION_LEAVE();
@@ -1193,25 +1187,16 @@
 		} else /* if (call_kind == ZEND_CALL_TOP_CODE) */ {
 			zend_array *symbol_table = EX(symbol_table);
 
-			if (EX(func)->op_array.last_var > 0) {
-				zend_detach_symbol_table(execute_data);
-				call_info |= ZEND_CALL_NEEDS_REATTACH;
-			}
-			if (call_info & ZEND_CALL_NEEDS_REATTACH) {
-				old_execute_data = EX(prev_execute_data);
-				while (old_execute_data) {
-					if (old_execute_data->func && (ZEND_CALL_INFO(old_execute_data) & ZEND_CALL_HAS_SYMBOL_TABLE)) {
-						if (old_execute_data->symbol_table == symbol_table) {
-							if (old_execute_data->func->op_array.last_var > 0) {
-								zend_attach_symbol_table(old_execute_data);
-							} else {
-								ZEND_ADD_CALL_FLAG(old_execute_data, ZEND_CALL_NEEDS_REATTACH);
-							}
-						}
-						break;
+			zend_detach_symbol_table(execute_data);
+			old_execute_data = EX(prev_execute_data);
+			while (old_execute_data) {
+				if (old_execute_data->func && (ZEND_CALL_INFO(old_execute_data) & ZEND_CALL_HAS_SYMBOL_TABLE)) {
+					if (old_execute_data->symbol_table == symbol_table) {
+						zend_attach_symbol_table(old_execute_data);
 					}
-					old_execute_data = old_execute_data->prev_execute_data;
+					break;
 				}
+				old_execute_data = old_execute_data->prev_execute_data;
 			}
 			EG(current_execute_data) = EX(prev_execute_data);
 			ZEND_VM_RETURN();
@@ -1350,70 +1335,6 @@
 	ZEND_VM_CONTINUE();
 }
 
-static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_ICALL_SPEC_OBSERVER_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-	USE_OPLINE
-	zend_execute_data *call = EX(call);
-	zend_function *fbc = call->func;
-	zval *ret;
-	zval retval;
-
-	SAVE_OPLINE();
-	EX(call) = call->prev_execute_data;
-
-	call->prev_execute_data = execute_data;
-	EG(current_execute_data) = call;
-
-#if ZEND_DEBUG
-	bool should_throw = zend_internal_call_should_throw(fbc, call);
-#endif
-
-	ret = RETURN_VALUE_USED(opline) ? EX_VAR(opline->result.var) : &retval;
-	ZVAL_NULL(ret);
-
-	zend_observer_fcall_begin(call);
-	fbc->internal_function.handler(call, ret);
-
-#if ZEND_DEBUG
-	if (!EG(exception) && call->func) {
-		if (should_throw) {
-			zend_internal_call_arginfo_violation(call->func);
-		}
-		ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
-			zend_verify_internal_return_type(call->func, ret));
-		ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
-			? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
-		zend_verify_internal_func_info(call->func, ret);
-	}
-#endif
-	zend_observer_fcall_end(call, EG(exception) ? NULL : ret);
-
-	EG(current_execute_data) = execute_data;
-	zend_vm_stack_free_args(call);
-
-	uint32_t call_info = ZEND_CALL_INFO(call);
-	if (UNEXPECTED(call_info & (ZEND_CALL_HAS_EXTRA_NAMED_PARAMS|ZEND_CALL_ALLOCATED))) {
-		if (call_info & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
-			zend_free_extra_named_params(call->extra_named_params);
-		}
-		zend_vm_stack_free_call_frame_ex(call_info, call);
-	} else {
-		EG(vm_stack_top) = (zval*)call;
-	}
-
-	if (!RETURN_VALUE_USED(opline)) {
-		i_zval_ptr_dtor(ret);
-	}
-
-	if (UNEXPECTED(EG(exception) != NULL)) {
-		zend_rethrow_exception(execute_data);
-		HANDLE_EXCEPTION();
-	}
-
-	ZEND_VM_SET_OPCODE(opline + 1);
-	ZEND_VM_CONTINUE();
-}
-
 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	USE_OPLINE
@@ -1730,7 +1651,6 @@
 		ret = RETURN_VALUE_USED(opline) ? EX_VAR(opline->result.var) : &retval;
 		ZVAL_NULL(ret);
 
-		zend_observer_fcall_begin(call);
 		fbc->internal_function.handler(call, ret);
 
 #if ZEND_DEBUG
@@ -1745,7 +1665,6 @@
 			zend_verify_internal_func_info(call->func, ret);
 		}
 #endif
-		zend_observer_fcall_end(call, EG(exception) ? NULL : ret);
 
 		EG(current_execute_data) = execute_data;
 
@@ -1845,7 +1764,7 @@
 		}
 
 #if ZEND_DEBUG
-		if (!EG(exception) && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) {
+		if (!EG(exception) && call->func) {
 			if (should_throw) {
 				zend_internal_call_arginfo_violation(call->func);
 			}
@@ -1954,7 +1873,7 @@
 		}
 
 #if ZEND_DEBUG
-		if (!EG(exception) && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) {
+		if (!EG(exception) && call->func) {
 			if (should_throw) {
 				zend_internal_call_arginfo_violation(call->func);
 			}
@@ -2055,7 +1974,6 @@
 		ret = RETURN_VALUE_USED(opline) ? EX_VAR(opline->result.var) : &retval;
 		ZVAL_NULL(ret);
 
-		zend_observer_fcall_begin(call);
 		if (!zend_execute_internal) {
 			/* saves one function call if zend_execute_internal is not used */
 			fbc->internal_function.handler(call, ret);
@@ -2064,7 +1982,7 @@
 		}
 
 #if ZEND_DEBUG
-		if (!EG(exception) && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) {
+		if (!EG(exception) && call->func) {
 			if (should_throw) {
 				zend_internal_call_arginfo_violation(call->func);
 			}
@@ -2075,7 +1993,6 @@
 			zend_verify_internal_func_info(call->func, ret);
 		}
 #endif
-		zend_observer_fcall_end(call, EG(exception) ? NULL : ret);
 
 		EG(current_execute_data) = execute_data;
 
@@ -3065,9 +2982,7 @@
 		EG(ticks_count) = 0;
 		if (zend_ticks_function) {
 			SAVE_OPLINE();
-			zend_fiber_switch_block();
 			zend_ticks_function(opline->extended_value);
-			zend_fiber_switch_unblock();
 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 		}
 	}
@@ -3131,12 +3046,7 @@
 			/* Chain potential exception from wrapping finally block */
 			if (Z_OBJ_P(fast_call)) {
 				if (ex) {
-					if (zend_is_unwind_exit(ex) || zend_is_graceful_exit(ex)) {
-						/* discard the previously thrown exception */
-						OBJ_RELEASE(Z_OBJ_P(fast_call));
-					} else {
-						zend_exception_set_previous(ex, Z_OBJ_P(fast_call));
-					}
+					zend_exception_set_previous(ex, Z_OBJ_P(fast_call));
 				} else {
 					ex = EG(exception) = Z_OBJ_P(fast_call);
 				}
@@ -3431,7 +3341,6 @@
 		}
 
 		ZVAL_NULL(ret);
-
 		if (!zend_execute_internal) {
 			/* saves one function call if zend_execute_internal is not used */
 			fbc->internal_function.handler(call, ret);
@@ -3571,7 +3480,6 @@
 		}
 
 		ZVAL_NULL(ret);
-		zend_observer_fcall_begin(call);
 		if (!zend_execute_internal) {
 			/* saves one function call if zend_execute_internal is not used */
 			fbc->internal_function.handler(call, ret);
@@ -3591,7 +3499,6 @@
 			zend_verify_internal_func_info(call->func, ret);
 		}
 #endif
-		zend_observer_fcall_end(call, EG(exception) ? NULL : ret);
 
 		EG(current_execute_data) = call->prev_execute_data;
 
@@ -3633,9 +3540,9 @@
 
 static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
 {
-	zend_atomic_bool_store_ex(&EG(vm_interrupt), false);
+	EG(vm_interrupt) = 0;
 	SAVE_OPLINE();
-	if (zend_atomic_bool_load_ex(&EG(timed_out))) {
+	if (EG(timed_out)) {
 		zend_timeout();
 	} else if (zend_interrupt_function) {
 		zend_interrupt_function(execute_data);
@@ -3783,7 +3690,9 @@
 	if (UNEXPECTED(fbc == NULL)) {
 		fname = (zval*)RT_CONSTANT(opline, opline->op2);
 		func = zend_hash_find_known_hash(EG(function_table), Z_STR_P(fname));
-		ZEND_ASSERT(func != NULL && "Function existence must be checked at compile time");
+		if (UNEXPECTED(func == NULL)) {
+			ZEND_VM_TAIL_CALL(zend_undefined_function_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+		}
 		fbc = Z_FUNC_P(func);
 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
 			init_func_run_time_cache(&fbc->op_array);
@@ -3971,7 +3880,7 @@
 		zend_arg_info *arg_info = &EX(func)->common.arg_info[EX(func)->common.num_args];
 		if (ZEND_TYPE_IS_SET(arg_info->type)) {
 			SEPARATE_ARRAY(params);
-			ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(EX(extra_named_params), name, param) {
+			ZEND_HASH_FOREACH_STR_KEY_VAL(EX(extra_named_params), name, param) {
 				if (UNEXPECTED(!zend_verify_variadic_arg_type(EX(func), arg_info, arg_num, param, CACHE_ADDR(opline->extended_value)))) {
 					HANDLE_EXCEPTION();
 				}
@@ -3983,7 +3892,7 @@
 			ZVAL_ARR(params, EX(extra_named_params));
 		} else {
 			SEPARATE_ARRAY(params);
-			ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(EX(extra_named_params), name, param) {
+			ZEND_HASH_FOREACH_STR_KEY_VAL(EX(extra_named_params), name, param) {
 				Z_TRY_ADDREF_P(param);
 				zend_hash_add_new(Z_ARRVAL_P(params), name, param);
 			} ZEND_HASH_FOREACH_END();
@@ -4182,6 +4091,41 @@
 	ZEND_VM_JMP(opline);
 }
 
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	USE_OPLINE
+	zval *val;
+	zend_uchar op1_type;
+
+	val = RT_CONSTANT(opline, opline->op1);
+
+	if (EXPECTED(Z_TYPE_INFO_P(val) == IS_TRUE)) {
+		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
+		ZEND_VM_CONTINUE();
+	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
+		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
+			SAVE_OPLINE();
+			ZVAL_UNDEFINED_OP1();
+			if (UNEXPECTED(EG(exception))) {
+				HANDLE_EXCEPTION();
+			}
+		}
+		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
+	}
+
+	SAVE_OPLINE();
+	op1_type = IS_CONST;
+	if (i_zend_is_true(val)) {
+		opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value);
+	} else {
+		opline = OP_JMP_ADDR(opline, opline->op2);
+	}
+	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
+		zval_ptr_dtor_nogc(val);
+	}
+	ZEND_VM_JMP(opline);
+}
+
 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	USE_OPLINE
@@ -4514,7 +4458,7 @@
 				if (return_value) {
 					ZVAL_NEW_REF(return_value, retval_ptr);
 				} else {
-					FREE_OP(opline->op1_type, opline->op1.var);
+					if (opline->op1_type == IS_VAR) {zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));};
 				}
 				break;
 			}
@@ -4529,7 +4473,7 @@
 			ZVAL_REF(return_value, Z_REF_P(retval_ptr));
 		}
 
-		FREE_OP(opline->op1_type, opline->op1.var);
+		if (opline->op1_type == IS_VAR) {zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));};
 	} while (0);
 
 	zend_observer_fcall_end(execute_data, return_value);
@@ -4773,7 +4717,7 @@
 	do {
 		if (IS_CONST == IS_CONST ||
 		    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
-			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
+		    if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
 				obj = Z_REFVAL_P(obj);
 				if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
 					break;
@@ -4935,25 +4879,10 @@
 		if (RETURN_VALUE_USED(opline)) {
 			ZVAL_TRUE(EX_VAR(opline->result.var));
 		}
-	} else if (UNEXPECTED(new_op_array == NULL)) {
-		if (RETURN_VALUE_USED(opline)) {
-			ZVAL_FALSE(EX_VAR(opline->result.var));
-		}
-	} else if (new_op_array->last == 1
-			&& new_op_array->opcodes[0].opcode == ZEND_RETURN
-			&& new_op_array->opcodes[0].op1_type == IS_CONST
-			&& EXPECTED(zend_execute_ex == execute_ex)) {
-		if (RETURN_VALUE_USED(opline)) {
-			const zend_op *op = new_op_array->opcodes;
-
-			ZVAL_COPY(EX_VAR(opline->result.var), RT_CONSTANT(op, op->op1));
-		}
-		zend_destroy_static_vars(new_op_array);
-		destroy_op_array(new_op_array);
-		efree_size(new_op_array, sizeof(zend_op_array));
-	} else {
+	} else if (EXPECTED(new_op_array != NULL)) {
 		zval *return_value = NULL;
 		zend_execute_data *call;
+
 		if (RETURN_VALUE_USED(opline)) {
 			return_value = EX_VAR(opline->result.var);
 		}
@@ -4961,7 +4890,7 @@
 		new_op_array->scope = EX(func)->op_array.scope;
 
 		call = zend_vm_stack_push_call_frame(
-			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
+		    (Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
 			(zend_function*)new_op_array, 0,
 			Z_PTR(EX(This)));
 
@@ -4992,6 +4921,8 @@
 			UNDEF_RESULT();
 			HANDLE_EXCEPTION();
 		}
+	} else if (RETURN_VALUE_USED(opline)) {
+		ZVAL_FALSE(EX_VAR(opline->result.var));
 	}
 
 	ZEND_VM_NEXT_OPCODE();
@@ -5018,25 +4949,10 @@
 		if (RETURN_VALUE_USED(opline)) {
 			ZVAL_TRUE(EX_VAR(opline->result.var));
 		}
-	} else if (UNEXPECTED(new_op_array == NULL)) {
-		if (RETURN_VALUE_USED(opline)) {
-			ZVAL_FALSE(EX_VAR(opline->result.var));
-		}
-	} else if (new_op_array->last == 1
-			&& new_op_array->opcodes[0].opcode == ZEND_RETURN
-			&& new_op_array->opcodes[0].op1_type == IS_CONST
-			&& EXPECTED(zend_execute_ex == execute_ex)) {
-		if (RETURN_VALUE_USED(opline)) {
-			const zend_op *op = new_op_array->opcodes;
-
-			ZVAL_COPY(EX_VAR(opline->result.var), RT_CONSTANT(op, op->op1));
-		}
-		zend_destroy_static_vars(new_op_array);
-		destroy_op_array(new_op_array);
-		efree_size(new_op_array, sizeof(zend_op_array));
-	} else {
+	} else if (EXPECTED(new_op_array != NULL)) {
 		zval *return_value = NULL;
 		zend_execute_data *call;
+
 		if (RETURN_VALUE_USED(opline)) {
 			return_value = EX_VAR(opline->result.var);
 		}
@@ -5044,7 +4960,7 @@
 		new_op_array->scope = EX(func)->op_array.scope;
 
 		call = zend_vm_stack_push_call_frame(
-			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
+		    (Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
 			(zend_function*)new_op_array, 0,
 			Z_PTR(EX(This)));
 
@@ -5075,6 +4991,8 @@
 			UNDEF_RESULT();
 			HANDLE_EXCEPTION();
 		}
+	} else if (RETURN_VALUE_USED(opline)) {
+		ZVAL_FALSE(EX_VAR(opline->result.var));
 	}
 	FREE_OP(opline->op1_type, opline->op1.var);
 	ZEND_VM_NEXT_OPCODE();
@@ -5183,6 +5101,9 @@
 		}
 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
 
+		if (IS_CONST == IS_VAR) {
+
+		}
 		ZEND_VM_NEXT_OPCODE();
 	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
@@ -5219,6 +5140,11 @@
 		} else {
 			bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
 
+			if (IS_CONST == IS_VAR) {
+
+			} else {
+
+			}
 			if (UNEXPECTED(EG(exception))) {
 				HANDLE_EXCEPTION();
 			} else if (is_empty) {
@@ -5231,7 +5157,11 @@
 		zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_zval_type_name(array_ptr));
 		ZVAL_UNDEF(EX_VAR(opline->result.var));
 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
+		if (IS_CONST == IS_VAR) {
 
+		} else {
+
+		}
 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
 	}
 }
@@ -5344,13 +5274,9 @@
 	}
 
 	result = EX_VAR(opline->result.var);
-	uint32_t short_circuiting_type = opline->extended_value & ZEND_SHORT_CIRCUITING_CHAIN_MASK;
-	if (EXPECTED(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EXPR)) {
+	if (EXPECTED(opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_EXPR)) {
 		ZVAL_NULL(result);
-		if (IS_CONST == IS_CV
-			&& UNEXPECTED(Z_TYPE_P(val) == IS_UNDEF)
-			&& (opline->extended_value & ZEND_JMP_NULL_BP_VAR_IS) == 0
-		) {
+		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(val) == IS_UNDEF)) {
 			SAVE_OPLINE();
 			ZVAL_UNDEFINED_OP1();
 			if (UNEXPECTED(EG(exception) != NULL)) {
@@ -5357,10 +5283,10 @@
 				HANDLE_EXCEPTION();
 			}
 		}
-	} else if (short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_ISSET) {
+	} else if (opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_ISSET) {
 		ZVAL_FALSE(result);
 	} else {
-		ZEND_ASSERT(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EMPTY);
+		ZEND_ASSERT(opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_EMPTY);
 		ZVAL_TRUE(result);
 	}
 
@@ -6306,9 +6232,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if (IS_CONST == IS_UNUSED) {
@@ -6329,7 +6255,7 @@
 
 	if (IS_CONST == IS_CONST ||
 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
-		do {
+	    do {
 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
 				container = Z_REFVAL_P(container);
 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
@@ -6376,10 +6302,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_r_copy;
@@ -6411,20 +6338,10 @@
 			}
 		}
 
-#if ZEND_DEBUG
-		/* For non-standard object handlers, verify a declared property type in debug builds.
-		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
-		zend_property_info *prop_info = NULL;
-		if (zobj->handlers->read_property != zend_std_read_property) {
-			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
-		}
-#endif
 		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
 #if ZEND_DEBUG
-		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
-				&& ZEND_TYPE_IS_SET(prop_info->type)) {
-			ZVAL_OPT_DEREF(retval);
-			zend_verify_property_type(prop_info, retval, /* strict */ true);
+		if (!EG(exception) && zobj->handlers->read_property != zend_std_read_property) {
+			zend_verify_internal_read_property_type(zobj, name, retval);
 		}
 #endif
 
@@ -6503,10 +6420,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_is_copy;
@@ -6622,7 +6540,7 @@
 			}
 		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
@@ -6795,9 +6713,9 @@
 
 	if (IS_CONST == IS_CONST &&
 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
-		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
+	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
 	} else {
-		zend_object *orig_obj = obj;
+	    zend_object *orig_obj = obj;
 
 		if (IS_CONST == IS_CONST) {
 			function_name = RT_CONSTANT(opline, opline->op2);
@@ -7169,21 +7087,7 @@
 				ZVAL_UNDEF(EX_VAR(opline->result.var));
 				HANDLE_EXCEPTION();
 			}
-
-			if (ce->ce_flags & ZEND_ACC_TRAIT) {
-				zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(ce->name), Z_STRVAL_P(RT_CONSTANT(opline, opline->op2)));
-				ZVAL_UNDEF(EX_VAR(opline->result.var));
-				HANDLE_EXCEPTION();
-			}
-
 			value = &c->value;
-			// Enums require loading of all class constants to build the backed enum table
-			if (ce->ce_flags & ZEND_ACC_ENUM && ce->enum_backing_type != IS_UNDEF && ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
-				if (UNEXPECTED(zend_update_class_constants(ce) == FAILURE)) {
-					ZVAL_UNDEF(EX_VAR(opline->result.var));
-					HANDLE_EXCEPTION();
-				}
-			}
 			if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
 				zval_update_constant_ex(value, c->ce);
 				if (UNEXPECTED(EG(exception) != NULL)) {
@@ -7604,7 +7508,7 @@
 				}
 			} else if (IS_CONST == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -7820,7 +7724,7 @@
 		}
 
 		SAVE_OPLINE();
-		ZEND_HASH_MAP_FOREACH_STR_KEY(ht, key) {
+		ZEND_HASH_FOREACH_STR_KEY(ht, key) {
 			ZVAL_STR(&key_tmp, key);
 			if (zend_compare(op1, &key_tmp) == 0) {
 
@@ -8542,7 +8446,7 @@
 			}
 		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
 				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
@@ -8651,9 +8555,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -8674,7 +8578,7 @@
 
 	if (IS_CONST == IS_CONST ||
 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
-		do {
+	    do {
 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
 				container = Z_REFVAL_P(container);
 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
@@ -8721,10 +8625,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_r_copy;
@@ -8756,20 +8661,10 @@
 			}
 		}
 
-#if ZEND_DEBUG
-		/* For non-standard object handlers, verify a declared property type in debug builds.
-		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
-		zend_property_info *prop_info = NULL;
-		if (zobj->handlers->read_property != zend_std_read_property) {
-			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
-		}
-#endif
 		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
 #if ZEND_DEBUG
-		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
-				&& ZEND_TYPE_IS_SET(prop_info->type)) {
-			ZVAL_OPT_DEREF(retval);
-			zend_verify_property_type(prop_info, retval, /* strict */ true);
+		if (!EG(exception) && zobj->handlers->read_property != zend_std_read_property) {
+			zend_verify_internal_read_property_type(zobj, name, retval);
 		}
 #endif
 
@@ -8848,10 +8743,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_is_copy;
@@ -8967,7 +8863,7 @@
 			}
 		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
@@ -9140,9 +9036,9 @@
 
 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
-		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
+	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
 	} else {
-		zend_object *orig_obj = obj;
+	    zend_object *orig_obj = obj;
 
 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
 			function_name = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC);
@@ -9751,7 +9647,7 @@
 				}
 			} else if (IS_CONST == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -9941,9 +9837,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if (IS_UNUSED == IS_UNUSED) {
@@ -10594,7 +10490,7 @@
 				}
 			} else if (IS_CONST == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -10690,8 +10586,7 @@
 			if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) {
 				zval retval;
 
-				zend_function *count_fn = zend_hash_find_ptr(&zobj->ce->function_table, ZSTR_KNOWN(ZEND_STR_COUNT));
-				zend_call_known_instance_method_with_0_params(count_fn, zobj, &retval);
+				zend_call_method_with_0_params(zobj, NULL, NULL, "count", &retval);
 				count = zval_get_long(&retval);
 				zval_ptr_dtor(&retval);
 				break;
@@ -10908,7 +10803,7 @@
 			}
 		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
 				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
@@ -11017,9 +10912,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if (IS_CV == IS_UNUSED) {
@@ -11040,7 +10935,7 @@
 
 	if (IS_CONST == IS_CONST ||
 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
-		do {
+	    do {
 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
 				container = Z_REFVAL_P(container);
 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
@@ -11087,10 +10982,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_r_copy;
@@ -11122,20 +11018,10 @@
 			}
 		}
 
-#if ZEND_DEBUG
-		/* For non-standard object handlers, verify a declared property type in debug builds.
-		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
-		zend_property_info *prop_info = NULL;
-		if (zobj->handlers->read_property != zend_std_read_property) {
-			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
-		}
-#endif
 		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
 #if ZEND_DEBUG
-		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
-				&& ZEND_TYPE_IS_SET(prop_info->type)) {
-			ZVAL_OPT_DEREF(retval);
-			zend_verify_property_type(prop_info, retval, /* strict */ true);
+		if (!EG(exception) && zobj->handlers->read_property != zend_std_read_property) {
+			zend_verify_internal_read_property_type(zobj, name, retval);
 		}
 #endif
 
@@ -11214,10 +11100,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_is_copy;
@@ -11333,7 +11220,7 @@
 			}
 		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
@@ -11506,9 +11393,9 @@
 
 	if (IS_CV == IS_CONST &&
 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
-		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
+	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
 	} else {
-		zend_object *orig_obj = obj;
+	    zend_object *orig_obj = obj;
 
 		if (IS_CV == IS_CONST) {
 			function_name = EX_VAR(opline->op2.var);
@@ -12115,7 +12002,7 @@
 				}
 			} else if (IS_CONST == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -14297,6 +14184,41 @@
 	ZEND_VM_JMP(opline);
 }
 
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	USE_OPLINE
+	zval *val;
+	zend_uchar op1_type;
+
+	val = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
+
+	if (EXPECTED(Z_TYPE_INFO_P(val) == IS_TRUE)) {
+		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
+		ZEND_VM_CONTINUE();
+	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
+		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
+			SAVE_OPLINE();
+			ZVAL_UNDEFINED_OP1();
+			if (UNEXPECTED(EG(exception))) {
+				HANDLE_EXCEPTION();
+			}
+		}
+		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
+	}
+
+	SAVE_OPLINE();
+	op1_type = (IS_TMP_VAR|IS_VAR);
+	if (i_zend_is_true(val)) {
+		opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value);
+	} else {
+		opline = OP_JMP_ADDR(opline, opline->op2);
+	}
+	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
+		zval_ptr_dtor_nogc(val);
+	}
+	ZEND_VM_JMP(opline);
+}
+
 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	USE_OPLINE
@@ -14479,7 +14401,7 @@
 	do {
 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
 		    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
-			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
+		    if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
 				obj = Z_REFVAL_P(obj);
 				if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
 					break;
@@ -14549,25 +14471,10 @@
 		if (RETURN_VALUE_USED(opline)) {
 			ZVAL_TRUE(EX_VAR(opline->result.var));
 		}
-	} else if (UNEXPECTED(new_op_array == NULL)) {
-		if (RETURN_VALUE_USED(opline)) {
-			ZVAL_FALSE(EX_VAR(opline->result.var));
-		}
-	} else if (new_op_array->last == 1
-			&& new_op_array->opcodes[0].opcode == ZEND_RETURN
-			&& new_op_array->opcodes[0].op1_type == IS_CONST
-			&& EXPECTED(zend_execute_ex == execute_ex)) {
-		if (RETURN_VALUE_USED(opline)) {
-			const zend_op *op = new_op_array->opcodes;
-
-			ZVAL_COPY(EX_VAR(opline->result.var), RT_CONSTANT(op, op->op1));
-		}
-		zend_destroy_static_vars(new_op_array);
-		destroy_op_array(new_op_array);
-		efree_size(new_op_array, sizeof(zend_op_array));
-	} else {
+	} else if (EXPECTED(new_op_array != NULL)) {
 		zval *return_value = NULL;
 		zend_execute_data *call;
+
 		if (RETURN_VALUE_USED(opline)) {
 			return_value = EX_VAR(opline->result.var);
 		}
@@ -14575,7 +14482,7 @@
 		new_op_array->scope = EX(func)->op_array.scope;
 
 		call = zend_vm_stack_push_call_frame(
-			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
+		    (Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
 			(zend_function*)new_op_array, 0,
 			Z_PTR(EX(This)));
 
@@ -14606,6 +14513,8 @@
 			UNDEF_RESULT();
 			HANDLE_EXCEPTION();
 		}
+	} else if (RETURN_VALUE_USED(opline)) {
+		ZVAL_FALSE(EX_VAR(opline->result.var));
 	}
 	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
 	ZEND_VM_NEXT_OPCODE();
@@ -14939,7 +14848,7 @@
 			}
 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
 				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
@@ -15414,7 +15323,7 @@
 
 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
-		do {
+	    do {
 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
 				container = Z_REFVAL_P(container);
 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
@@ -15461,10 +15370,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_r_copy;
@@ -15496,20 +15406,10 @@
 			}
 		}
 
-#if ZEND_DEBUG
-		/* For non-standard object handlers, verify a declared property type in debug builds.
-		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
-		zend_property_info *prop_info = NULL;
-		if (zobj->handlers->read_property != zend_std_read_property) {
-			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
-		}
-#endif
 		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
 #if ZEND_DEBUG
-		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
-				&& ZEND_TYPE_IS_SET(prop_info->type)) {
-			ZVAL_OPT_DEREF(retval);
-			zend_verify_property_type(prop_info, retval, /* strict */ true);
+		if (!EG(exception) && zobj->handlers->read_property != zend_std_read_property) {
+			zend_verify_internal_read_property_type(zobj, name, retval);
 		}
 #endif
 
@@ -15588,10 +15488,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_is_copy;
@@ -15678,7 +15579,7 @@
 			}
 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
@@ -15851,9 +15752,9 @@
 
 	if (IS_CONST == IS_CONST &&
 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
-		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
+	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
 	} else {
-		zend_object *orig_obj = obj;
+	    zend_object *orig_obj = obj;
 
 		if (IS_CONST == IS_CONST) {
 			function_name = RT_CONSTANT(opline, opline->op2);
@@ -16376,7 +16277,7 @@
 			}
 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
 				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
@@ -16851,7 +16752,7 @@
 
 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
-		do {
+	    do {
 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
 				container = Z_REFVAL_P(container);
 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
@@ -16898,10 +16799,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_r_copy;
@@ -16933,20 +16835,10 @@
 			}
 		}
 
-#if ZEND_DEBUG
-		/* For non-standard object handlers, verify a declared property type in debug builds.
-		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
-		zend_property_info *prop_info = NULL;
-		if (zobj->handlers->read_property != zend_std_read_property) {
-			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
-		}
-#endif
 		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
 #if ZEND_DEBUG
-		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
-				&& ZEND_TYPE_IS_SET(prop_info->type)) {
-			ZVAL_OPT_DEREF(retval);
-			zend_verify_property_type(prop_info, retval, /* strict */ true);
+		if (!EG(exception) && zobj->handlers->read_property != zend_std_read_property) {
+			zend_verify_internal_read_property_type(zobj, name, retval);
 		}
 #endif
 
@@ -17025,10 +16917,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_is_copy;
@@ -17115,7 +17008,7 @@
 			}
 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
@@ -17288,9 +17181,9 @@
 
 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
-		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
+	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
 	} else {
-		zend_object *orig_obj = obj;
+	    zend_object *orig_obj = obj;
 
 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
 			function_name = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC);
@@ -17930,8 +17823,7 @@
 			if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) {
 				zval retval;
 
-				zend_function *count_fn = zend_hash_find_ptr(&zobj->ce->function_table, ZSTR_KNOWN(ZEND_STR_COUNT));
-				zend_call_known_instance_method_with_0_params(count_fn, zobj, &retval);
+				zend_call_method_with_0_params(zobj, NULL, NULL, "count", &retval);
 				count = zval_get_long(&retval);
 				zval_ptr_dtor(&retval);
 				break;
@@ -18064,7 +17956,7 @@
 			}
 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
 				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
@@ -18177,7 +18069,7 @@
 
 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
-		do {
+	    do {
 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
 				container = Z_REFVAL_P(container);
 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
@@ -18224,10 +18116,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_r_copy;
@@ -18259,20 +18152,10 @@
 			}
 		}
 
-#if ZEND_DEBUG
-		/* For non-standard object handlers, verify a declared property type in debug builds.
-		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
-		zend_property_info *prop_info = NULL;
-		if (zobj->handlers->read_property != zend_std_read_property) {
-			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
-		}
-#endif
 		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
 #if ZEND_DEBUG
-		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
-				&& ZEND_TYPE_IS_SET(prop_info->type)) {
-			ZVAL_OPT_DEREF(retval);
-			zend_verify_property_type(prop_info, retval, /* strict */ true);
+		if (!EG(exception) && zobj->handlers->read_property != zend_std_read_property) {
+			zend_verify_internal_read_property_type(zobj, name, retval);
 		}
 #endif
 
@@ -18351,10 +18234,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_is_copy;
@@ -18441,7 +18325,7 @@
 			}
 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
@@ -18614,9 +18498,9 @@
 
 	if (IS_CV == IS_CONST &&
 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
-		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
+	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
 	} else {
-		zend_object *orig_obj = obj;
+	    zend_object *orig_obj = obj;
 
 		if (IS_CV == IS_CONST) {
 			function_name = EX_VAR(opline->op2.var);
@@ -19013,7 +18897,7 @@
 				if (return_value) {
 					ZVAL_NEW_REF(return_value, retval_ptr);
 				} else {
-					zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+
 				}
 				break;
 			}
@@ -19028,7 +18912,6 @@
 			ZVAL_REF(return_value, Z_REF_P(retval_ptr));
 		}
 
-		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
 	} while (0);
 
 
@@ -19297,6 +19180,9 @@
 		}
 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
 
+		if (IS_TMP_VAR == IS_VAR) {
+
+		}
 		ZEND_VM_NEXT_OPCODE();
 	} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
@@ -19332,7 +19218,12 @@
 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 		} else {
 			bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
-			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+
+			if (IS_TMP_VAR == IS_VAR) {
+
+			} else {
+				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+			}
 			if (UNEXPECTED(EG(exception))) {
 				HANDLE_EXCEPTION();
 			} else if (is_empty) {
@@ -19345,7 +19236,11 @@
 		zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_zval_type_name(array_ptr));
 		ZVAL_UNDEF(EX_VAR(opline->result.var));
 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
-		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+		if (IS_TMP_VAR == IS_VAR) {
+
+		} else {
+			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+		}
 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
 	}
 }
@@ -19470,13 +19365,9 @@
 	}
 
 	result = EX_VAR(opline->result.var);
-	uint32_t short_circuiting_type = opline->extended_value & ZEND_SHORT_CIRCUITING_CHAIN_MASK;
-	if (EXPECTED(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EXPR)) {
+	if (EXPECTED(opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_EXPR)) {
 		ZVAL_NULL(result);
-		if (IS_TMP_VAR == IS_CV
-			&& UNEXPECTED(Z_TYPE_P(val) == IS_UNDEF)
-			&& (opline->extended_value & ZEND_JMP_NULL_BP_VAR_IS) == 0
-		) {
+		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(val) == IS_UNDEF)) {
 			SAVE_OPLINE();
 			ZVAL_UNDEFINED_OP1();
 			if (UNEXPECTED(EG(exception) != NULL)) {
@@ -19483,10 +19374,10 @@
 				HANDLE_EXCEPTION();
 			}
 		}
-	} else if (short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_ISSET) {
+	} else if (opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_ISSET) {
 		ZVAL_FALSE(result);
 	} else {
-		ZEND_ASSERT(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EMPTY);
+		ZEND_ASSERT(opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_EMPTY);
 		ZVAL_TRUE(result);
 	}
 
@@ -19582,9 +19473,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if (IS_CONST == IS_UNUSED) {
@@ -19753,7 +19644,7 @@
 		} else {
 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
 		}
-		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+
 	} else {
 		expr_ptr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
 		if (IS_TMP_VAR == IS_TMP_VAR) {
@@ -19913,7 +19804,6 @@
 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
 				} while (0);
 
-				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
 			}
 		} else {
 			zval *value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
@@ -19926,7 +19816,7 @@
 				}
 			} else if (IS_TMP_VAR == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -20040,7 +19930,7 @@
 		}
 
 		SAVE_OPLINE();
-		ZEND_HASH_MAP_FOREACH_STR_KEY(ht, key) {
+		ZEND_HASH_FOREACH_STR_KEY(ht, key) {
 			ZVAL_STR(&key_tmp, key);
 			if (zend_compare(op1, &key_tmp) == 0) {
 				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
@@ -20059,9 +19949,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -20193,7 +20083,7 @@
 		} else {
 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
 		}
-		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+
 	} else {
 		expr_ptr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
 		if (IS_TMP_VAR == IS_TMP_VAR) {
@@ -20353,7 +20243,6 @@
 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
 				} while (0);
 
-				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
 			}
 		} else {
 			zval *value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
@@ -20366,7 +20255,7 @@
 				}
 			} else if (IS_TMP_VAR == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -20486,9 +20375,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if (IS_UNUSED == IS_UNUSED) {
@@ -20654,7 +20543,7 @@
 		} else {
 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
 		}
-		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+
 	} else {
 		expr_ptr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
 		if (IS_TMP_VAR == IS_TMP_VAR) {
@@ -20814,7 +20703,6 @@
 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
 				} while (0);
 
-				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
 			}
 		} else {
 			zval *value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
@@ -20827,7 +20715,7 @@
 				}
 			} else if (IS_TMP_VAR == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -20920,9 +20808,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if (IS_CV == IS_UNUSED) {
@@ -21054,7 +20942,7 @@
 		} else {
 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
 		}
-		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+
 	} else {
 		expr_ptr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
 		if (IS_TMP_VAR == IS_TMP_VAR) {
@@ -21214,7 +21102,6 @@
 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
 				} while (0);
 
-				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
 			}
 		} else {
 			zval *value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
@@ -21227,7 +21114,7 @@
 				}
 			} else if (IS_TMP_VAR == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -21953,7 +21840,9 @@
 		}
 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
 
-		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+		if (IS_VAR == IS_VAR) {
+			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+		}
 		ZEND_VM_NEXT_OPCODE();
 	} else if (IS_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
@@ -21989,7 +21878,12 @@
 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
 		} else {
 			bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
-			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+
+			if (IS_VAR == IS_VAR) {
+				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+			} else {
+				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+			}
 			if (UNEXPECTED(EG(exception))) {
 				HANDLE_EXCEPTION();
 			} else if (is_empty) {
@@ -22002,7 +21896,11 @@
 		zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_zval_type_name(array_ptr));
 		ZVAL_UNDEF(EX_VAR(opline->result.var));
 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
-		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+		if (IS_VAR == IS_VAR) {
+			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+		} else {
+			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+		}
 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
 	}
 }
@@ -22015,6 +21913,7 @@
 	uint32_t value_type;
 	HashTable *fe_ht;
 	HashPosition pos;
+	Bucket *p;
 
 	array = EX_VAR(opline->op1.var);
 	if (UNEXPECTED(Z_TYPE_P(array) != IS_ARRAY)) {
@@ -22022,54 +21921,31 @@
 	}
 	fe_ht = Z_ARRVAL_P(array);
 	pos = Z_FE_POS_P(array);
-	if (HT_IS_PACKED(fe_ht)) {
-		value = fe_ht->arPacked + pos;
-		while (1) {
-			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-				/* reached end of iteration */
-				ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
-				ZEND_VM_CONTINUE();
-			}
-			value_type = Z_TYPE_INFO_P(value);
-			ZEND_ASSERT(value_type != IS_INDIRECT);
-			if (EXPECTED(value_type != IS_UNDEF)) {
-				break;
-			}
-			pos++;
-			value++;
+	p = fe_ht->arData + pos;
+	while (1) {
+		if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
+			/* reached end of iteration */
+			ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
+			ZEND_VM_CONTINUE();
 		}
-		Z_FE_POS_P(array) = pos + 1;
-		if (RETURN_VALUE_USED(opline)) {
-			ZVAL_LONG(EX_VAR(opline->result.var), pos);
+		pos++;
+		value = &p->val;
+		value_type = Z_TYPE_INFO_P(value);
+		ZEND_ASSERT(value_type != IS_INDIRECT);
+		if (EXPECTED(value_type != IS_UNDEF)) {
+			break;
 		}
-	} else {
-		Bucket *p;
-
-		p = fe_ht->arData + pos;
-		while (1) {
-			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-				/* reached end of iteration */
-				ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
-				ZEND_VM_CONTINUE();
-			}
-			pos++;
-			value = &p->val;
-			value_type = Z_TYPE_INFO_P(value);
-			ZEND_ASSERT(value_type != IS_INDIRECT);
-			if (EXPECTED(value_type != IS_UNDEF)) {
-				break;
-			}
-			p++;
+		p++;
+	}
+	Z_FE_POS_P(array) = pos;
+	if (RETURN_VALUE_USED(opline)) {
+		if (!p->key) {
+			ZVAL_LONG(EX_VAR(opline->result.var), p->h);
+		} else {
+			ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
 		}
-		Z_FE_POS_P(array) = pos;
-		if (RETURN_VALUE_USED(opline)) {
-			if (!p->key) {
-				ZVAL_LONG(EX_VAR(opline->result.var), p->h);
-			} else {
-				ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
-			}
-		}
 	}
+
 	if (EXPECTED(opline->op2_type == IS_CV)) {
 		zval *variable_ptr = EX_VAR(opline->op2.var);
 		SAVE_OPLINE();
@@ -22104,49 +21980,28 @@
 	if (EXPECTED(Z_TYPE_P(array) == IS_ARRAY)) {
 		pos = zend_hash_iterator_pos_ex(Z_FE_ITER_P(EX_VAR(opline->op1.var)), array);
 		fe_ht = Z_ARRVAL_P(array);
-		if (HT_IS_PACKED(fe_ht)) {
-			value = fe_ht->arPacked + pos;
-			while (1) {
-				if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-					/* reached end of iteration */
-					goto fe_fetch_w_exit;
-				}
-				value_type = Z_TYPE_INFO_P(value);
-				ZEND_ASSERT(value_type != IS_INDIRECT);
-				if (EXPECTED(value_type != IS_UNDEF)) {
-					break;
-				}
-				pos++;
-				value++;
+		p = fe_ht->arData + pos;
+		while (1) {
+			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
+				/* reached end of iteration */
+				goto fe_fetch_w_exit;
 			}
-			EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos + 1;
-			if (RETURN_VALUE_USED(opline)) {
-				ZVAL_LONG(EX_VAR(opline->result.var), pos);
+			pos++;
+			value = &p->val;
+			value_type = Z_TYPE_INFO_P(value);
+			ZEND_ASSERT(value_type != IS_INDIRECT);
+			if (EXPECTED(value_type != IS_UNDEF)) {
+				break;
 			}
-		} else {
-			p = fe_ht->arData + pos;
-			while (1) {
-				if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-					/* reached end of iteration */
-					goto fe_fetch_w_exit;
-				}
-				pos++;
-				value = &p->val;
-				value_type = Z_TYPE_INFO_P(value);
-				ZEND_ASSERT(value_type != IS_INDIRECT);
-				if (EXPECTED(value_type != IS_UNDEF)) {
-					break;
-				}
-				p++;
+			p++;
+		}
+		EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos;
+		if (RETURN_VALUE_USED(opline)) {
+			if (!p->key) {
+				ZVAL_LONG(EX_VAR(opline->result.var), p->h);
+			} else {
+				ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
 			}
-			EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos;
-			if (RETURN_VALUE_USED(opline)) {
-				if (!p->key) {
-					ZVAL_LONG(EX_VAR(opline->result.var), p->h);
-				} else {
-					ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
-				}
-			}
 		}
 	} else if (EXPECTED(Z_TYPE_P(array) == IS_OBJECT)) {
 		zend_object_iterator *iter;
@@ -22398,13 +22253,9 @@
 	}
 
 	result = EX_VAR(opline->result.var);
-	uint32_t short_circuiting_type = opline->extended_value & ZEND_SHORT_CIRCUITING_CHAIN_MASK;
-	if (EXPECTED(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EXPR)) {
+	if (EXPECTED(opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_EXPR)) {
 		ZVAL_NULL(result);
-		if (IS_VAR == IS_CV
-			&& UNEXPECTED(Z_TYPE_P(val) == IS_UNDEF)
-			&& (opline->extended_value & ZEND_JMP_NULL_BP_VAR_IS) == 0
-		) {
+		if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(val) == IS_UNDEF)) {
 			SAVE_OPLINE();
 			ZVAL_UNDEFINED_OP1();
 			if (UNEXPECTED(EG(exception) != NULL)) {
@@ -22411,10 +22262,10 @@
 				HANDLE_EXCEPTION();
 			}
 		}
-	} else if (short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_ISSET) {
+	} else if (opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_ISSET) {
 		ZVAL_FALSE(result);
 	} else {
-		ZEND_ASSERT(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EMPTY);
+		ZEND_ASSERT(opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_EMPTY);
 		ZVAL_TRUE(result);
 	}
 
@@ -22917,9 +22768,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if (IS_CONST == IS_UNUSED) {
@@ -22957,7 +22808,7 @@
 	zend_fetch_property_address(
 		result, container, IS_VAR, property, IS_CONST,
 		((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
-		BP_VAR_W, opline->extended_value, 1 OPLINE_CC EXECUTE_DATA_CC);
+		BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC EXECUTE_DATA_CC);
 
 	if (IS_VAR == IS_VAR) {
 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
@@ -23100,7 +22951,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -23231,7 +23082,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -23362,7 +23213,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -23493,7 +23344,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -24228,7 +24079,7 @@
 
 	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
 
-	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));;
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
 
@@ -24744,21 +24595,7 @@
 				ZVAL_UNDEF(EX_VAR(opline->result.var));
 				HANDLE_EXCEPTION();
 			}
-
-			if (ce->ce_flags & ZEND_ACC_TRAIT) {
-				zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(ce->name), Z_STRVAL_P(RT_CONSTANT(opline, opline->op2)));
-				ZVAL_UNDEF(EX_VAR(opline->result.var));
-				HANDLE_EXCEPTION();
-			}
-
 			value = &c->value;
-			// Enums require loading of all class constants to build the backed enum table
-			if (ce->ce_flags & ZEND_ACC_ENUM && ce->enum_backing_type != IS_UNDEF && ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
-				if (UNEXPECTED(zend_update_class_constants(ce) == FAILURE)) {
-					ZVAL_UNDEF(EX_VAR(opline->result.var));
-					HANDLE_EXCEPTION();
-				}
-			}
 			if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
 				zval_update_constant_ex(value, c->ce);
 				if (UNEXPECTED(EG(exception) != NULL)) {
@@ -25102,7 +24939,7 @@
 				}
 			} else if (IS_VAR == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
 			} else {
@@ -25216,7 +25053,7 @@
 		}
 
 		SAVE_OPLINE();
-		ZEND_HASH_MAP_FOREACH_STR_KEY(ht, key) {
+		ZEND_HASH_FOREACH_STR_KEY(ht, key) {
 			ZVAL_STR(&key_tmp, key);
 			if (zend_compare(op1, &key_tmp) == 0) {
 				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
@@ -25629,9 +25466,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -25669,7 +25506,7 @@
 	zend_fetch_property_address(
 		result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR),
 		(((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
-		BP_VAR_W, opline->extended_value, 1 OPLINE_CC EXECUTE_DATA_CC);
+		BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC EXECUTE_DATA_CC);
 	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
 	if (IS_VAR == IS_VAR) {
 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
@@ -25813,7 +25650,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -25944,7 +25781,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -26075,7 +25912,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -26206,7 +26043,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -26901,7 +26738,7 @@
 
 	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
 	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
-	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));;
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
 
@@ -27400,7 +27237,7 @@
 				}
 			} else if (IS_VAR == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
 			} else {
@@ -27794,9 +27631,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if (IS_UNUSED == IS_UNUSED) {
@@ -29299,7 +29136,7 @@
 				}
 			} else if (IS_VAR == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
 			} else {
@@ -29837,9 +29674,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if (IS_CV == IS_UNUSED) {
@@ -29877,7 +29714,7 @@
 	zend_fetch_property_address(
 		result, container, IS_VAR, property, IS_CV,
 		((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
-		BP_VAR_W, opline->extended_value, 1 OPLINE_CC EXECUTE_DATA_CC);
+		BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC EXECUTE_DATA_CC);
 
 	if (IS_VAR == IS_VAR) {
 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
@@ -30020,7 +29857,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -30151,7 +29988,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -30282,7 +30119,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -30413,7 +30250,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -31181,7 +31018,7 @@
 
 	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
 
-	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));;
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
 
@@ -31678,7 +31515,7 @@
 				}
 			} else if (IS_VAR == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
 			} else {
@@ -31740,58 +31577,35 @@
 	uint32_t value_type;
 	HashTable *fe_ht;
 	HashPosition pos;
+	Bucket *p;
 
 	array = EX_VAR(opline->op1.var);
 	SAVE_OPLINE();
 	fe_ht = Z_ARRVAL_P(array);
 	pos = Z_FE_POS_P(array);
-	if (HT_IS_PACKED(fe_ht)) {
-		value = fe_ht->arPacked + pos;
-		while (1) {
-			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-				/* reached end of iteration */
-				ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
-				ZEND_VM_CONTINUE();
-			}
-			value_type = Z_TYPE_INFO_P(value);
-			ZEND_ASSERT(value_type != IS_INDIRECT);
-			if (EXPECTED(value_type != IS_UNDEF)) {
-				break;
-			}
-			pos++;
-			value++;
+	p = fe_ht->arData + pos;
+	while (1) {
+		if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
+			/* reached end of iteration */
+			ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
+			ZEND_VM_CONTINUE();
 		}
-		Z_FE_POS_P(array) = pos + 1;
-		if (0) {
-			ZVAL_LONG(EX_VAR(opline->result.var), pos);
+		pos++;
+		value = &p->val;
+		value_type = Z_TYPE_INFO_P(value);
+		ZEND_ASSERT(value_type != IS_INDIRECT);
+		if (EXPECTED(value_type != IS_UNDEF)) {
+			break;
 		}
-	} else {
-		Bucket *p;
-
-		p = fe_ht->arData + pos;
-		while (1) {
-			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-				/* reached end of iteration */
-				ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
-				ZEND_VM_CONTINUE();
-			}
-			pos++;
-			value = &p->val;
-			value_type = Z_TYPE_INFO_P(value);
-			ZEND_ASSERT(value_type != IS_INDIRECT);
-			if (EXPECTED(value_type != IS_UNDEF)) {
-				break;
-			}
-			p++;
+		p++;
+	}
+	Z_FE_POS_P(array) = pos;
+	if (0) {
+		if (!p->key) {
+			ZVAL_LONG(EX_VAR(opline->result.var), p->h);
+		} else {
+			ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
 		}
-		Z_FE_POS_P(array) = pos;
-		if (0) {
-			if (!p->key) {
-				ZVAL_LONG(EX_VAR(opline->result.var), p->h);
-			} else {
-				ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
-			}
-		}
 	}
 
 	variable_ptr = EX_VAR(opline->op2.var);
@@ -31808,58 +31622,35 @@
 	uint32_t value_type;
 	HashTable *fe_ht;
 	HashPosition pos;
+	Bucket *p;
 
 	array = EX_VAR(opline->op1.var);
 	SAVE_OPLINE();
 	fe_ht = Z_ARRVAL_P(array);
 	pos = Z_FE_POS_P(array);
-	if (HT_IS_PACKED(fe_ht)) {
-		value = fe_ht->arPacked + pos;
-		while (1) {
-			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-				/* reached end of iteration */
-				ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
-				ZEND_VM_CONTINUE();
-			}
-			value_type = Z_TYPE_INFO_P(value);
-			ZEND_ASSERT(value_type != IS_INDIRECT);
-			if (EXPECTED(value_type != IS_UNDEF)) {
-				break;
-			}
-			pos++;
-			value++;
+	p = fe_ht->arData + pos;
+	while (1) {
+		if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
+			/* reached end of iteration */
+			ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
+			ZEND_VM_CONTINUE();
 		}
-		Z_FE_POS_P(array) = pos + 1;
-		if (1) {
-			ZVAL_LONG(EX_VAR(opline->result.var), pos);
+		pos++;
+		value = &p->val;
+		value_type = Z_TYPE_INFO_P(value);
+		ZEND_ASSERT(value_type != IS_INDIRECT);
+		if (EXPECTED(value_type != IS_UNDEF)) {
+			break;
 		}
-	} else {
-		Bucket *p;
-
-		p = fe_ht->arData + pos;
-		while (1) {
-			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-				/* reached end of iteration */
-				ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
-				ZEND_VM_CONTINUE();
-			}
-			pos++;
-			value = &p->val;
-			value_type = Z_TYPE_INFO_P(value);
-			ZEND_ASSERT(value_type != IS_INDIRECT);
-			if (EXPECTED(value_type != IS_UNDEF)) {
-				break;
-			}
-			p++;
+		p++;
+	}
+	Z_FE_POS_P(array) = pos;
+	if (1) {
+		if (!p->key) {
+			ZVAL_LONG(EX_VAR(opline->result.var), p->h);
+		} else {
+			ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
 		}
-		Z_FE_POS_P(array) = pos;
-		if (1) {
-			if (!p->key) {
-				ZVAL_LONG(EX_VAR(opline->result.var), p->h);
-			} else {
-				ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
-			}
-		}
 	}
 
 	variable_ptr = EX_VAR(opline->op2.var);
@@ -31883,7 +31674,7 @@
 	do {
 		if (IS_UNUSED == IS_CONST ||
 		    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
-			if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
+		    if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
 				obj = Z_REFVAL_P(obj);
 				if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
 					break;
@@ -32234,7 +32025,7 @@
 
 	if (IS_UNUSED == IS_CONST ||
 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
-		do {
+	    do {
 			if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
 				container = Z_REFVAL_P(container);
 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
@@ -32281,10 +32072,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_r_copy;
@@ -32316,20 +32108,10 @@
 			}
 		}
 
-#if ZEND_DEBUG
-		/* For non-standard object handlers, verify a declared property type in debug builds.
-		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
-		zend_property_info *prop_info = NULL;
-		if (zobj->handlers->read_property != zend_std_read_property) {
-			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
-		}
-#endif
 		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
 #if ZEND_DEBUG
-		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
-				&& ZEND_TYPE_IS_SET(prop_info->type)) {
-			ZVAL_OPT_DEREF(retval);
-			zend_verify_property_type(prop_info, retval, /* strict */ true);
+		if (!EG(exception) && zobj->handlers->read_property != zend_std_read_property) {
+			zend_verify_internal_read_property_type(zobj, name, retval);
 		}
 #endif
 
@@ -32369,7 +32151,7 @@
 	zend_fetch_property_address(
 		result, container, IS_UNUSED, property, IS_CONST,
 		((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
-		BP_VAR_W, opline->extended_value, 1 OPLINE_CC EXECUTE_DATA_CC);
+		BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC EXECUTE_DATA_CC);
 
 	if (IS_UNUSED == IS_VAR) {
 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
@@ -32451,10 +32233,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_is_copy;
@@ -32602,7 +32385,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -32733,7 +32516,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -32864,7 +32647,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -32995,7 +32778,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -33095,7 +32878,7 @@
 	}
 
 
-	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));;
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
 
@@ -33301,9 +33084,9 @@
 
 	if (IS_CONST == IS_CONST &&
 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
-		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
+	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
 	} else {
-		zend_object *orig_obj = obj;
+	    zend_object *orig_obj = obj;
 
 		if (IS_CONST == IS_CONST) {
 			function_name = RT_CONSTANT(opline, opline->op2);
@@ -33597,21 +33380,7 @@
 				ZVAL_UNDEF(EX_VAR(opline->result.var));
 				HANDLE_EXCEPTION();
 			}
-
-			if (ce->ce_flags & ZEND_ACC_TRAIT) {
-				zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(ce->name), Z_STRVAL_P(RT_CONSTANT(opline, opline->op2)));
-				ZVAL_UNDEF(EX_VAR(opline->result.var));
-				HANDLE_EXCEPTION();
-			}
-
 			value = &c->value;
-			// Enums require loading of all class constants to build the backed enum table
-			if (ce->ce_flags & ZEND_ACC_ENUM && ce->enum_backing_type != IS_UNDEF && ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
-				if (UNEXPECTED(zend_update_class_constants(ce) == FAILURE)) {
-					ZVAL_UNDEF(EX_VAR(opline->result.var));
-					HANDLE_EXCEPTION();
-				}
-			}
 			if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
 				zval_update_constant_ex(value, c->ce);
 				if (UNEXPECTED(EG(exception) != NULL)) {
@@ -33817,7 +33586,7 @@
 				}
 			} else if (IS_UNUSED == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -34114,7 +33883,7 @@
 
 	if (IS_UNUSED == IS_CONST ||
 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
-		do {
+	    do {
 			if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
 				container = Z_REFVAL_P(container);
 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
@@ -34161,10 +33930,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_r_copy;
@@ -34196,20 +33966,10 @@
 			}
 		}
 
-#if ZEND_DEBUG
-		/* For non-standard object handlers, verify a declared property type in debug builds.
-		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
-		zend_property_info *prop_info = NULL;
-		if (zobj->handlers->read_property != zend_std_read_property) {
-			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
-		}
-#endif
 		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
 #if ZEND_DEBUG
-		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
-				&& ZEND_TYPE_IS_SET(prop_info->type)) {
-			ZVAL_OPT_DEREF(retval);
-			zend_verify_property_type(prop_info, retval, /* strict */ true);
+		if (!EG(exception) && zobj->handlers->read_property != zend_std_read_property) {
+			zend_verify_internal_read_property_type(zobj, name, retval);
 		}
 #endif
 
@@ -34244,7 +34004,7 @@
 	zend_fetch_property_address(
 		result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR),
 		(((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
-		BP_VAR_W, opline->extended_value, 1 OPLINE_CC EXECUTE_DATA_CC);
+		BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC EXECUTE_DATA_CC);
 	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
 	if (IS_UNUSED == IS_VAR) {
 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
@@ -34326,10 +34086,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_is_copy;
@@ -34477,7 +34238,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -34608,7 +34369,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -34739,7 +34500,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -34870,7 +34631,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -34970,7 +34731,7 @@
 	}
 
 	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
-	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));;
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
 
@@ -35177,9 +34938,9 @@
 
 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
-		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
+	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
 	} else {
-		zend_object *orig_obj = obj;
+	    zend_object *orig_obj = obj;
 
 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
 			function_name = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC);
@@ -35562,7 +35323,7 @@
 				}
 			} else if (IS_UNUSED == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -36104,7 +35865,7 @@
 				}
 			} else if (IS_UNUSED == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -36592,7 +36353,7 @@
 
 	if (IS_UNUSED == IS_CONST ||
 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
-		do {
+	    do {
 			if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
 				container = Z_REFVAL_P(container);
 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
@@ -36639,10 +36400,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_r_copy;
@@ -36674,20 +36436,10 @@
 			}
 		}
 
-#if ZEND_DEBUG
-		/* For non-standard object handlers, verify a declared property type in debug builds.
-		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
-		zend_property_info *prop_info = NULL;
-		if (zobj->handlers->read_property != zend_std_read_property) {
-			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
-		}
-#endif
 		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
 #if ZEND_DEBUG
-		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
-				&& ZEND_TYPE_IS_SET(prop_info->type)) {
-			ZVAL_OPT_DEREF(retval);
-			zend_verify_property_type(prop_info, retval, /* strict */ true);
+		if (!EG(exception) && zobj->handlers->read_property != zend_std_read_property) {
+			zend_verify_internal_read_property_type(zobj, name, retval);
 		}
 #endif
 
@@ -36722,7 +36474,7 @@
 	zend_fetch_property_address(
 		result, container, IS_UNUSED, property, IS_CV,
 		((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
-		BP_VAR_W, opline->extended_value, 1 OPLINE_CC EXECUTE_DATA_CC);
+		BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC EXECUTE_DATA_CC);
 
 	if (IS_UNUSED == IS_VAR) {
 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
@@ -36804,10 +36556,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_is_copy;
@@ -36955,7 +36708,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -37086,7 +36839,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -37217,7 +36970,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -37348,7 +37101,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -37448,7 +37201,7 @@
 	}
 
 
-	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));;
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
 
@@ -37654,9 +37407,9 @@
 
 	if (IS_CV == IS_CONST &&
 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
-		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
+	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
 	} else {
-		zend_object *orig_obj = obj;
+	    zend_object *orig_obj = obj;
 
 		if (IS_CV == IS_CONST) {
 			function_name = EX_VAR(opline->op2.var);
@@ -38038,7 +37791,7 @@
 				}
 			} else if (IS_UNUSED == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -38445,6 +38198,41 @@
 	ZEND_VM_JMP(opline);
 }
 
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	USE_OPLINE
+	zval *val;
+	zend_uchar op1_type;
+
+	val = EX_VAR(opline->op1.var);
+
+	if (EXPECTED(Z_TYPE_INFO_P(val) == IS_TRUE)) {
+		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
+		ZEND_VM_CONTINUE();
+	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
+		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
+			SAVE_OPLINE();
+			ZVAL_UNDEFINED_OP1();
+			if (UNEXPECTED(EG(exception))) {
+				HANDLE_EXCEPTION();
+			}
+		}
+		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
+	}
+
+	SAVE_OPLINE();
+	op1_type = IS_CV;
+	if (i_zend_is_true(val)) {
+		opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value);
+	} else {
+		opline = OP_JMP_ADDR(opline, opline->op2);
+	}
+	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
+		zval_ptr_dtor_nogc(val);
+	}
+	ZEND_VM_JMP(opline);
+}
+
 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	USE_OPLINE
@@ -38796,7 +38584,7 @@
 	do {
 		if (IS_CV == IS_CONST ||
 		    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
-			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
+		    if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
 				obj = Z_REFVAL_P(obj);
 				if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
 					break;
@@ -38958,25 +38746,10 @@
 		if (RETURN_VALUE_USED(opline)) {
 			ZVAL_TRUE(EX_VAR(opline->result.var));
 		}
-	} else if (UNEXPECTED(new_op_array == NULL)) {
-		if (RETURN_VALUE_USED(opline)) {
-			ZVAL_FALSE(EX_VAR(opline->result.var));
-		}
-	} else if (new_op_array->last == 1
-			&& new_op_array->opcodes[0].opcode == ZEND_RETURN
-			&& new_op_array->opcodes[0].op1_type == IS_CONST
-			&& EXPECTED(zend_execute_ex == execute_ex)) {
-		if (RETURN_VALUE_USED(opline)) {
-			const zend_op *op = new_op_array->opcodes;
-
-			ZVAL_COPY(EX_VAR(opline->result.var), RT_CONSTANT(op, op->op1));
-		}
-		zend_destroy_static_vars(new_op_array);
-		destroy_op_array(new_op_array);
-		efree_size(new_op_array, sizeof(zend_op_array));
-	} else {
+	} else if (EXPECTED(new_op_array != NULL)) {
 		zval *return_value = NULL;
 		zend_execute_data *call;
+
 		if (RETURN_VALUE_USED(opline)) {
 			return_value = EX_VAR(opline->result.var);
 		}
@@ -38984,7 +38757,7 @@
 		new_op_array->scope = EX(func)->op_array.scope;
 
 		call = zend_vm_stack_push_call_frame(
-			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
+		    (Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
 			(zend_function*)new_op_array, 0,
 			Z_PTR(EX(This)));
 
@@ -39015,6 +38788,8 @@
 			UNDEF_RESULT();
 			HANDLE_EXCEPTION();
 		}
+	} else if (RETURN_VALUE_USED(opline)) {
+		ZVAL_FALSE(EX_VAR(opline->result.var));
 	}
 
 	ZEND_VM_NEXT_OPCODE();
@@ -39123,6 +38898,9 @@
 		}
 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
 
+		if (IS_CV == IS_VAR) {
+
+		}
 		ZEND_VM_NEXT_OPCODE();
 	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
@@ -39159,6 +38937,11 @@
 		} else {
 			bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
 
+			if (IS_CV == IS_VAR) {
+
+			} else {
+
+			}
 			if (UNEXPECTED(EG(exception))) {
 				HANDLE_EXCEPTION();
 			} else if (is_empty) {
@@ -39171,7 +38954,11 @@
 		zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_zval_type_name(array_ptr));
 		ZVAL_UNDEF(EX_VAR(opline->result.var));
 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
+		if (IS_CV == IS_VAR) {
 
+		} else {
+
+		}
 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
 	}
 }
@@ -39284,13 +39071,9 @@
 	}
 
 	result = EX_VAR(opline->result.var);
-	uint32_t short_circuiting_type = opline->extended_value & ZEND_SHORT_CIRCUITING_CHAIN_MASK;
-	if (EXPECTED(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EXPR)) {
+	if (EXPECTED(opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_EXPR)) {
 		ZVAL_NULL(result);
-		if (IS_CV == IS_CV
-			&& UNEXPECTED(Z_TYPE_P(val) == IS_UNDEF)
-			&& (opline->extended_value & ZEND_JMP_NULL_BP_VAR_IS) == 0
-		) {
+		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(val) == IS_UNDEF)) {
 			SAVE_OPLINE();
 			ZVAL_UNDEFINED_OP1();
 			if (UNEXPECTED(EG(exception) != NULL)) {
@@ -39297,10 +39080,10 @@
 				HANDLE_EXCEPTION();
 			}
 		}
-	} else if (short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_ISSET) {
+	} else if (opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_ISSET) {
 		ZVAL_FALSE(result);
 	} else {
-		ZEND_ASSERT(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EMPTY);
+		ZEND_ASSERT(opline->extended_value == ZEND_SHORT_CIRCUITING_CHAIN_EMPTY);
 		ZVAL_TRUE(result);
 	}
 
@@ -39836,7 +39619,7 @@
 			}
 		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
 				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
@@ -40727,9 +40510,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if (IS_CONST == IS_UNUSED) {
@@ -40765,7 +40548,7 @@
 
 	if (IS_CV == IS_CONST ||
 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
-		do {
+	    do {
 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
 				container = Z_REFVAL_P(container);
 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
@@ -40812,10 +40595,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_r_copy;
@@ -40847,20 +40631,10 @@
 			}
 		}
 
-#if ZEND_DEBUG
-		/* For non-standard object handlers, verify a declared property type in debug builds.
-		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
-		zend_property_info *prop_info = NULL;
-		if (zobj->handlers->read_property != zend_std_read_property) {
-			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
-		}
-#endif
 		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
 #if ZEND_DEBUG
-		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
-				&& ZEND_TYPE_IS_SET(prop_info->type)) {
-			ZVAL_OPT_DEREF(retval);
-			zend_verify_property_type(prop_info, retval, /* strict */ true);
+		if (!EG(exception) && zobj->handlers->read_property != zend_std_read_property) {
+			zend_verify_internal_read_property_type(zobj, name, retval);
 		}
 #endif
 
@@ -40900,7 +40674,7 @@
 	zend_fetch_property_address(
 		result, container, IS_CV, property, IS_CONST,
 		((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
-		BP_VAR_W, opline->extended_value, 1 OPLINE_CC EXECUTE_DATA_CC);
+		BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC EXECUTE_DATA_CC);
 
 	if (IS_CV == IS_VAR) {
 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
@@ -40982,10 +40756,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_is_copy;
@@ -41133,7 +40908,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -41264,7 +41039,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -41395,7 +41170,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -41526,7 +41301,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -42260,7 +42035,7 @@
 	}
 
 
-	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));;
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
 
@@ -42336,7 +42111,7 @@
 			}
 		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
@@ -42509,9 +42284,9 @@
 
 	if (IS_CONST == IS_CONST &&
 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
-		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
+	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
 	} else {
-		zend_object *orig_obj = obj;
+	    zend_object *orig_obj = obj;
 
 		if (IS_CONST == IS_CONST) {
 			function_name = RT_CONSTANT(opline, opline->op2);
@@ -43245,7 +43020,7 @@
 				}
 			} else if (IS_CV == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -43317,10 +43092,11 @@
 	if (EXPECTED(idx < EG(symbol_table).nNumUsed * sizeof(Bucket))) {
 		Bucket *p = (Bucket*)((char*)EG(symbol_table).arData + idx);
 
-		if (EXPECTED(p->key == varname) ||
-		    (EXPECTED(p->h == ZSTR_H(varname)) &&
-		     EXPECTED(p->key != NULL) &&
-		     EXPECTED(zend_string_equal_content(p->key, varname)))) {
+		if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+	        (EXPECTED(p->key == varname) ||
+	         (EXPECTED(p->h == ZSTR_H(varname)) &&
+	          EXPECTED(p->key != NULL) &&
+	          EXPECTED(zend_string_equal_content(p->key, varname))))) {
 
 			value = (zval*)p; /* value = &p->val; */
 			goto check_indirect;
@@ -43439,7 +43215,7 @@
 		}
 
 		SAVE_OPLINE();
-		ZEND_HASH_MAP_FOREACH_STR_KEY(ht, key) {
+		ZEND_HASH_FOREACH_STR_KEY(ht, key) {
 			ZVAL_STR(&key_tmp, key);
 			if (zend_compare(op1, &key_tmp) == 0) {
 
@@ -43652,7 +43428,7 @@
 			}
 		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
 				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
@@ -44517,9 +44293,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -44555,7 +44331,7 @@
 
 	if (IS_CV == IS_CONST ||
 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
-		do {
+	    do {
 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
 				container = Z_REFVAL_P(container);
 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
@@ -44602,10 +44378,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_r_copy;
@@ -44637,20 +44414,10 @@
 			}
 		}
 
-#if ZEND_DEBUG
-		/* For non-standard object handlers, verify a declared property type in debug builds.
-		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
-		zend_property_info *prop_info = NULL;
-		if (zobj->handlers->read_property != zend_std_read_property) {
-			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
-		}
-#endif
 		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
 #if ZEND_DEBUG
-		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
-				&& ZEND_TYPE_IS_SET(prop_info->type)) {
-			ZVAL_OPT_DEREF(retval);
-			zend_verify_property_type(prop_info, retval, /* strict */ true);
+		if (!EG(exception) && zobj->handlers->read_property != zend_std_read_property) {
+			zend_verify_internal_read_property_type(zobj, name, retval);
 		}
 #endif
 
@@ -44685,7 +44452,7 @@
 	zend_fetch_property_address(
 		result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR),
 		(((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
-		BP_VAR_W, opline->extended_value, 1 OPLINE_CC EXECUTE_DATA_CC);
+		BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC EXECUTE_DATA_CC);
 	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
 	if (IS_CV == IS_VAR) {
 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
@@ -44767,10 +44534,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_is_copy;
@@ -44918,7 +44686,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -45049,7 +44817,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -45180,7 +44948,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -45311,7 +45079,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -46005,7 +45773,7 @@
 	}
 
 	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
-	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));;
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
 
@@ -46081,7 +45849,7 @@
 			}
 		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
@@ -46254,9 +46022,9 @@
 
 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
-		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
+	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
 	} else {
-		zend_object *orig_obj = obj;
+	    zend_object *orig_obj = obj;
 
 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
 			function_name = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC);
@@ -46807,7 +46575,7 @@
 				}
 			} else if (IS_CV == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -47346,9 +47114,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if (IS_UNUSED == IS_UNUSED) {
@@ -48606,7 +48374,7 @@
 				}
 			} else if (IS_CV == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -48785,8 +48553,7 @@
 			if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) {
 				zval retval;
 
-				zend_function *count_fn = zend_hash_find_ptr(&zobj->ce->function_table, ZSTR_KNOWN(ZEND_STR_COUNT));
-				zend_call_known_instance_method_with_0_params(count_fn, zobj, &retval);
+				zend_call_method_with_0_params(zobj, NULL, NULL, "count", &retval);
 				count = zval_get_long(&retval);
 				zval_ptr_dtor(&retval);
 				break;
@@ -48950,7 +48717,7 @@
 			}
 		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
 				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
@@ -49841,9 +49608,9 @@
 #endif
 
 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
-		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
+        if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
-		}
+        }
 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
 	} else {
 		if (IS_CV == IS_UNUSED) {
@@ -49879,7 +49646,7 @@
 
 	if (IS_CV == IS_CONST ||
 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
-		do {
+	    do {
 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
 				container = Z_REFVAL_P(container);
 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
@@ -49926,10 +49693,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_r_copy;
@@ -49961,20 +49729,10 @@
 			}
 		}
 
-#if ZEND_DEBUG
-		/* For non-standard object handlers, verify a declared property type in debug builds.
-		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
-		zend_property_info *prop_info = NULL;
-		if (zobj->handlers->read_property != zend_std_read_property) {
-			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
-		}
-#endif
 		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
 #if ZEND_DEBUG
-		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
-				&& ZEND_TYPE_IS_SET(prop_info->type)) {
-			ZVAL_OPT_DEREF(retval);
-			zend_verify_property_type(prop_info, retval, /* strict */ true);
+		if (!EG(exception) && zobj->handlers->read_property != zend_std_read_property) {
+			zend_verify_internal_read_property_type(zobj, name, retval);
 		}
 #endif
 
@@ -50009,7 +49767,7 @@
 	zend_fetch_property_address(
 		result, container, IS_CV, property, IS_CV,
 		((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
-		BP_VAR_W, opline->extended_value, 1 OPLINE_CC EXECUTE_DATA_CC);
+		BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC EXECUTE_DATA_CC);
 
 	if (IS_CV == IS_VAR) {
 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
@@ -50091,10 +49849,11 @@
 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 
-							if (EXPECTED(p->key == name) ||
-							    (EXPECTED(p->h == ZSTR_H(name)) &&
-							     EXPECTED(p->key != NULL) &&
-							     EXPECTED(zend_string_equal_content(p->key, name)))) {
+							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
+						        (EXPECTED(p->key == name) ||
+						         (EXPECTED(p->h == ZSTR_H(name)) &&
+						          EXPECTED(p->key != NULL) &&
+						          EXPECTED(zend_string_equal_content(p->key, name))))) {
 								retval = &p->val;
 								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
 									goto fetch_obj_is_copy;
@@ -50242,7 +50001,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -50373,7 +50132,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -50504,7 +50263,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -50635,7 +50394,7 @@
 					}
 				}
 
-				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
+				if (!zobj->ce->__set) {
 					if (EXPECTED(zobj->properties == NULL)) {
 						rebuild_object_properties(zobj);
 					}
@@ -51402,7 +51161,7 @@
 	}
 
 
-	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));;
 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
 }
 
@@ -51478,7 +51237,7 @@
 			}
 		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
-			size_t len = ZSTR_LEN(op1_str);
+		    size_t len = ZSTR_LEN(op1_str);
 
 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
@@ -51651,9 +51410,9 @@
 
 	if (IS_CV == IS_CONST &&
 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
-		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
+	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
 	} else {
-		zend_object *orig_obj = obj;
+	    zend_object *orig_obj = obj;
 
 		if (IS_CV == IS_CONST) {
 			function_name = EX_VAR(opline->op2.var);
@@ -52201,7 +51960,7 @@
 				}
 			} else if (IS_CV == IS_TMP_VAR) {
 				ZVAL_COPY_VALUE(&generator->value, value);
-			} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
+            } else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
 
 			} else {
@@ -53606,6 +53365,11 @@
 			(void*)&&ZEND_JMPNZ_SPEC_TMPVAR_LABEL,
 			(void*)&&ZEND_NULL_LABEL,
 			(void*)&&ZEND_JMPNZ_SPEC_CV_LABEL,
+			(void*)&&ZEND_JMPZNZ_SPEC_CONST_LABEL,
+			(void*)&&ZEND_JMPZNZ_SPEC_TMPVAR_LABEL,
+			(void*)&&ZEND_JMPZNZ_SPEC_TMPVAR_LABEL,
+			(void*)&&ZEND_NULL_LABEL,
+			(void*)&&ZEND_JMPZNZ_SPEC_CV_LABEL,
 			(void*)&&ZEND_JMPZ_EX_SPEC_CONST_LABEL,
 			(void*)&&ZEND_JMPZ_EX_SPEC_TMPVAR_LABEL,
 			(void*)&&ZEND_JMPZ_EX_SPEC_TMPVAR_LABEL,
@@ -54529,8 +54293,6 @@
 			(void*)&&ZEND_INIT_DYNAMIC_CALL_SPEC_CV_LABEL,
 			(void*)&&ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_LABEL,
 			(void*)&&ZEND_DO_ICALL_SPEC_RETVAL_USED_LABEL,
-			(void*)&&ZEND_DO_ICALL_SPEC_OBSERVER_LABEL,
-			(void*)&&ZEND_DO_ICALL_SPEC_OBSERVER_LABEL,
 			(void*)&&ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_LABEL,
 			(void*)&&ZEND_DO_UCALL_SPEC_RETVAL_USED_LABEL,
 			(void*)&&ZEND_DO_UCALL_SPEC_OBSERVER_LABEL,
@@ -55945,24 +55707,18 @@
 		LOAD_NEXT_OPLINE();
 		ZEND_VM_LEAVE();
 	} else if (EXPECTED((call_info & ZEND_CALL_TOP) == 0)) {
-		if (EX(func)->op_array.last_var > 0) {
-			zend_detach_symbol_table(execute_data);
-			call_info |= ZEND_CALL_NEEDS_REATTACH;
-		}
+		zend_detach_symbol_table(execute_data);
 		zend_destroy_static_vars(&EX(func)->op_array);
 		destroy_op_array(&EX(func)->op_array);
 		efree_size(EX(func), sizeof(zend_op_array));
+#ifdef ZEND_PREFER_RELOAD
+		call_info = EX_CALL_INFO();
+#endif
 		old_execute_data = execute_data;
 		execute_data = EG(current_execute_data) = EX(prev_execute_data);
 		zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
 
-		if (call_info & ZEND_CALL_NEEDS_REATTACH) {
-			if (EX(func)->op_array.last_var > 0) {
-				zend_attach_symbol_table(execute_data);
-			} else {
-				ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_NEEDS_REATTACH);
-			}
-		}
+		zend_attach_symbol_table(execute_data);
 		if (UNEXPECTED(EG(exception) != NULL)) {
 			zend_rethrow_exception(execute_data);
 			HANDLE_EXCEPTION_LEAVE();
@@ -55993,25 +55749,16 @@
 		} else /* if (call_kind == ZEND_CALL_TOP_CODE) */ {
 			zend_array *symbol_table = EX(symbol_table);
 
-			if (EX(func)->op_array.last_var > 0) {
-				zend_detach_symbol_table(execute_data);
-				call_info |= ZEND_CALL_NEEDS_REATTACH;
-			}
-			if (call_info & ZEND_CALL_NEEDS_REATTACH) {
-				old_execute_data = EX(prev_execute_data);
-				while (old_execute_data) {
-					if (old_execute_data->func && (ZEND_CALL_INFO(old_execute_data) & ZEND_CALL_HAS_SYMBOL_TABLE)) {
-						if (old_execute_data->symbol_table == symbol_table) {
-							if (old_execute_data->func->op_array.last_var > 0) {
-								zend_attach_symbol_table(old_execute_data);
-							} else {
-								ZEND_ADD_CALL_FLAG(old_execute_data, ZEND_CALL_NEEDS_REATTACH);
-							}
-						}
-						break;
+			zend_detach_symbol_table(execute_data);
+			old_execute_data = EX(prev_execute_data);
+			while (old_execute_data) {
+				if (old_execute_data->func && (ZEND_CALL_INFO(old_execute_data) & ZEND_CALL_HAS_SYMBOL_TABLE)) {
+					if (old_execute_data->symbol_table == symbol_table) {
+						zend_attach_symbol_table(old_execute_data);
 					}
-					old_execute_data = old_execute_data->prev_execute_data;
+					break;
 				}
+				old_execute_data = old_execute_data->prev_execute_data;
 			}
 			EG(current_execute_data) = EX(prev_execute_data);
 			ZEND_VM_RETURN();
@@ -56031,10 +55778,6 @@
 				VM_TRACE(ZEND_DO_ICALL_SPEC_RETVAL_USED)
 				ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 				HYBRID_BREAK();
-			HYBRID_CASE(ZEND_DO_ICALL_SPEC_OBSERVER):
-				VM_TRACE(ZEND_DO_ICALL_SPEC_OBSERVER)
-				ZEND_DO_ICALL_SPEC_OBSERVER_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
-				HYBRID_BREAK();
 			HYBRID_CASE(ZEND_DO_UCALL_SPEC_RETVAL_UNUSED):
 				VM_TRACE(ZEND_DO_UCALL_SPEC_RETVAL_UNUSED)
 				ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -56231,6 +55974,10 @@
 				VM_TRACE(ZEND_JMPNZ_SPEC_CONST)
 				ZEND_JMPNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 				HYBRID_BREAK();
+			HYBRID_CASE(ZEND_JMPZNZ_SPEC_CONST):
+				VM_TRACE(ZEND_JMPZNZ_SPEC_CONST)
+				ZEND_JMPZNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+				HYBRID_BREAK();
 			HYBRID_CASE(ZEND_JMPZ_EX_SPEC_CONST):
 				VM_TRACE(ZEND_JMPZ_EX_SPEC_CONST)
 				ZEND_JMPZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -57504,6 +57251,10 @@
 				VM_TRACE(ZEND_JMPNZ_SPEC_TMPVAR)
 				ZEND_JMPNZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 				HYBRID_BREAK();
+			HYBRID_CASE(ZEND_JMPZNZ_SPEC_TMPVAR):
+				VM_TRACE(ZEND_JMPZNZ_SPEC_TMPVAR)
+				ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+				HYBRID_BREAK();
 			HYBRID_CASE(ZEND_JMPZ_EX_SPEC_TMPVAR):
 				VM_TRACE(ZEND_JMPZ_EX_SPEC_TMPVAR)
 				ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -59276,6 +59027,10 @@
 				VM_TRACE(ZEND_JMPNZ_SPEC_CV)
 				ZEND_JMPNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 				HYBRID_BREAK();
+			HYBRID_CASE(ZEND_JMPZNZ_SPEC_CV):
+				VM_TRACE(ZEND_JMPZNZ_SPEC_CV)
+				ZEND_JMPZNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+				HYBRID_BREAK();
 			HYBRID_CASE(ZEND_JMPZ_EX_SPEC_CV):
 				VM_TRACE(ZEND_JMPZ_EX_SPEC_CV)
 				ZEND_JMPZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -61668,6 +61423,11 @@
 		ZEND_JMPNZ_SPEC_TMPVAR_HANDLER,
 		ZEND_NULL_HANDLER,
 		ZEND_JMPNZ_SPEC_CV_HANDLER,
+		ZEND_JMPZNZ_SPEC_CONST_HANDLER,
+		ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER,
+		ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER,
+		ZEND_NULL_HANDLER,
+		ZEND_JMPZNZ_SPEC_CV_HANDLER,
 		ZEND_JMPZ_EX_SPEC_CONST_HANDLER,
 		ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER,
 		ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER,
@@ -62591,8 +62351,6 @@
 		ZEND_INIT_DYNAMIC_CALL_SPEC_CV_HANDLER,
 		ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_HANDLER,
 		ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER,
-		ZEND_DO_ICALL_SPEC_OBSERVER_HANDLER,
-		ZEND_DO_ICALL_SPEC_OBSERVER_HANDLER,
 		ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_HANDLER,
 		ZEND_DO_UCALL_SPEC_RETVAL_USED_HANDLER,
 		ZEND_DO_UCALL_SPEC_OBSERVER_HANDLER,
@@ -63900,217 +63658,165 @@
 		1255,
 		1256 | SPEC_RULE_OP1,
 		1261 | SPEC_RULE_OP1,
-		3450,
 		1266 | SPEC_RULE_OP1,
 		1271 | SPEC_RULE_OP1,
-		1276 | SPEC_RULE_OP2,
-		1281,
-		1282 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
-		1292 | SPEC_RULE_OP1,
+		1276 | SPEC_RULE_OP1,
+		1281 | SPEC_RULE_OP2,
+		1286,
+		1287 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
 		1297 | SPEC_RULE_OP1,
-		1302 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1327 | SPEC_RULE_OP2,
+		1302 | SPEC_RULE_OP1,
+		1307 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
 		1332 | SPEC_RULE_OP2,
 		1337 | SPEC_RULE_OP2,
-		1342,
-		1343,
-		1344,
-		1345 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
+		1342 | SPEC_RULE_OP2,
+		1347,
+		1348,
 		1349,
-		1350 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
-		1360,
-		1361,
-		1362 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1387 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
-		1437 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1462 | SPEC_RULE_OP1,
-		1467,
-		1468,
-		1469 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1494 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1519 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
-		1529 | SPEC_RULE_OP1,
-		1534 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1559 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1584 | SPEC_RULE_OP1,
-		1589,
-		1590,
-		1591 | SPEC_RULE_OP1,
-		1596 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1621 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1646 | SPEC_RULE_OP1,
-		1651 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1676 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1701 | SPEC_RULE_OP1,
-		1706 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1731 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1756 | SPEC_RULE_OP1,
-		1761 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1786 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1811 | SPEC_RULE_OP1,
-		1816 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1841 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1866 | SPEC_RULE_OP1,
-		1871 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1896 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1921 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		1946,
-		1947 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
-		1957,
-		1958,
-		1959,
-		1960,
-		1961,
-		1962 | SPEC_RULE_OP2,
-		1967,
-		1968 | SPEC_RULE_OP1,
-		1973 | SPEC_RULE_OP2,
-		1978 | SPEC_RULE_OP1,
-		1983 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
-		1993 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		2018 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		2043 | SPEC_RULE_OP1,
-		2048 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		2073 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
-		2123 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		2148 | SPEC_RULE_OP2,
-		2153,
-		2154 | SPEC_RULE_OP1,
+		1350 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
+		1354,
+		1355 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
+		1365,
+		1366,
+		1367 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1392 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
+		1442 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1467 | SPEC_RULE_OP1,
+		1472,
+		1473,
+		1474 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1499 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1524 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
+		1534 | SPEC_RULE_OP1,
+		1539 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1564 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1589 | SPEC_RULE_OP1,
+		1594,
+		1595,
+		1596 | SPEC_RULE_OP1,
+		1601 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1626 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1651 | SPEC_RULE_OP1,
+		1656 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1681 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1706 | SPEC_RULE_OP1,
+		1711 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1736 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1761 | SPEC_RULE_OP1,
+		1766 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1791 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1816 | SPEC_RULE_OP1,
+		1821 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1846 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1871 | SPEC_RULE_OP1,
+		1876 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1901 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1926 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		1951,
+		1952 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
+		1962,
+		1963,
+		1964,
+		1965,
+		1966,
+		1967 | SPEC_RULE_OP2,
+		1972,
+		1973 | SPEC_RULE_OP1,
+		1978 | SPEC_RULE_OP2,
+		1983 | SPEC_RULE_OP1,
+		1988 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
+		1998 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		2023 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		2048 | SPEC_RULE_OP1,
+		2053 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		2078 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
+		2128 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		2153 | SPEC_RULE_OP2,
+		2158,
 		2159 | SPEC_RULE_OP1,
-		2164,
-		2165 | SPEC_RULE_OP1,
+		2164 | SPEC_RULE_OP1,
+		2169,
 		2170 | SPEC_RULE_OP1,
 		2175 | SPEC_RULE_OP1,
-		2180,
-		2181,
-		2182 | SPEC_RULE_OP2,
-		2187 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
-		2191 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
-		2195 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
-		2199 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		2199 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		2224 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		2224 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		2249 | SPEC_RULE_OP1,
-		2254,
-		2255 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		2280,
-		2281 | SPEC_RULE_OP1,
-		2286,
-		2287,
-		2288,
+		2180 | SPEC_RULE_OP1,
+		2185,
+		2186,
+		2187 | SPEC_RULE_OP2,
+		2192 | SPEC_RULE_RETVAL,
+		2194 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
+		2198 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
+		2202 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		2202 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		2227 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		2227 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		2252 | SPEC_RULE_OP1,
+		2257,
+		2258 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		2283,
+		2284 | SPEC_RULE_OP1,
 		2289,
 		2290,
 		2291,
 		2292,
-		2293 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		2318,
-		2319,
-		2320,
-		2321 | SPEC_RULE_OP1,
-		2326,
-		2327 | SPEC_RULE_ISSET,
-		2329 | SPEC_RULE_OP2,
-		2334,
-		2335 | SPEC_RULE_OP1,
-		2340 | SPEC_RULE_OBSERVER,
-		2342,
-		2343 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		2368 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
-		2378,
-		2379,
-		2380,
+		2293,
+		2294,
+		2295,
+		2296 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		2321,
+		2322,
+		2323,
+		2324 | SPEC_RULE_OP1,
+		2329,
+		2330 | SPEC_RULE_ISSET,
+		2332 | SPEC_RULE_OP2,
+		2337,
+		2338 | SPEC_RULE_OP1,
+		2343 | SPEC_RULE_OBSERVER,
+		2345,
+		2346 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		2371 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
 		2381,
-		2382 | SPEC_RULE_OP1,
-		2387,
-		2388,
-		2389 | SPEC_RULE_OP1,
-		2394 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		2419,
-		2420 | SPEC_RULE_OP1,
-		2425,
-		2426,
-		2427,
+		2382,
+		2383,
+		2384,
+		2385 | SPEC_RULE_OP1,
+		2390,
+		2391,
+		2392 | SPEC_RULE_OP1,
+		2397 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		2422,
+		2423 | SPEC_RULE_OP1,
 		2428,
 		2429,
 		2430,
 		2431,
 		2432,
-		2433 | SPEC_RULE_OP1,
-		2438,
-		2439,
-		2440,
-		2441 | SPEC_RULE_OP2,
-		2446,
-		2447 | SPEC_RULE_OP1,
-		2452 | SPEC_RULE_OP1,
-		2457 | SPEC_RULE_OP1,
-		2462 | SPEC_RULE_OP1,
-		2467 | SPEC_RULE_OP1,
-		2472,
-		2473 | SPEC_RULE_OP1,
-		2478 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		2503 | SPEC_RULE_OP1,
-		2508 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-		2533 | SPEC_RULE_OP1,
-		2538 | SPEC_RULE_OP1,
-		2543,
-		2544,
-		2545,
+		2433,
+		2434,
+		2435,
+		2436 | SPEC_RULE_OP1,
+		2441,
+		2442,
+		2443,
+		2444 | SPEC_RULE_OP2,
+		2449,
+		2450 | SPEC_RULE_OP1,
+		2455 | SPEC_RULE_OP1,
+		2460 | SPEC_RULE_OP1,
+		2465 | SPEC_RULE_OP1,
+		2470 | SPEC_RULE_OP1,
+		2475,
+		2476 | SPEC_RULE_OP1,
+		2481 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		2506 | SPEC_RULE_OP1,
+		2511 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+		2536 | SPEC_RULE_OP1,
+		2541 | SPEC_RULE_OP1,
 		2546,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
-		3450,
+		2547,
+		2548,
+		2549,
+		3453
 	};
 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
 	zend_opcode_handler_funcs = labels;
@@ -64283,7 +63989,7 @@
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2549 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
+				spec = 2552 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
 				if (op->op1_type < op->op2_type) {
 					zend_swap_operands(op);
 				}
@@ -64291,7 +63997,7 @@
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2574 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
+				spec = 2577 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
 				if (op->op1_type < op->op2_type) {
 					zend_swap_operands(op);
 				}
@@ -64299,7 +64005,7 @@
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2599 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
+				spec = 2602 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
 				if (op->op1_type < op->op2_type) {
 					zend_swap_operands(op);
 				}
@@ -64310,17 +64016,17 @@
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2624 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+				spec = 2627 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
 			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2649 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+				spec = 2652 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2674 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+				spec = 2677 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
 			}
 			break;
 		case ZEND_MUL:
@@ -64331,17 +64037,17 @@
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2699 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
+				spec = 2702 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
 			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2724 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
+				spec = 2727 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2749 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
+				spec = 2752 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
 			}
 			break;
 		case ZEND_IS_IDENTICAL:
@@ -64352,14 +64058,14 @@
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2774 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
+				spec = 2777 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2849 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
+				spec = 2852 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
 			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
-				spec = 3074 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
+				spec = 3077 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
 			}
 			break;
 		case ZEND_IS_NOT_IDENTICAL:
@@ -64370,14 +64076,14 @@
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2924 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
+				spec = 2927 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2999 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
+				spec = 3002 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
 			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
-				spec = 3079 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
+				spec = 3082 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
 			}
 			break;
 		case ZEND_IS_EQUAL:
@@ -64388,12 +64094,12 @@
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2774 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
+				spec = 2777 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2849 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
+				spec = 2852 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
 			}
 			break;
 		case ZEND_IS_NOT_EQUAL:
@@ -64404,12 +64110,12 @@
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2924 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
+				spec = 2927 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 2999 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
+				spec = 3002 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
 			}
 			break;
 		case ZEND_IS_SMALLER:
@@ -64417,12 +64123,12 @@
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 3084 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+				spec = 3087 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 3159 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+				spec = 3162 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
 			}
 			break;
 		case ZEND_IS_SMALLER_OR_EQUAL:
@@ -64430,74 +64136,74 @@
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 3234 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+				spec = 3237 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 3309 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+				spec = 3312 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
 			}
 			break;
 		case ZEND_QM_ASSIGN:
 			if (op1_info == MAY_BE_LONG) {
-				spec = 3396 | SPEC_RULE_OP1;
+				spec = 3399 | SPEC_RULE_OP1;
 			} else if (op1_info == MAY_BE_DOUBLE) {
-				spec = 3401 | SPEC_RULE_OP1;
+				spec = 3404 | SPEC_RULE_OP1;
 			} else if ((op->op1_type == IS_CONST) ? !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1)) : (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) {
-				spec = 3406 | SPEC_RULE_OP1;
+				spec = 3409 | SPEC_RULE_OP1;
 			}
 			break;
 		case ZEND_PRE_INC:
 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
-				spec = 3384 | SPEC_RULE_RETVAL;
+				spec = 3387 | SPEC_RULE_RETVAL;
 			} else if (op1_info == MAY_BE_LONG) {
-				spec = 3386 | SPEC_RULE_RETVAL;
+				spec = 3389 | SPEC_RULE_RETVAL;
 			}
 			break;
 		case ZEND_PRE_DEC:
 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
-				spec = 3388 | SPEC_RULE_RETVAL;
+				spec = 3391 | SPEC_RULE_RETVAL;
 			} else if (op1_info == MAY_BE_LONG) {
-				spec = 3390 | SPEC_RULE_RETVAL;
+				spec = 3393 | SPEC_RULE_RETVAL;
 			}
 			break;
 		case ZEND_POST_INC:
 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
-				spec = 3392;
+				spec = 3395;
 			} else if (op1_info == MAY_BE_LONG) {
-				spec = 3393;
+				spec = 3396;
 			}
 			break;
 		case ZEND_POST_DEC:
 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
-				spec = 3394;
+				spec = 3397;
 			} else if (op1_info == MAY_BE_LONG) {
-				spec = 3395;
+				spec = 3398;
 			}
 			break;
 		case ZEND_JMP:
 			if (OP_JMP_ADDR(op, op->op1) > op) {
-				spec = 2548;
+				spec = 2551;
 			}
 			break;
 		case ZEND_RECV:
 			if (op->op2.num == MAY_BE_ANY) {
-				spec = 2547;
+				spec = 2550;
 			}
 			break;
 		case ZEND_SEND_VAL:
 			if (op->op1_type == IS_CONST && op->op2_type == IS_UNUSED && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
-				spec = 3446;
+				spec = 3449;
 			}
 			break;
 		case ZEND_SEND_VAR_EX:
 			if (op->op2_type == IS_UNUSED && op->op2.num <= MAX_ARG_FLAG_NUM && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
-				spec = 3441 | SPEC_RULE_OP1;
+				spec = 3444 | SPEC_RULE_OP1;
 			}
 			break;
 		case ZEND_FE_FETCH_R:
 			if (op->op2_type == IS_CV && (op1_info & (MAY_BE_ANY|MAY_BE_REF)) == MAY_BE_ARRAY) {
-				spec = 3448 | SPEC_RULE_RETVAL;
+				spec = 3451 | SPEC_RULE_RETVAL;
 			}
 			break;
 		case ZEND_FETCH_DIM_R:
@@ -64505,17 +64211,17 @@
 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
 					break;
 				}
-				spec = 3411 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+				spec = 3414 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
 			}
 			break;
 		case ZEND_SEND_VAL_EX:
 			if (op->op2_type == IS_UNUSED && op->op2.num <= MAX_ARG_FLAG_NUM && op->op1_type == IS_CONST && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
-				spec = 3447;
+				spec = 3450;
 			}
 			break;
 		case ZEND_SEND_VAR:
 			if (op->op2_type == IS_UNUSED && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
-				spec = 3436 | SPEC_RULE_OP1;
+				spec = 3439 | SPEC_RULE_OP1;
 			}
 			break;
 		case ZEND_BW_OR:

Modified: trunk/MgDev/Oem/php/include/Zend/zend_vm_handlers.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_vm_handlers.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_vm_handlers.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -575,1276 +575,1278 @@
 	_(1262, ZEND_JMPNZ_SPEC_TMPVAR) \
 	_(1263, ZEND_JMPNZ_SPEC_TMPVAR) \
 	_(1265, ZEND_JMPNZ_SPEC_CV) \
-	_(1266, ZEND_JMPZ_EX_SPEC_CONST) \
-	_(1267, ZEND_JMPZ_EX_SPEC_TMPVAR) \
-	_(1268, ZEND_JMPZ_EX_SPEC_TMPVAR) \
-	_(1270, ZEND_JMPZ_EX_SPEC_CV) \
-	_(1271, ZEND_JMPNZ_EX_SPEC_CONST) \
-	_(1272, ZEND_JMPNZ_EX_SPEC_TMPVAR) \
-	_(1273, ZEND_JMPNZ_EX_SPEC_TMPVAR) \
-	_(1275, ZEND_JMPNZ_EX_SPEC_CV) \
-	_(1276, ZEND_CASE_SPEC_TMPVAR_CONST) \
-	_(1277, ZEND_CASE_SPEC_TMPVAR_TMPVAR) \
-	_(1278, ZEND_CASE_SPEC_TMPVAR_TMPVAR) \
-	_(1280, ZEND_CASE_SPEC_TMPVAR_CV) \
-	_(1281, ZEND_CHECK_VAR_SPEC_CV_UNUSED) \
-	_(1282, ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_CONST) \
-	_(1283, ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_CONST) \
-	_(1288, ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_UNUSED) \
-	_(1289, ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_UNUSED_QUICK) \
-	_(1292, ZEND_CAST_SPEC_CONST) \
-	_(1293, ZEND_CAST_SPEC_TMP) \
-	_(1294, ZEND_CAST_SPEC_VAR) \
-	_(1296, ZEND_CAST_SPEC_CV) \
-	_(1297, ZEND_BOOL_SPEC_CONST) \
-	_(1298, ZEND_BOOL_SPEC_TMPVAR) \
-	_(1299, ZEND_BOOL_SPEC_TMPVAR) \
-	_(1301, ZEND_BOOL_SPEC_CV) \
-	_(1302, ZEND_FAST_CONCAT_SPEC_CONST_CONST) \
-	_(1303, ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR) \
-	_(1304, ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR) \
-	_(1306, ZEND_FAST_CONCAT_SPEC_CONST_CV) \
-	_(1307, ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST) \
-	_(1308, ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR) \
-	_(1309, ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR) \
-	_(1311, ZEND_FAST_CONCAT_SPEC_TMPVAR_CV) \
+	_(1266, ZEND_JMPZNZ_SPEC_CONST) \
+	_(1267, ZEND_JMPZNZ_SPEC_TMPVAR) \
+	_(1268, ZEND_JMPZNZ_SPEC_TMPVAR) \
+	_(1270, ZEND_JMPZNZ_SPEC_CV) \
+	_(1271, ZEND_JMPZ_EX_SPEC_CONST) \
+	_(1272, ZEND_JMPZ_EX_SPEC_TMPVAR) \
+	_(1273, ZEND_JMPZ_EX_SPEC_TMPVAR) \
+	_(1275, ZEND_JMPZ_EX_SPEC_CV) \
+	_(1276, ZEND_JMPNZ_EX_SPEC_CONST) \
+	_(1277, ZEND_JMPNZ_EX_SPEC_TMPVAR) \
+	_(1278, ZEND_JMPNZ_EX_SPEC_TMPVAR) \
+	_(1280, ZEND_JMPNZ_EX_SPEC_CV) \
+	_(1281, ZEND_CASE_SPEC_TMPVAR_CONST) \
+	_(1282, ZEND_CASE_SPEC_TMPVAR_TMPVAR) \
+	_(1283, ZEND_CASE_SPEC_TMPVAR_TMPVAR) \
+	_(1285, ZEND_CASE_SPEC_TMPVAR_CV) \
+	_(1286, ZEND_CHECK_VAR_SPEC_CV_UNUSED) \
+	_(1287, ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_CONST) \
+	_(1288, ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_CONST) \
+	_(1293, ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_UNUSED) \
+	_(1294, ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_UNUSED_QUICK) \
+	_(1297, ZEND_CAST_SPEC_CONST) \
+	_(1298, ZEND_CAST_SPEC_TMP) \
+	_(1299, ZEND_CAST_SPEC_VAR) \
+	_(1301, ZEND_CAST_SPEC_CV) \
+	_(1302, ZEND_BOOL_SPEC_CONST) \
+	_(1303, ZEND_BOOL_SPEC_TMPVAR) \
+	_(1304, ZEND_BOOL_SPEC_TMPVAR) \
+	_(1306, ZEND_BOOL_SPEC_CV) \
+	_(1307, ZEND_FAST_CONCAT_SPEC_CONST_CONST) \
+	_(1308, ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR) \
+	_(1309, ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR) \
+	_(1311, ZEND_FAST_CONCAT_SPEC_CONST_CV) \
 	_(1312, ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST) \
 	_(1313, ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR) \
 	_(1314, ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR) \
 	_(1316, ZEND_FAST_CONCAT_SPEC_TMPVAR_CV) \
-	_(1322, ZEND_FAST_CONCAT_SPEC_CV_CONST) \
-	_(1323, ZEND_FAST_CONCAT_SPEC_CV_TMPVAR) \
-	_(1324, ZEND_FAST_CONCAT_SPEC_CV_TMPVAR) \
-	_(1326, ZEND_FAST_CONCAT_SPEC_CV_CV) \
-	_(1327, ZEND_ROPE_INIT_SPEC_UNUSED_CONST) \
-	_(1328, ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR) \
-	_(1329, ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR) \
-	_(1331, ZEND_ROPE_INIT_SPEC_UNUSED_CV) \
-	_(1332, ZEND_ROPE_ADD_SPEC_TMP_CONST) \
-	_(1333, ZEND_ROPE_ADD_SPEC_TMP_TMPVAR) \
-	_(1334, ZEND_ROPE_ADD_SPEC_TMP_TMPVAR) \
-	_(1336, ZEND_ROPE_ADD_SPEC_TMP_CV) \
-	_(1337, ZEND_ROPE_END_SPEC_TMP_CONST) \
-	_(1338, ZEND_ROPE_END_SPEC_TMP_TMPVAR) \
-	_(1339, ZEND_ROPE_END_SPEC_TMP_TMPVAR) \
-	_(1341, ZEND_ROPE_END_SPEC_TMP_CV) \
-	_(1342, ZEND_BEGIN_SILENCE_SPEC) \
-	_(1343, ZEND_END_SILENCE_SPEC_TMP) \
-	_(1344, ZEND_INIT_FCALL_BY_NAME_SPEC_CONST) \
-	_(1345, ZEND_DO_FCALL_SPEC_RETVAL_UNUSED) \
-	_(1346, ZEND_DO_FCALL_SPEC_RETVAL_USED) \
-	_(1347, ZEND_DO_FCALL_SPEC_OBSERVER) \
-	_(1348, ZEND_DO_FCALL_SPEC_OBSERVER) \
-	_(1349, ZEND_INIT_FCALL_SPEC_CONST) \
-	_(1350, ZEND_RETURN_SPEC_CONST) \
-	_(1351, ZEND_RETURN_SPEC_OBSERVER) \
-	_(1352, ZEND_RETURN_SPEC_TMP) \
-	_(1353, ZEND_RETURN_SPEC_OBSERVER) \
-	_(1354, ZEND_RETURN_SPEC_VAR) \
-	_(1355, ZEND_RETURN_SPEC_OBSERVER) \
-	_(1358, ZEND_RETURN_SPEC_CV) \
-	_(1359, ZEND_RETURN_SPEC_OBSERVER) \
-	_(1360, ZEND_RECV_SPEC_UNUSED) \
-	_(1361, ZEND_RECV_INIT_SPEC_CONST) \
-	_(1362, ZEND_SEND_VAL_SPEC_CONST_CONST) \
-	_(1365, ZEND_SEND_VAL_SPEC_CONST_UNUSED) \
-	_(1367, ZEND_SEND_VAL_SPEC_TMPVAR_CONST) \
-	_(1370, ZEND_SEND_VAL_SPEC_TMPVAR_UNUSED) \
+	_(1317, ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST) \
+	_(1318, ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR) \
+	_(1319, ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR) \
+	_(1321, ZEND_FAST_CONCAT_SPEC_TMPVAR_CV) \
+	_(1327, ZEND_FAST_CONCAT_SPEC_CV_CONST) \
+	_(1328, ZEND_FAST_CONCAT_SPEC_CV_TMPVAR) \
+	_(1329, ZEND_FAST_CONCAT_SPEC_CV_TMPVAR) \
+	_(1331, ZEND_FAST_CONCAT_SPEC_CV_CV) \
+	_(1332, ZEND_ROPE_INIT_SPEC_UNUSED_CONST) \
+	_(1333, ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR) \
+	_(1334, ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR) \
+	_(1336, ZEND_ROPE_INIT_SPEC_UNUSED_CV) \
+	_(1337, ZEND_ROPE_ADD_SPEC_TMP_CONST) \
+	_(1338, ZEND_ROPE_ADD_SPEC_TMP_TMPVAR) \
+	_(1339, ZEND_ROPE_ADD_SPEC_TMP_TMPVAR) \
+	_(1341, ZEND_ROPE_ADD_SPEC_TMP_CV) \
+	_(1342, ZEND_ROPE_END_SPEC_TMP_CONST) \
+	_(1343, ZEND_ROPE_END_SPEC_TMP_TMPVAR) \
+	_(1344, ZEND_ROPE_END_SPEC_TMP_TMPVAR) \
+	_(1346, ZEND_ROPE_END_SPEC_TMP_CV) \
+	_(1347, ZEND_BEGIN_SILENCE_SPEC) \
+	_(1348, ZEND_END_SILENCE_SPEC_TMP) \
+	_(1349, ZEND_INIT_FCALL_BY_NAME_SPEC_CONST) \
+	_(1350, ZEND_DO_FCALL_SPEC_RETVAL_UNUSED) \
+	_(1351, ZEND_DO_FCALL_SPEC_RETVAL_USED) \
+	_(1352, ZEND_DO_FCALL_SPEC_OBSERVER) \
+	_(1353, ZEND_DO_FCALL_SPEC_OBSERVER) \
+	_(1354, ZEND_INIT_FCALL_SPEC_CONST) \
+	_(1355, ZEND_RETURN_SPEC_CONST) \
+	_(1356, ZEND_RETURN_SPEC_OBSERVER) \
+	_(1357, ZEND_RETURN_SPEC_TMP) \
+	_(1358, ZEND_RETURN_SPEC_OBSERVER) \
+	_(1359, ZEND_RETURN_SPEC_VAR) \
+	_(1360, ZEND_RETURN_SPEC_OBSERVER) \
+	_(1363, ZEND_RETURN_SPEC_CV) \
+	_(1364, ZEND_RETURN_SPEC_OBSERVER) \
+	_(1365, ZEND_RECV_SPEC_UNUSED) \
+	_(1366, ZEND_RECV_INIT_SPEC_CONST) \
+	_(1367, ZEND_SEND_VAL_SPEC_CONST_CONST) \
+	_(1370, ZEND_SEND_VAL_SPEC_CONST_UNUSED) \
 	_(1372, ZEND_SEND_VAL_SPEC_TMPVAR_CONST) \
 	_(1375, ZEND_SEND_VAL_SPEC_TMPVAR_UNUSED) \
-	_(1407, ZEND_SEND_VAR_EX_SPEC_VAR_CONST) \
-	_(1408, ZEND_SEND_VAR_EX_SPEC_VAR_CONST) \
-	_(1413, ZEND_SEND_VAR_EX_SPEC_VAR_UNUSED) \
-	_(1414, ZEND_SEND_VAR_EX_SPEC_VAR_UNUSED_QUICK) \
-	_(1427, ZEND_SEND_VAR_EX_SPEC_CV_CONST) \
-	_(1428, ZEND_SEND_VAR_EX_SPEC_CV_CONST) \
-	_(1433, ZEND_SEND_VAR_EX_SPEC_CV_UNUSED) \
-	_(1434, ZEND_SEND_VAR_EX_SPEC_CV_UNUSED_QUICK) \
-	_(1447, ZEND_SEND_REF_SPEC_VAR_CONST) \
-	_(1450, ZEND_SEND_REF_SPEC_VAR_UNUSED) \
-	_(1457, ZEND_SEND_REF_SPEC_CV_CONST) \
-	_(1460, ZEND_SEND_REF_SPEC_CV_UNUSED) \
-	_(1462, ZEND_NEW_SPEC_CONST_UNUSED) \
-	_(1464, ZEND_NEW_SPEC_VAR_UNUSED) \
-	_(1465, ZEND_NEW_SPEC_UNUSED_UNUSED) \
-	_(1467, ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST) \
-	_(1468, ZEND_FREE_SPEC_TMPVAR) \
-	_(1469, ZEND_INIT_ARRAY_SPEC_CONST_CONST) \
-	_(1470, ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR) \
-	_(1471, ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR) \
-	_(1472, ZEND_INIT_ARRAY_SPEC_CONST_UNUSED) \
-	_(1473, ZEND_INIT_ARRAY_SPEC_CONST_CV) \
-	_(1474, ZEND_INIT_ARRAY_SPEC_TMP_CONST) \
-	_(1475, ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR) \
-	_(1476, ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR) \
-	_(1477, ZEND_INIT_ARRAY_SPEC_TMP_UNUSED) \
-	_(1478, ZEND_INIT_ARRAY_SPEC_TMP_CV) \
-	_(1479, ZEND_INIT_ARRAY_SPEC_VAR_CONST) \
-	_(1480, ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR) \
-	_(1481, ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR) \
-	_(1482, ZEND_INIT_ARRAY_SPEC_VAR_UNUSED) \
-	_(1483, ZEND_INIT_ARRAY_SPEC_VAR_CV) \
-	_(1484, ZEND_INIT_ARRAY_SPEC_UNUSED_CONST) \
-	_(1485, ZEND_INIT_ARRAY_SPEC_UNUSED_TMPVAR) \
-	_(1486, ZEND_INIT_ARRAY_SPEC_UNUSED_TMPVAR) \
-	_(1487, ZEND_INIT_ARRAY_SPEC_UNUSED_UNUSED) \
-	_(1488, ZEND_INIT_ARRAY_SPEC_UNUSED_CV) \
-	_(1489, ZEND_INIT_ARRAY_SPEC_CV_CONST) \
-	_(1490, ZEND_INIT_ARRAY_SPEC_CV_TMPVAR) \
-	_(1491, ZEND_INIT_ARRAY_SPEC_CV_TMPVAR) \
-	_(1492, ZEND_INIT_ARRAY_SPEC_CV_UNUSED) \
-	_(1493, ZEND_INIT_ARRAY_SPEC_CV_CV) \
-	_(1494, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST) \
-	_(1495, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR) \
-	_(1496, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR) \
-	_(1497, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED) \
-	_(1498, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV) \
-	_(1499, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST) \
-	_(1500, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR) \
-	_(1501, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR) \
-	_(1502, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED) \
-	_(1503, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV) \
-	_(1504, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST) \
-	_(1505, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR) \
-	_(1506, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR) \
-	_(1507, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED) \
-	_(1508, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV) \
-	_(1514, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST) \
-	_(1515, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR) \
-	_(1516, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR) \
-	_(1517, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED) \
-	_(1518, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV) \
-	_(1519, ZEND_INCLUDE_OR_EVAL_SPEC_CONST) \
-	_(1520, ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER) \
-	_(1521, ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR) \
-	_(1522, ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER) \
-	_(1523, ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR) \
-	_(1524, ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER) \
-	_(1527, ZEND_INCLUDE_OR_EVAL_SPEC_CV) \
-	_(1528, ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER) \
-	_(1529, ZEND_UNSET_VAR_SPEC_CONST_UNUSED) \
-	_(1530, ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED) \
-	_(1531, ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED) \
-	_(1533, ZEND_UNSET_VAR_SPEC_CV_UNUSED) \
-	_(1544, ZEND_UNSET_DIM_SPEC_VAR_CONST) \
-	_(1545, ZEND_UNSET_DIM_SPEC_VAR_TMPVAR) \
-	_(1546, ZEND_UNSET_DIM_SPEC_VAR_TMPVAR) \
-	_(1548, ZEND_UNSET_DIM_SPEC_VAR_CV) \
-	_(1554, ZEND_UNSET_DIM_SPEC_CV_CONST) \
-	_(1555, ZEND_UNSET_DIM_SPEC_CV_TMPVAR) \
-	_(1556, ZEND_UNSET_DIM_SPEC_CV_TMPVAR) \
-	_(1558, ZEND_UNSET_DIM_SPEC_CV_CV) \
-	_(1569, ZEND_UNSET_OBJ_SPEC_VAR_CONST) \
-	_(1570, ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR) \
-	_(1571, ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR) \
-	_(1573, ZEND_UNSET_OBJ_SPEC_VAR_CV) \
-	_(1574, ZEND_UNSET_OBJ_SPEC_UNUSED_CONST) \
-	_(1575, ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR) \
-	_(1576, ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR) \
-	_(1578, ZEND_UNSET_OBJ_SPEC_UNUSED_CV) \
-	_(1579, ZEND_UNSET_OBJ_SPEC_CV_CONST) \
-	_(1580, ZEND_UNSET_OBJ_SPEC_CV_TMPVAR) \
-	_(1581, ZEND_UNSET_OBJ_SPEC_CV_TMPVAR) \
-	_(1583, ZEND_UNSET_OBJ_SPEC_CV_CV) \
-	_(1584, ZEND_FE_RESET_R_SPEC_CONST) \
-	_(1585, ZEND_FE_RESET_R_SPEC_TMP) \
-	_(1586, ZEND_FE_RESET_R_SPEC_VAR) \
-	_(1588, ZEND_FE_RESET_R_SPEC_CV) \
-	_(1589, ZEND_FE_FETCH_R_SPEC_VAR) \
-	_(1590, ZEND_EXIT_SPEC) \
-	_(1591, ZEND_FETCH_R_SPEC_CONST_UNUSED) \
-	_(1592, ZEND_FETCH_R_SPEC_TMPVAR_UNUSED) \
-	_(1593, ZEND_FETCH_R_SPEC_TMPVAR_UNUSED) \
-	_(1595, ZEND_FETCH_R_SPEC_CV_UNUSED) \
-	_(1596, ZEND_FETCH_DIM_R_SPEC_CONST_CONST) \
-	_(1597, ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR) \
-	_(1598, ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR) \
-	_(1600, ZEND_FETCH_DIM_R_SPEC_CONST_CV) \
-	_(1601, ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST) \
-	_(1602, ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR) \
-	_(1603, ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR) \
-	_(1605, ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV) \
+	_(1377, ZEND_SEND_VAL_SPEC_TMPVAR_CONST) \
+	_(1380, ZEND_SEND_VAL_SPEC_TMPVAR_UNUSED) \
+	_(1412, ZEND_SEND_VAR_EX_SPEC_VAR_CONST) \
+	_(1413, ZEND_SEND_VAR_EX_SPEC_VAR_CONST) \
+	_(1418, ZEND_SEND_VAR_EX_SPEC_VAR_UNUSED) \
+	_(1419, ZEND_SEND_VAR_EX_SPEC_VAR_UNUSED_QUICK) \
+	_(1432, ZEND_SEND_VAR_EX_SPEC_CV_CONST) \
+	_(1433, ZEND_SEND_VAR_EX_SPEC_CV_CONST) \
+	_(1438, ZEND_SEND_VAR_EX_SPEC_CV_UNUSED) \
+	_(1439, ZEND_SEND_VAR_EX_SPEC_CV_UNUSED_QUICK) \
+	_(1452, ZEND_SEND_REF_SPEC_VAR_CONST) \
+	_(1455, ZEND_SEND_REF_SPEC_VAR_UNUSED) \
+	_(1462, ZEND_SEND_REF_SPEC_CV_CONST) \
+	_(1465, ZEND_SEND_REF_SPEC_CV_UNUSED) \
+	_(1467, ZEND_NEW_SPEC_CONST_UNUSED) \
+	_(1469, ZEND_NEW_SPEC_VAR_UNUSED) \
+	_(1470, ZEND_NEW_SPEC_UNUSED_UNUSED) \
+	_(1472, ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST) \
+	_(1473, ZEND_FREE_SPEC_TMPVAR) \
+	_(1474, ZEND_INIT_ARRAY_SPEC_CONST_CONST) \
+	_(1475, ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR) \
+	_(1476, ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR) \
+	_(1477, ZEND_INIT_ARRAY_SPEC_CONST_UNUSED) \
+	_(1478, ZEND_INIT_ARRAY_SPEC_CONST_CV) \
+	_(1479, ZEND_INIT_ARRAY_SPEC_TMP_CONST) \
+	_(1480, ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR) \
+	_(1481, ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR) \
+	_(1482, ZEND_INIT_ARRAY_SPEC_TMP_UNUSED) \
+	_(1483, ZEND_INIT_ARRAY_SPEC_TMP_CV) \
+	_(1484, ZEND_INIT_ARRAY_SPEC_VAR_CONST) \
+	_(1485, ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR) \
+	_(1486, ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR) \
+	_(1487, ZEND_INIT_ARRAY_SPEC_VAR_UNUSED) \
+	_(1488, ZEND_INIT_ARRAY_SPEC_VAR_CV) \
+	_(1489, ZEND_INIT_ARRAY_SPEC_UNUSED_CONST) \
+	_(1490, ZEND_INIT_ARRAY_SPEC_UNUSED_TMPVAR) \
+	_(1491, ZEND_INIT_ARRAY_SPEC_UNUSED_TMPVAR) \
+	_(1492, ZEND_INIT_ARRAY_SPEC_UNUSED_UNUSED) \
+	_(1493, ZEND_INIT_ARRAY_SPEC_UNUSED_CV) \
+	_(1494, ZEND_INIT_ARRAY_SPEC_CV_CONST) \
+	_(1495, ZEND_INIT_ARRAY_SPEC_CV_TMPVAR) \
+	_(1496, ZEND_INIT_ARRAY_SPEC_CV_TMPVAR) \
+	_(1497, ZEND_INIT_ARRAY_SPEC_CV_UNUSED) \
+	_(1498, ZEND_INIT_ARRAY_SPEC_CV_CV) \
+	_(1499, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST) \
+	_(1500, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR) \
+	_(1501, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR) \
+	_(1502, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED) \
+	_(1503, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV) \
+	_(1504, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST) \
+	_(1505, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR) \
+	_(1506, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR) \
+	_(1507, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED) \
+	_(1508, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV) \
+	_(1509, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST) \
+	_(1510, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR) \
+	_(1511, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR) \
+	_(1512, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED) \
+	_(1513, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV) \
+	_(1519, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST) \
+	_(1520, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR) \
+	_(1521, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR) \
+	_(1522, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED) \
+	_(1523, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV) \
+	_(1524, ZEND_INCLUDE_OR_EVAL_SPEC_CONST) \
+	_(1525, ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER) \
+	_(1526, ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR) \
+	_(1527, ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER) \
+	_(1528, ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR) \
+	_(1529, ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER) \
+	_(1532, ZEND_INCLUDE_OR_EVAL_SPEC_CV) \
+	_(1533, ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER) \
+	_(1534, ZEND_UNSET_VAR_SPEC_CONST_UNUSED) \
+	_(1535, ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED) \
+	_(1536, ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED) \
+	_(1538, ZEND_UNSET_VAR_SPEC_CV_UNUSED) \
+	_(1549, ZEND_UNSET_DIM_SPEC_VAR_CONST) \
+	_(1550, ZEND_UNSET_DIM_SPEC_VAR_TMPVAR) \
+	_(1551, ZEND_UNSET_DIM_SPEC_VAR_TMPVAR) \
+	_(1553, ZEND_UNSET_DIM_SPEC_VAR_CV) \
+	_(1559, ZEND_UNSET_DIM_SPEC_CV_CONST) \
+	_(1560, ZEND_UNSET_DIM_SPEC_CV_TMPVAR) \
+	_(1561, ZEND_UNSET_DIM_SPEC_CV_TMPVAR) \
+	_(1563, ZEND_UNSET_DIM_SPEC_CV_CV) \
+	_(1574, ZEND_UNSET_OBJ_SPEC_VAR_CONST) \
+	_(1575, ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR) \
+	_(1576, ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR) \
+	_(1578, ZEND_UNSET_OBJ_SPEC_VAR_CV) \
+	_(1579, ZEND_UNSET_OBJ_SPEC_UNUSED_CONST) \
+	_(1580, ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR) \
+	_(1581, ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR) \
+	_(1583, ZEND_UNSET_OBJ_SPEC_UNUSED_CV) \
+	_(1584, ZEND_UNSET_OBJ_SPEC_CV_CONST) \
+	_(1585, ZEND_UNSET_OBJ_SPEC_CV_TMPVAR) \
+	_(1586, ZEND_UNSET_OBJ_SPEC_CV_TMPVAR) \
+	_(1588, ZEND_UNSET_OBJ_SPEC_CV_CV) \
+	_(1589, ZEND_FE_RESET_R_SPEC_CONST) \
+	_(1590, ZEND_FE_RESET_R_SPEC_TMP) \
+	_(1591, ZEND_FE_RESET_R_SPEC_VAR) \
+	_(1593, ZEND_FE_RESET_R_SPEC_CV) \
+	_(1594, ZEND_FE_FETCH_R_SPEC_VAR) \
+	_(1595, ZEND_EXIT_SPEC) \
+	_(1596, ZEND_FETCH_R_SPEC_CONST_UNUSED) \
+	_(1597, ZEND_FETCH_R_SPEC_TMPVAR_UNUSED) \
+	_(1598, ZEND_FETCH_R_SPEC_TMPVAR_UNUSED) \
+	_(1600, ZEND_FETCH_R_SPEC_CV_UNUSED) \
+	_(1601, ZEND_FETCH_DIM_R_SPEC_CONST_CONST) \
+	_(1602, ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR) \
+	_(1603, ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR) \
+	_(1605, ZEND_FETCH_DIM_R_SPEC_CONST_CV) \
 	_(1606, ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST) \
 	_(1607, ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR) \
 	_(1608, ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR) \
 	_(1610, ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV) \
-	_(1616, ZEND_FETCH_DIM_R_SPEC_CV_CONST) \
-	_(1617, ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR) \
-	_(1618, ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR) \
-	_(1620, ZEND_FETCH_DIM_R_SPEC_CV_CV) \
-	_(1621, ZEND_FETCH_OBJ_R_SPEC_CONST_CONST) \
-	_(1622, ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR) \
-	_(1623, ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR) \
-	_(1625, ZEND_FETCH_OBJ_R_SPEC_CONST_CV) \
-	_(1626, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST) \
-	_(1627, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR) \
-	_(1628, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR) \
-	_(1630, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV) \
+	_(1611, ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST) \
+	_(1612, ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR) \
+	_(1613, ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR) \
+	_(1615, ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV) \
+	_(1621, ZEND_FETCH_DIM_R_SPEC_CV_CONST) \
+	_(1622, ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR) \
+	_(1623, ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR) \
+	_(1625, ZEND_FETCH_DIM_R_SPEC_CV_CV) \
+	_(1626, ZEND_FETCH_OBJ_R_SPEC_CONST_CONST) \
+	_(1627, ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR) \
+	_(1628, ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR) \
+	_(1630, ZEND_FETCH_OBJ_R_SPEC_CONST_CV) \
 	_(1631, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST) \
 	_(1632, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR) \
 	_(1633, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR) \
 	_(1635, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV) \
-	_(1636, ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST) \
-	_(1637, ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR) \
-	_(1638, ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR) \
-	_(1640, ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV) \
-	_(1641, ZEND_FETCH_OBJ_R_SPEC_CV_CONST) \
-	_(1642, ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR) \
-	_(1643, ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR) \
-	_(1645, ZEND_FETCH_OBJ_R_SPEC_CV_CV) \
-	_(1646, ZEND_FETCH_W_SPEC_CONST_UNUSED) \
-	_(1647, ZEND_FETCH_W_SPEC_TMPVAR_UNUSED) \
-	_(1648, ZEND_FETCH_W_SPEC_TMPVAR_UNUSED) \
-	_(1650, ZEND_FETCH_W_SPEC_CV_UNUSED) \
-	_(1661, ZEND_FETCH_DIM_W_SPEC_VAR_CONST) \
-	_(1662, ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR) \
-	_(1663, ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR) \
-	_(1664, ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED) \
-	_(1665, ZEND_FETCH_DIM_W_SPEC_VAR_CV) \
-	_(1671, ZEND_FETCH_DIM_W_SPEC_CV_CONST) \
-	_(1672, ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR) \
-	_(1673, ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR) \
-	_(1674, ZEND_FETCH_DIM_W_SPEC_CV_UNUSED) \
-	_(1675, ZEND_FETCH_DIM_W_SPEC_CV_CV) \
-	_(1686, ZEND_FETCH_OBJ_W_SPEC_VAR_CONST) \
-	_(1687, ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR) \
-	_(1688, ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR) \
-	_(1690, ZEND_FETCH_OBJ_W_SPEC_VAR_CV) \
-	_(1691, ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST) \
-	_(1692, ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR) \
-	_(1693, ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR) \
-	_(1695, ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV) \
-	_(1696, ZEND_FETCH_OBJ_W_SPEC_CV_CONST) \
-	_(1697, ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR) \
-	_(1698, ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR) \
-	_(1700, ZEND_FETCH_OBJ_W_SPEC_CV_CV) \
-	_(1701, ZEND_FETCH_RW_SPEC_CONST_UNUSED) \
-	_(1702, ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED) \
-	_(1703, ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED) \
-	_(1705, ZEND_FETCH_RW_SPEC_CV_UNUSED) \
-	_(1716, ZEND_FETCH_DIM_RW_SPEC_VAR_CONST) \
-	_(1717, ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR) \
-	_(1718, ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR) \
-	_(1719, ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED) \
-	_(1720, ZEND_FETCH_DIM_RW_SPEC_VAR_CV) \
-	_(1726, ZEND_FETCH_DIM_RW_SPEC_CV_CONST) \
-	_(1727, ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR) \
-	_(1728, ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR) \
-	_(1729, ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED) \
-	_(1730, ZEND_FETCH_DIM_RW_SPEC_CV_CV) \
-	_(1741, ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST) \
-	_(1742, ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR) \
-	_(1743, ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR) \
-	_(1745, ZEND_FETCH_OBJ_RW_SPEC_VAR_CV) \
-	_(1746, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST) \
-	_(1747, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR) \
-	_(1748, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR) \
-	_(1750, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV) \
-	_(1751, ZEND_FETCH_OBJ_RW_SPEC_CV_CONST) \
-	_(1752, ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR) \
-	_(1753, ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR) \
-	_(1755, ZEND_FETCH_OBJ_RW_SPEC_CV_CV) \
-	_(1756, ZEND_FETCH_IS_SPEC_CONST_UNUSED) \
-	_(1757, ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED) \
-	_(1758, ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED) \
-	_(1760, ZEND_FETCH_IS_SPEC_CV_UNUSED) \
-	_(1761, ZEND_FETCH_DIM_IS_SPEC_CONST_CONST) \
-	_(1762, ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR) \
-	_(1763, ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR) \
-	_(1765, ZEND_FETCH_DIM_IS_SPEC_CONST_CV) \
-	_(1766, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST) \
-	_(1767, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR) \
-	_(1768, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR) \
-	_(1770, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV) \
+	_(1636, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST) \
+	_(1637, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR) \
+	_(1638, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR) \
+	_(1640, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV) \
+	_(1641, ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST) \
+	_(1642, ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR) \
+	_(1643, ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR) \
+	_(1645, ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV) \
+	_(1646, ZEND_FETCH_OBJ_R_SPEC_CV_CONST) \
+	_(1647, ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR) \
+	_(1648, ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR) \
+	_(1650, ZEND_FETCH_OBJ_R_SPEC_CV_CV) \
+	_(1651, ZEND_FETCH_W_SPEC_CONST_UNUSED) \
+	_(1652, ZEND_FETCH_W_SPEC_TMPVAR_UNUSED) \
+	_(1653, ZEND_FETCH_W_SPEC_TMPVAR_UNUSED) \
+	_(1655, ZEND_FETCH_W_SPEC_CV_UNUSED) \
+	_(1666, ZEND_FETCH_DIM_W_SPEC_VAR_CONST) \
+	_(1667, ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR) \
+	_(1668, ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR) \
+	_(1669, ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED) \
+	_(1670, ZEND_FETCH_DIM_W_SPEC_VAR_CV) \
+	_(1676, ZEND_FETCH_DIM_W_SPEC_CV_CONST) \
+	_(1677, ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR) \
+	_(1678, ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR) \
+	_(1679, ZEND_FETCH_DIM_W_SPEC_CV_UNUSED) \
+	_(1680, ZEND_FETCH_DIM_W_SPEC_CV_CV) \
+	_(1691, ZEND_FETCH_OBJ_W_SPEC_VAR_CONST) \
+	_(1692, ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR) \
+	_(1693, ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR) \
+	_(1695, ZEND_FETCH_OBJ_W_SPEC_VAR_CV) \
+	_(1696, ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST) \
+	_(1697, ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR) \
+	_(1698, ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR) \
+	_(1700, ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV) \
+	_(1701, ZEND_FETCH_OBJ_W_SPEC_CV_CONST) \
+	_(1702, ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR) \
+	_(1703, ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR) \
+	_(1705, ZEND_FETCH_OBJ_W_SPEC_CV_CV) \
+	_(1706, ZEND_FETCH_RW_SPEC_CONST_UNUSED) \
+	_(1707, ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED) \
+	_(1708, ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED) \
+	_(1710, ZEND_FETCH_RW_SPEC_CV_UNUSED) \
+	_(1721, ZEND_FETCH_DIM_RW_SPEC_VAR_CONST) \
+	_(1722, ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR) \
+	_(1723, ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR) \
+	_(1724, ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED) \
+	_(1725, ZEND_FETCH_DIM_RW_SPEC_VAR_CV) \
+	_(1731, ZEND_FETCH_DIM_RW_SPEC_CV_CONST) \
+	_(1732, ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR) \
+	_(1733, ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR) \
+	_(1734, ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED) \
+	_(1735, ZEND_FETCH_DIM_RW_SPEC_CV_CV) \
+	_(1746, ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST) \
+	_(1747, ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR) \
+	_(1748, ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR) \
+	_(1750, ZEND_FETCH_OBJ_RW_SPEC_VAR_CV) \
+	_(1751, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST) \
+	_(1752, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR) \
+	_(1753, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR) \
+	_(1755, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV) \
+	_(1756, ZEND_FETCH_OBJ_RW_SPEC_CV_CONST) \
+	_(1757, ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR) \
+	_(1758, ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR) \
+	_(1760, ZEND_FETCH_OBJ_RW_SPEC_CV_CV) \
+	_(1761, ZEND_FETCH_IS_SPEC_CONST_UNUSED) \
+	_(1762, ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED) \
+	_(1763, ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED) \
+	_(1765, ZEND_FETCH_IS_SPEC_CV_UNUSED) \
+	_(1766, ZEND_FETCH_DIM_IS_SPEC_CONST_CONST) \
+	_(1767, ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR) \
+	_(1768, ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR) \
+	_(1770, ZEND_FETCH_DIM_IS_SPEC_CONST_CV) \
 	_(1771, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST) \
 	_(1772, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR) \
 	_(1773, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR) \
 	_(1775, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV) \
-	_(1781, ZEND_FETCH_DIM_IS_SPEC_CV_CONST) \
-	_(1782, ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR) \
-	_(1783, ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR) \
-	_(1785, ZEND_FETCH_DIM_IS_SPEC_CV_CV) \
-	_(1786, ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST) \
-	_(1787, ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR) \
-	_(1788, ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR) \
-	_(1790, ZEND_FETCH_OBJ_IS_SPEC_CONST_CV) \
-	_(1791, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST) \
-	_(1792, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR) \
-	_(1793, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR) \
-	_(1795, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV) \
+	_(1776, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST) \
+	_(1777, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR) \
+	_(1778, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR) \
+	_(1780, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV) \
+	_(1786, ZEND_FETCH_DIM_IS_SPEC_CV_CONST) \
+	_(1787, ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR) \
+	_(1788, ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR) \
+	_(1790, ZEND_FETCH_DIM_IS_SPEC_CV_CV) \
+	_(1791, ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST) \
+	_(1792, ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR) \
+	_(1793, ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR) \
+	_(1795, ZEND_FETCH_OBJ_IS_SPEC_CONST_CV) \
 	_(1796, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST) \
 	_(1797, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR) \
 	_(1798, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR) \
 	_(1800, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV) \
-	_(1801, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST) \
-	_(1802, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR) \
-	_(1803, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR) \
-	_(1805, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV) \
-	_(1806, ZEND_FETCH_OBJ_IS_SPEC_CV_CONST) \
-	_(1807, ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR) \
-	_(1808, ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR) \
-	_(1810, ZEND_FETCH_OBJ_IS_SPEC_CV_CV) \
-	_(1811, ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED) \
-	_(1812, ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED) \
-	_(1813, ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED) \
-	_(1815, ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED) \
-	_(1816, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST) \
-	_(1817, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR) \
-	_(1818, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR) \
-	_(1819, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED) \
-	_(1820, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV) \
-	_(1821, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST) \
-	_(1822, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR) \
-	_(1823, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR) \
-	_(1824, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED) \
-	_(1825, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV) \
-	_(1826, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST) \
-	_(1827, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR) \
-	_(1828, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR) \
-	_(1829, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED) \
-	_(1830, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV) \
-	_(1836, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST) \
-	_(1837, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR) \
-	_(1838, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR) \
-	_(1839, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED) \
-	_(1840, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV) \
-	_(1841, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST) \
-	_(1842, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR) \
-	_(1843, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR) \
-	_(1845, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV) \
-	_(1846, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST) \
-	_(1847, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR) \
-	_(1848, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR) \
-	_(1850, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV) \
-	_(1851, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST) \
-	_(1852, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR) \
-	_(1853, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR) \
-	_(1855, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV) \
-	_(1856, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST) \
-	_(1857, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR) \
-	_(1858, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR) \
-	_(1860, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV) \
-	_(1861, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST) \
-	_(1862, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR) \
-	_(1863, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR) \
-	_(1865, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV) \
-	_(1866, ZEND_FETCH_UNSET_SPEC_CONST_UNUSED) \
-	_(1867, ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED) \
-	_(1868, ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED) \
-	_(1870, ZEND_FETCH_UNSET_SPEC_CV_UNUSED) \
-	_(1881, ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST) \
-	_(1882, ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR) \
-	_(1883, ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR) \
-	_(1885, ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV) \
-	_(1891, ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST) \
-	_(1892, ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR) \
-	_(1893, ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR) \
-	_(1895, ZEND_FETCH_DIM_UNSET_SPEC_CV_CV) \
-	_(1906, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST) \
-	_(1907, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR) \
-	_(1908, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR) \
-	_(1910, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV) \
-	_(1911, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST) \
-	_(1912, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR) \
-	_(1913, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR) \
-	_(1915, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV) \
-	_(1916, ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST) \
-	_(1917, ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR) \
-	_(1918, ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR) \
-	_(1920, ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV) \
-	_(1921, ZEND_FETCH_LIST_R_SPEC_CONST_CONST) \
-	_(1922, ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR) \
-	_(1923, ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR) \
-	_(1925, ZEND_FETCH_LIST_R_SPEC_CONST_CV) \
-	_(1926, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST) \
-	_(1927, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
-	_(1928, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
-	_(1930, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV) \
+	_(1801, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST) \
+	_(1802, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR) \
+	_(1803, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR) \
+	_(1805, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV) \
+	_(1806, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST) \
+	_(1807, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR) \
+	_(1808, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR) \
+	_(1810, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV) \
+	_(1811, ZEND_FETCH_OBJ_IS_SPEC_CV_CONST) \
+	_(1812, ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR) \
+	_(1813, ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR) \
+	_(1815, ZEND_FETCH_OBJ_IS_SPEC_CV_CV) \
+	_(1816, ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED) \
+	_(1817, ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED) \
+	_(1818, ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED) \
+	_(1820, ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED) \
+	_(1821, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST) \
+	_(1822, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR) \
+	_(1823, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR) \
+	_(1824, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED) \
+	_(1825, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV) \
+	_(1826, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST) \
+	_(1827, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR) \
+	_(1828, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR) \
+	_(1829, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED) \
+	_(1830, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV) \
+	_(1831, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST) \
+	_(1832, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR) \
+	_(1833, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR) \
+	_(1834, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED) \
+	_(1835, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV) \
+	_(1841, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST) \
+	_(1842, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR) \
+	_(1843, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR) \
+	_(1844, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED) \
+	_(1845, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV) \
+	_(1846, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST) \
+	_(1847, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR) \
+	_(1848, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR) \
+	_(1850, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV) \
+	_(1851, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST) \
+	_(1852, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR) \
+	_(1853, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR) \
+	_(1855, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV) \
+	_(1856, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST) \
+	_(1857, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR) \
+	_(1858, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR) \
+	_(1860, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV) \
+	_(1861, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST) \
+	_(1862, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR) \
+	_(1863, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR) \
+	_(1865, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV) \
+	_(1866, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST) \
+	_(1867, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR) \
+	_(1868, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR) \
+	_(1870, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV) \
+	_(1871, ZEND_FETCH_UNSET_SPEC_CONST_UNUSED) \
+	_(1872, ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED) \
+	_(1873, ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED) \
+	_(1875, ZEND_FETCH_UNSET_SPEC_CV_UNUSED) \
+	_(1886, ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST) \
+	_(1887, ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR) \
+	_(1888, ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR) \
+	_(1890, ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV) \
+	_(1896, ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST) \
+	_(1897, ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR) \
+	_(1898, ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR) \
+	_(1900, ZEND_FETCH_DIM_UNSET_SPEC_CV_CV) \
+	_(1911, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST) \
+	_(1912, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR) \
+	_(1913, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR) \
+	_(1915, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV) \
+	_(1916, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST) \
+	_(1917, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR) \
+	_(1918, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR) \
+	_(1920, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV) \
+	_(1921, ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST) \
+	_(1922, ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR) \
+	_(1923, ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR) \
+	_(1925, ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV) \
+	_(1926, ZEND_FETCH_LIST_R_SPEC_CONST_CONST) \
+	_(1927, ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR) \
+	_(1928, ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR) \
+	_(1930, ZEND_FETCH_LIST_R_SPEC_CONST_CV) \
 	_(1931, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST) \
 	_(1932, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
 	_(1933, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
 	_(1935, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV) \
-	_(1941, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST) \
-	_(1942, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
-	_(1943, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
-	_(1945, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV) \
-	_(1946, ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST) \
-	_(1947, ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_CONST) \
-	_(1948, ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_CONST) \
-	_(1953, ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_UNUSED) \
-	_(1954, ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_UNUSED_QUICK) \
-	_(1957, ZEND_EXT_STMT_SPEC) \
-	_(1958, ZEND_EXT_FCALL_BEGIN_SPEC) \
-	_(1959, ZEND_EXT_FCALL_END_SPEC) \
-	_(1960, ZEND_EXT_NOP_SPEC) \
-	_(1961, ZEND_TICKS_SPEC) \
-	_(1962, ZEND_SEND_VAR_NO_REF_SPEC_VAR_CONST) \
-	_(1965, ZEND_SEND_VAR_NO_REF_SPEC_VAR_UNUSED) \
-	_(1967, ZEND_CATCH_SPEC_CONST) \
-	_(1968, ZEND_THROW_SPEC_CONST) \
-	_(1969, ZEND_THROW_SPEC_TMPVAR) \
-	_(1970, ZEND_THROW_SPEC_TMPVAR) \
-	_(1972, ZEND_THROW_SPEC_CV) \
-	_(1973, ZEND_FETCH_CLASS_SPEC_UNUSED_CONST) \
-	_(1974, ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR) \
-	_(1975, ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR) \
-	_(1976, ZEND_FETCH_CLASS_SPEC_UNUSED_UNUSED) \
-	_(1977, ZEND_FETCH_CLASS_SPEC_UNUSED_CV) \
-	_(1978, ZEND_CLONE_SPEC_CONST) \
-	_(1979, ZEND_CLONE_SPEC_TMPVAR) \
-	_(1980, ZEND_CLONE_SPEC_TMPVAR) \
-	_(1981, ZEND_CLONE_SPEC_UNUSED) \
-	_(1982, ZEND_CLONE_SPEC_CV) \
-	_(1983, ZEND_RETURN_BY_REF_SPEC_CONST) \
-	_(1984, ZEND_RETURN_BY_REF_SPEC_OBSERVER) \
-	_(1985, ZEND_RETURN_BY_REF_SPEC_TMP) \
-	_(1986, ZEND_RETURN_BY_REF_SPEC_OBSERVER) \
-	_(1987, ZEND_RETURN_BY_REF_SPEC_VAR) \
-	_(1988, ZEND_RETURN_BY_REF_SPEC_OBSERVER) \
-	_(1991, ZEND_RETURN_BY_REF_SPEC_CV) \
-	_(1992, ZEND_RETURN_BY_REF_SPEC_OBSERVER) \
-	_(1993, ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST) \
-	_(1994, ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR) \
-	_(1995, ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR) \
-	_(1997, ZEND_INIT_METHOD_CALL_SPEC_CONST_CV) \
-	_(1998, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST) \
-	_(1999, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR) \
-	_(2000, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR) \
-	_(2002, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV) \
+	_(1936, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST) \
+	_(1937, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
+	_(1938, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
+	_(1940, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV) \
+	_(1946, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST) \
+	_(1947, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
+	_(1948, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
+	_(1950, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV) \
+	_(1951, ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST) \
+	_(1952, ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_CONST) \
+	_(1953, ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_CONST) \
+	_(1958, ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_UNUSED) \
+	_(1959, ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_UNUSED_QUICK) \
+	_(1962, ZEND_EXT_STMT_SPEC) \
+	_(1963, ZEND_EXT_FCALL_BEGIN_SPEC) \
+	_(1964, ZEND_EXT_FCALL_END_SPEC) \
+	_(1965, ZEND_EXT_NOP_SPEC) \
+	_(1966, ZEND_TICKS_SPEC) \
+	_(1967, ZEND_SEND_VAR_NO_REF_SPEC_VAR_CONST) \
+	_(1970, ZEND_SEND_VAR_NO_REF_SPEC_VAR_UNUSED) \
+	_(1972, ZEND_CATCH_SPEC_CONST) \
+	_(1973, ZEND_THROW_SPEC_CONST) \
+	_(1974, ZEND_THROW_SPEC_TMPVAR) \
+	_(1975, ZEND_THROW_SPEC_TMPVAR) \
+	_(1977, ZEND_THROW_SPEC_CV) \
+	_(1978, ZEND_FETCH_CLASS_SPEC_UNUSED_CONST) \
+	_(1979, ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR) \
+	_(1980, ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR) \
+	_(1981, ZEND_FETCH_CLASS_SPEC_UNUSED_UNUSED) \
+	_(1982, ZEND_FETCH_CLASS_SPEC_UNUSED_CV) \
+	_(1983, ZEND_CLONE_SPEC_CONST) \
+	_(1984, ZEND_CLONE_SPEC_TMPVAR) \
+	_(1985, ZEND_CLONE_SPEC_TMPVAR) \
+	_(1986, ZEND_CLONE_SPEC_UNUSED) \
+	_(1987, ZEND_CLONE_SPEC_CV) \
+	_(1988, ZEND_RETURN_BY_REF_SPEC_CONST) \
+	_(1989, ZEND_RETURN_BY_REF_SPEC_OBSERVER) \
+	_(1990, ZEND_RETURN_BY_REF_SPEC_TMP) \
+	_(1991, ZEND_RETURN_BY_REF_SPEC_OBSERVER) \
+	_(1992, ZEND_RETURN_BY_REF_SPEC_VAR) \
+	_(1993, ZEND_RETURN_BY_REF_SPEC_OBSERVER) \
+	_(1996, ZEND_RETURN_BY_REF_SPEC_CV) \
+	_(1997, ZEND_RETURN_BY_REF_SPEC_OBSERVER) \
+	_(1998, ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST) \
+	_(1999, ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR) \
+	_(2000, ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR) \
+	_(2002, ZEND_INIT_METHOD_CALL_SPEC_CONST_CV) \
 	_(2003, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST) \
 	_(2004, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR) \
 	_(2005, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR) \
 	_(2007, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV) \
-	_(2008, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST) \
-	_(2009, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
-	_(2010, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
-	_(2012, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV) \
-	_(2013, ZEND_INIT_METHOD_CALL_SPEC_CV_CONST) \
-	_(2014, ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR) \
-	_(2015, ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR) \
-	_(2017, ZEND_INIT_METHOD_CALL_SPEC_CV_CV) \
-	_(2018, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST) \
-	_(2019, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR) \
-	_(2020, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR) \
-	_(2021, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED) \
-	_(2022, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV) \
-	_(2028, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST) \
-	_(2029, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR) \
-	_(2030, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR) \
-	_(2031, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED) \
-	_(2032, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV) \
-	_(2033, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST) \
-	_(2034, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
-	_(2035, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
-	_(2036, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED) \
-	_(2037, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV) \
-	_(2043, ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED) \
-	_(2044, ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED) \
-	_(2045, ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED) \
-	_(2047, ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED) \
-	_(2048, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST) \
-	_(2049, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR) \
-	_(2050, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR) \
-	_(2052, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV) \
-	_(2053, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST) \
-	_(2054, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR) \
-	_(2055, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR) \
-	_(2057, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV) \
+	_(2008, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST) \
+	_(2009, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR) \
+	_(2010, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR) \
+	_(2012, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV) \
+	_(2013, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST) \
+	_(2014, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
+	_(2015, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
+	_(2017, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV) \
+	_(2018, ZEND_INIT_METHOD_CALL_SPEC_CV_CONST) \
+	_(2019, ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR) \
+	_(2020, ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR) \
+	_(2022, ZEND_INIT_METHOD_CALL_SPEC_CV_CV) \
+	_(2023, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST) \
+	_(2024, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR) \
+	_(2025, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR) \
+	_(2026, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED) \
+	_(2027, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV) \
+	_(2033, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST) \
+	_(2034, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR) \
+	_(2035, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR) \
+	_(2036, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED) \
+	_(2037, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV) \
+	_(2038, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST) \
+	_(2039, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
+	_(2040, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
+	_(2041, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED) \
+	_(2042, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV) \
+	_(2048, ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED) \
+	_(2049, ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED) \
+	_(2050, ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED) \
+	_(2052, ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED) \
+	_(2053, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST) \
+	_(2054, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR) \
+	_(2055, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR) \
+	_(2057, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV) \
 	_(2058, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST) \
 	_(2059, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR) \
 	_(2060, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR) \
 	_(2062, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV) \
-	_(2068, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST) \
-	_(2069, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR) \
-	_(2070, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR) \
-	_(2072, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV) \
-	_(2073, ZEND_SEND_VAL_EX_SPEC_CONST_CONST) \
-	_(2074, ZEND_SEND_VAL_EX_SPEC_CONST_CONST) \
-	_(2079, ZEND_SEND_VAL_EX_SPEC_CONST_UNUSED) \
-	_(2080, ZEND_SEND_VAL_EX_SPEC_CONST_UNUSED_QUICK) \
-	_(2083, ZEND_SEND_VAL_EX_SPEC_TMP_CONST) \
-	_(2084, ZEND_SEND_VAL_EX_SPEC_TMP_CONST) \
-	_(2089, ZEND_SEND_VAL_EX_SPEC_TMP_UNUSED) \
-	_(2090, ZEND_SEND_VAL_EX_SPEC_TMP_UNUSED_QUICK) \
-	_(2133, ZEND_SEND_VAR_SPEC_VAR_CONST) \
-	_(2136, ZEND_SEND_VAR_SPEC_VAR_UNUSED) \
-	_(2143, ZEND_SEND_VAR_SPEC_CV_CONST) \
-	_(2146, ZEND_SEND_VAR_SPEC_CV_UNUSED) \
-	_(2148, ZEND_INIT_USER_CALL_SPEC_CONST_CONST) \
-	_(2149, ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR) \
-	_(2150, ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR) \
-	_(2152, ZEND_INIT_USER_CALL_SPEC_CONST_CV) \
-	_(2153, ZEND_SEND_ARRAY_SPEC) \
-	_(2154, ZEND_SEND_USER_SPEC_CONST) \
-	_(2155, ZEND_SEND_USER_SPEC_TMP) \
-	_(2156, ZEND_SEND_USER_SPEC_VAR) \
-	_(2158, ZEND_SEND_USER_SPEC_CV) \
-	_(2159, ZEND_STRLEN_SPEC_CONST) \
-	_(2160, ZEND_STRLEN_SPEC_TMPVAR) \
-	_(2161, ZEND_STRLEN_SPEC_TMPVAR) \
-	_(2163, ZEND_STRLEN_SPEC_CV) \
-	_(2164, ZEND_DEFINED_SPEC_CONST) \
-	_(2165, ZEND_TYPE_CHECK_SPEC_CONST) \
-	_(2166, ZEND_TYPE_CHECK_SPEC_TMPVAR) \
-	_(2167, ZEND_TYPE_CHECK_SPEC_TMPVAR) \
-	_(2169, ZEND_TYPE_CHECK_SPEC_CV) \
-	_(2170, ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED) \
-	_(2171, ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED) \
-	_(2172, ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED) \
-	_(2173, ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED) \
-	_(2174, ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED) \
-	_(2175, ZEND_FE_RESET_RW_SPEC_CONST) \
-	_(2176, ZEND_FE_RESET_RW_SPEC_TMP) \
-	_(2177, ZEND_FE_RESET_RW_SPEC_VAR) \
-	_(2179, ZEND_FE_RESET_RW_SPEC_CV) \
-	_(2180, ZEND_FE_FETCH_RW_SPEC_VAR) \
-	_(2181, ZEND_FE_FREE_SPEC_TMPVAR) \
-	_(2182, ZEND_INIT_DYNAMIC_CALL_SPEC_CONST) \
-	_(2183, ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR) \
-	_(2184, ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR) \
-	_(2186, ZEND_INIT_DYNAMIC_CALL_SPEC_CV) \
-	_(2187, ZEND_DO_ICALL_SPEC_RETVAL_UNUSED) \
-	_(2188, ZEND_DO_ICALL_SPEC_RETVAL_USED) \
-	_(2189, ZEND_DO_ICALL_SPEC_OBSERVER) \
-	_(2190, ZEND_DO_ICALL_SPEC_OBSERVER) \
-	_(2191, ZEND_DO_UCALL_SPEC_RETVAL_UNUSED) \
-	_(2192, ZEND_DO_UCALL_SPEC_RETVAL_USED) \
-	_(2193, ZEND_DO_UCALL_SPEC_OBSERVER) \
-	_(2194, ZEND_DO_UCALL_SPEC_OBSERVER) \
-	_(2195, ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED) \
-	_(2196, ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED) \
-	_(2197, ZEND_DO_FCALL_BY_NAME_SPEC_OBSERVER) \
-	_(2198, ZEND_DO_FCALL_BY_NAME_SPEC_OBSERVER) \
-	_(2209, ZEND_PRE_INC_OBJ_SPEC_VAR_CONST) \
-	_(2210, ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR) \
-	_(2211, ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR) \
-	_(2213, ZEND_PRE_INC_OBJ_SPEC_VAR_CV) \
-	_(2214, ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST) \
-	_(2215, ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR) \
-	_(2216, ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR) \
-	_(2218, ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV) \
-	_(2219, ZEND_PRE_INC_OBJ_SPEC_CV_CONST) \
-	_(2220, ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR) \
-	_(2221, ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR) \
-	_(2223, ZEND_PRE_INC_OBJ_SPEC_CV_CV) \
-	_(2234, ZEND_POST_INC_OBJ_SPEC_VAR_CONST) \
-	_(2235, ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR) \
-	_(2236, ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR) \
-	_(2238, ZEND_POST_INC_OBJ_SPEC_VAR_CV) \
-	_(2239, ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST) \
-	_(2240, ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR) \
-	_(2241, ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR) \
-	_(2243, ZEND_POST_INC_OBJ_SPEC_UNUSED_CV) \
-	_(2244, ZEND_POST_INC_OBJ_SPEC_CV_CONST) \
-	_(2245, ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR) \
-	_(2246, ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR) \
-	_(2248, ZEND_POST_INC_OBJ_SPEC_CV_CV) \
-	_(2249, ZEND_ECHO_SPEC_CONST) \
-	_(2250, ZEND_ECHO_SPEC_TMPVAR) \
-	_(2251, ZEND_ECHO_SPEC_TMPVAR) \
-	_(2253, ZEND_ECHO_SPEC_CV) \
-	_(2260, ZEND_INSTANCEOF_SPEC_TMPVAR_CONST) \
-	_(2262, ZEND_INSTANCEOF_SPEC_TMPVAR_VAR) \
-	_(2263, ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED) \
-	_(2265, ZEND_INSTANCEOF_SPEC_TMPVAR_CONST) \
-	_(2267, ZEND_INSTANCEOF_SPEC_TMPVAR_VAR) \
-	_(2268, ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED) \
-	_(2275, ZEND_INSTANCEOF_SPEC_CV_CONST) \
-	_(2277, ZEND_INSTANCEOF_SPEC_CV_VAR) \
-	_(2278, ZEND_INSTANCEOF_SPEC_CV_UNUSED) \
-	_(2280, ZEND_GENERATOR_CREATE_SPEC) \
-	_(2283, ZEND_MAKE_REF_SPEC_VAR_UNUSED) \
-	_(2285, ZEND_MAKE_REF_SPEC_CV_UNUSED) \
-	_(2286, ZEND_DECLARE_FUNCTION_SPEC) \
-	_(2287, ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST) \
-	_(2288, ZEND_DECLARE_CONST_SPEC_CONST_CONST) \
-	_(2289, ZEND_DECLARE_CLASS_SPEC_CONST) \
-	_(2290, ZEND_DECLARE_CLASS_DELAYED_SPEC_CONST_CONST) \
-	_(2291, ZEND_DECLARE_ANON_CLASS_SPEC) \
-	_(2292, ZEND_ADD_ARRAY_UNPACK_SPEC) \
-	_(2293, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST) \
-	_(2294, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR) \
-	_(2295, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR) \
-	_(2297, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV) \
-	_(2298, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST) \
-	_(2299, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
-	_(2300, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
-	_(2302, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV) \
-	_(2303, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST) \
-	_(2304, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
-	_(2305, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
-	_(2307, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV) \
-	_(2308, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST) \
-	_(2309, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR) \
-	_(2310, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR) \
-	_(2312, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV) \
-	_(2313, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST) \
-	_(2314, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR) \
-	_(2315, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR) \
-	_(2317, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV) \
-	_(2318, ZEND_HANDLE_EXCEPTION_SPEC) \
-	_(2319, ZEND_USER_OPCODE_SPEC) \
-	_(2320, ZEND_ASSERT_CHECK_SPEC) \
-	_(2321, ZEND_JMP_SET_SPEC_CONST) \
-	_(2322, ZEND_JMP_SET_SPEC_TMP) \
-	_(2323, ZEND_JMP_SET_SPEC_VAR) \
-	_(2325, ZEND_JMP_SET_SPEC_CV) \
-	_(2326, ZEND_UNSET_CV_SPEC_CV_UNUSED) \
-	_(2327, ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET) \
-	_(2328, ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY) \
-	_(2329, ZEND_FETCH_LIST_W_SPEC_VAR_CONST) \
-	_(2330, ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR) \
-	_(2331, ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR) \
-	_(2333, ZEND_FETCH_LIST_W_SPEC_VAR_CV) \
-	_(2334, ZEND_SEPARATE_SPEC_VAR_UNUSED) \
-	_(2336, ZEND_FETCH_CLASS_NAME_SPEC_TMPVAR) \
-	_(2337, ZEND_FETCH_CLASS_NAME_SPEC_TMPVAR) \
-	_(2338, ZEND_FETCH_CLASS_NAME_SPEC_UNUSED) \
-	_(2339, ZEND_FETCH_CLASS_NAME_SPEC_CV) \
-	_(2340, ZEND_CALL_TRAMPOLINE_SPEC) \
-	_(2341, ZEND_CALL_TRAMPOLINE_SPEC_OBSERVER) \
-	_(2342, ZEND_DISCARD_EXCEPTION_SPEC) \
-	_(2343, ZEND_YIELD_SPEC_CONST_CONST) \
-	_(2344, ZEND_YIELD_SPEC_CONST_TMPVAR) \
-	_(2345, ZEND_YIELD_SPEC_CONST_TMPVAR) \
-	_(2346, ZEND_YIELD_SPEC_CONST_UNUSED) \
-	_(2347, ZEND_YIELD_SPEC_CONST_CV) \
-	_(2348, ZEND_YIELD_SPEC_TMP_CONST) \
-	_(2349, ZEND_YIELD_SPEC_TMP_TMPVAR) \
-	_(2350, ZEND_YIELD_SPEC_TMP_TMPVAR) \
-	_(2351, ZEND_YIELD_SPEC_TMP_UNUSED) \
-	_(2352, ZEND_YIELD_SPEC_TMP_CV) \
-	_(2353, ZEND_YIELD_SPEC_VAR_CONST) \
-	_(2354, ZEND_YIELD_SPEC_VAR_TMPVAR) \
-	_(2355, ZEND_YIELD_SPEC_VAR_TMPVAR) \
-	_(2356, ZEND_YIELD_SPEC_VAR_UNUSED) \
-	_(2357, ZEND_YIELD_SPEC_VAR_CV) \
-	_(2358, ZEND_YIELD_SPEC_UNUSED_CONST) \
-	_(2359, ZEND_YIELD_SPEC_UNUSED_TMPVAR) \
-	_(2360, ZEND_YIELD_SPEC_UNUSED_TMPVAR) \
-	_(2361, ZEND_YIELD_SPEC_UNUSED_UNUSED) \
-	_(2362, ZEND_YIELD_SPEC_UNUSED_CV) \
-	_(2363, ZEND_YIELD_SPEC_CV_CONST) \
-	_(2364, ZEND_YIELD_SPEC_CV_TMPVAR) \
-	_(2365, ZEND_YIELD_SPEC_CV_TMPVAR) \
-	_(2366, ZEND_YIELD_SPEC_CV_UNUSED) \
-	_(2367, ZEND_YIELD_SPEC_CV_CV) \
-	_(2368, ZEND_GENERATOR_RETURN_SPEC_CONST) \
-	_(2369, ZEND_GENERATOR_RETURN_SPEC_OBSERVER) \
-	_(2370, ZEND_GENERATOR_RETURN_SPEC_TMP) \
-	_(2371, ZEND_GENERATOR_RETURN_SPEC_OBSERVER) \
-	_(2372, ZEND_GENERATOR_RETURN_SPEC_VAR) \
-	_(2373, ZEND_GENERATOR_RETURN_SPEC_OBSERVER) \
-	_(2376, ZEND_GENERATOR_RETURN_SPEC_CV) \
-	_(2377, ZEND_GENERATOR_RETURN_SPEC_OBSERVER) \
-	_(2378, ZEND_FAST_CALL_SPEC) \
-	_(2379, ZEND_FAST_RET_SPEC) \
-	_(2380, ZEND_RECV_VARIADIC_SPEC_UNUSED) \
-	_(2381, ZEND_SEND_UNPACK_SPEC) \
-	_(2382, ZEND_YIELD_FROM_SPEC_CONST) \
-	_(2383, ZEND_YIELD_FROM_SPEC_TMPVAR) \
-	_(2384, ZEND_YIELD_FROM_SPEC_TMPVAR) \
-	_(2386, ZEND_YIELD_FROM_SPEC_CV) \
-	_(2387, ZEND_COPY_TMP_SPEC_TMPVAR_UNUSED) \
-	_(2388, ZEND_BIND_GLOBAL_SPEC_CV_CONST) \
-	_(2389, ZEND_COALESCE_SPEC_CONST) \
-	_(2390, ZEND_COALESCE_SPEC_TMP) \
-	_(2391, ZEND_COALESCE_SPEC_VAR) \
-	_(2393, ZEND_COALESCE_SPEC_CV) \
-	_(2394, ZEND_SPACESHIP_SPEC_CONST_CONST) \
-	_(2395, ZEND_SPACESHIP_SPEC_CONST_TMPVAR) \
-	_(2396, ZEND_SPACESHIP_SPEC_CONST_TMPVAR) \
-	_(2398, ZEND_SPACESHIP_SPEC_CONST_CV) \
-	_(2399, ZEND_SPACESHIP_SPEC_TMPVAR_CONST) \
-	_(2400, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
-	_(2401, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
-	_(2403, ZEND_SPACESHIP_SPEC_TMPVAR_CV) \
-	_(2404, ZEND_SPACESHIP_SPEC_TMPVAR_CONST) \
-	_(2405, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
-	_(2406, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
-	_(2408, ZEND_SPACESHIP_SPEC_TMPVAR_CV) \
-	_(2414, ZEND_SPACESHIP_SPEC_CV_CONST) \
-	_(2415, ZEND_SPACESHIP_SPEC_CV_TMPVAR) \
-	_(2416, ZEND_SPACESHIP_SPEC_CV_TMPVAR) \
-	_(2418, ZEND_SPACESHIP_SPEC_CV_CV) \
-	_(2419, ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED) \
-	_(2420, ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED) \
-	_(2423, ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED) \
-	_(2425, ZEND_FETCH_STATIC_PROP_R_SPEC) \
-	_(2426, ZEND_FETCH_STATIC_PROP_W_SPEC) \
-	_(2427, ZEND_FETCH_STATIC_PROP_RW_SPEC) \
-	_(2428, ZEND_FETCH_STATIC_PROP_IS_SPEC) \
-	_(2429, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC) \
-	_(2430, ZEND_FETCH_STATIC_PROP_UNSET_SPEC) \
-	_(2431, ZEND_UNSET_STATIC_PROP_SPEC) \
-	_(2432, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC) \
-	_(2433, ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST) \
-	_(2435, ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST) \
-	_(2436, ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST) \
-	_(2438, ZEND_BIND_LEXICAL_SPEC_TMP_CV) \
-	_(2439, ZEND_BIND_STATIC_SPEC_CV_UNUSED) \
-	_(2440, ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED) \
-	_(2441, ZEND_SEND_FUNC_ARG_SPEC_VAR_CONST) \
-	_(2444, ZEND_SEND_FUNC_ARG_SPEC_VAR_UNUSED) \
-	_(2446, ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED) \
-	_(2447, ZEND_SWITCH_LONG_SPEC_CONST_CONST) \
-	_(2448, ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST) \
-	_(2449, ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST) \
+	_(2063, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST) \
+	_(2064, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR) \
+	_(2065, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR) \
+	_(2067, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV) \
+	_(2073, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST) \
+	_(2074, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR) \
+	_(2075, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR) \
+	_(2077, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV) \
+	_(2078, ZEND_SEND_VAL_EX_SPEC_CONST_CONST) \
+	_(2079, ZEND_SEND_VAL_EX_SPEC_CONST_CONST) \
+	_(2084, ZEND_SEND_VAL_EX_SPEC_CONST_UNUSED) \
+	_(2085, ZEND_SEND_VAL_EX_SPEC_CONST_UNUSED_QUICK) \
+	_(2088, ZEND_SEND_VAL_EX_SPEC_TMP_CONST) \
+	_(2089, ZEND_SEND_VAL_EX_SPEC_TMP_CONST) \
+	_(2094, ZEND_SEND_VAL_EX_SPEC_TMP_UNUSED) \
+	_(2095, ZEND_SEND_VAL_EX_SPEC_TMP_UNUSED_QUICK) \
+	_(2138, ZEND_SEND_VAR_SPEC_VAR_CONST) \
+	_(2141, ZEND_SEND_VAR_SPEC_VAR_UNUSED) \
+	_(2148, ZEND_SEND_VAR_SPEC_CV_CONST) \
+	_(2151, ZEND_SEND_VAR_SPEC_CV_UNUSED) \
+	_(2153, ZEND_INIT_USER_CALL_SPEC_CONST_CONST) \
+	_(2154, ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR) \
+	_(2155, ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR) \
+	_(2157, ZEND_INIT_USER_CALL_SPEC_CONST_CV) \
+	_(2158, ZEND_SEND_ARRAY_SPEC) \
+	_(2159, ZEND_SEND_USER_SPEC_CONST) \
+	_(2160, ZEND_SEND_USER_SPEC_TMP) \
+	_(2161, ZEND_SEND_USER_SPEC_VAR) \
+	_(2163, ZEND_SEND_USER_SPEC_CV) \
+	_(2164, ZEND_STRLEN_SPEC_CONST) \
+	_(2165, ZEND_STRLEN_SPEC_TMPVAR) \
+	_(2166, ZEND_STRLEN_SPEC_TMPVAR) \
+	_(2168, ZEND_STRLEN_SPEC_CV) \
+	_(2169, ZEND_DEFINED_SPEC_CONST) \
+	_(2170, ZEND_TYPE_CHECK_SPEC_CONST) \
+	_(2171, ZEND_TYPE_CHECK_SPEC_TMPVAR) \
+	_(2172, ZEND_TYPE_CHECK_SPEC_TMPVAR) \
+	_(2174, ZEND_TYPE_CHECK_SPEC_CV) \
+	_(2175, ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED) \
+	_(2176, ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED) \
+	_(2177, ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED) \
+	_(2178, ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED) \
+	_(2179, ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED) \
+	_(2180, ZEND_FE_RESET_RW_SPEC_CONST) \
+	_(2181, ZEND_FE_RESET_RW_SPEC_TMP) \
+	_(2182, ZEND_FE_RESET_RW_SPEC_VAR) \
+	_(2184, ZEND_FE_RESET_RW_SPEC_CV) \
+	_(2185, ZEND_FE_FETCH_RW_SPEC_VAR) \
+	_(2186, ZEND_FE_FREE_SPEC_TMPVAR) \
+	_(2187, ZEND_INIT_DYNAMIC_CALL_SPEC_CONST) \
+	_(2188, ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR) \
+	_(2189, ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR) \
+	_(2191, ZEND_INIT_DYNAMIC_CALL_SPEC_CV) \
+	_(2192, ZEND_DO_ICALL_SPEC_RETVAL_UNUSED) \
+	_(2193, ZEND_DO_ICALL_SPEC_RETVAL_USED) \
+	_(2194, ZEND_DO_UCALL_SPEC_RETVAL_UNUSED) \
+	_(2195, ZEND_DO_UCALL_SPEC_RETVAL_USED) \
+	_(2196, ZEND_DO_UCALL_SPEC_OBSERVER) \
+	_(2197, ZEND_DO_UCALL_SPEC_OBSERVER) \
+	_(2198, ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED) \
+	_(2199, ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED) \
+	_(2200, ZEND_DO_FCALL_BY_NAME_SPEC_OBSERVER) \
+	_(2201, ZEND_DO_FCALL_BY_NAME_SPEC_OBSERVER) \
+	_(2212, ZEND_PRE_INC_OBJ_SPEC_VAR_CONST) \
+	_(2213, ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR) \
+	_(2214, ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR) \
+	_(2216, ZEND_PRE_INC_OBJ_SPEC_VAR_CV) \
+	_(2217, ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST) \
+	_(2218, ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR) \
+	_(2219, ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR) \
+	_(2221, ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV) \
+	_(2222, ZEND_PRE_INC_OBJ_SPEC_CV_CONST) \
+	_(2223, ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR) \
+	_(2224, ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR) \
+	_(2226, ZEND_PRE_INC_OBJ_SPEC_CV_CV) \
+	_(2237, ZEND_POST_INC_OBJ_SPEC_VAR_CONST) \
+	_(2238, ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR) \
+	_(2239, ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR) \
+	_(2241, ZEND_POST_INC_OBJ_SPEC_VAR_CV) \
+	_(2242, ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST) \
+	_(2243, ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR) \
+	_(2244, ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR) \
+	_(2246, ZEND_POST_INC_OBJ_SPEC_UNUSED_CV) \
+	_(2247, ZEND_POST_INC_OBJ_SPEC_CV_CONST) \
+	_(2248, ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR) \
+	_(2249, ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR) \
+	_(2251, ZEND_POST_INC_OBJ_SPEC_CV_CV) \
+	_(2252, ZEND_ECHO_SPEC_CONST) \
+	_(2253, ZEND_ECHO_SPEC_TMPVAR) \
+	_(2254, ZEND_ECHO_SPEC_TMPVAR) \
+	_(2256, ZEND_ECHO_SPEC_CV) \
+	_(2263, ZEND_INSTANCEOF_SPEC_TMPVAR_CONST) \
+	_(2265, ZEND_INSTANCEOF_SPEC_TMPVAR_VAR) \
+	_(2266, ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED) \
+	_(2268, ZEND_INSTANCEOF_SPEC_TMPVAR_CONST) \
+	_(2270, ZEND_INSTANCEOF_SPEC_TMPVAR_VAR) \
+	_(2271, ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED) \
+	_(2278, ZEND_INSTANCEOF_SPEC_CV_CONST) \
+	_(2280, ZEND_INSTANCEOF_SPEC_CV_VAR) \
+	_(2281, ZEND_INSTANCEOF_SPEC_CV_UNUSED) \
+	_(2283, ZEND_GENERATOR_CREATE_SPEC) \
+	_(2286, ZEND_MAKE_REF_SPEC_VAR_UNUSED) \
+	_(2288, ZEND_MAKE_REF_SPEC_CV_UNUSED) \
+	_(2289, ZEND_DECLARE_FUNCTION_SPEC) \
+	_(2290, ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST) \
+	_(2291, ZEND_DECLARE_CONST_SPEC_CONST_CONST) \
+	_(2292, ZEND_DECLARE_CLASS_SPEC_CONST) \
+	_(2293, ZEND_DECLARE_CLASS_DELAYED_SPEC_CONST_CONST) \
+	_(2294, ZEND_DECLARE_ANON_CLASS_SPEC) \
+	_(2295, ZEND_ADD_ARRAY_UNPACK_SPEC) \
+	_(2296, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST) \
+	_(2297, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR) \
+	_(2298, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR) \
+	_(2300, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV) \
+	_(2301, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST) \
+	_(2302, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
+	_(2303, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
+	_(2305, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV) \
+	_(2306, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST) \
+	_(2307, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
+	_(2308, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
+	_(2310, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV) \
+	_(2311, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST) \
+	_(2312, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR) \
+	_(2313, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR) \
+	_(2315, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV) \
+	_(2316, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST) \
+	_(2317, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR) \
+	_(2318, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR) \
+	_(2320, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV) \
+	_(2321, ZEND_HANDLE_EXCEPTION_SPEC) \
+	_(2322, ZEND_USER_OPCODE_SPEC) \
+	_(2323, ZEND_ASSERT_CHECK_SPEC) \
+	_(2324, ZEND_JMP_SET_SPEC_CONST) \
+	_(2325, ZEND_JMP_SET_SPEC_TMP) \
+	_(2326, ZEND_JMP_SET_SPEC_VAR) \
+	_(2328, ZEND_JMP_SET_SPEC_CV) \
+	_(2329, ZEND_UNSET_CV_SPEC_CV_UNUSED) \
+	_(2330, ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET) \
+	_(2331, ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY) \
+	_(2332, ZEND_FETCH_LIST_W_SPEC_VAR_CONST) \
+	_(2333, ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR) \
+	_(2334, ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR) \
+	_(2336, ZEND_FETCH_LIST_W_SPEC_VAR_CV) \
+	_(2337, ZEND_SEPARATE_SPEC_VAR_UNUSED) \
+	_(2339, ZEND_FETCH_CLASS_NAME_SPEC_TMPVAR) \
+	_(2340, ZEND_FETCH_CLASS_NAME_SPEC_TMPVAR) \
+	_(2341, ZEND_FETCH_CLASS_NAME_SPEC_UNUSED) \
+	_(2342, ZEND_FETCH_CLASS_NAME_SPEC_CV) \
+	_(2343, ZEND_CALL_TRAMPOLINE_SPEC) \
+	_(2344, ZEND_CALL_TRAMPOLINE_SPEC_OBSERVER) \
+	_(2345, ZEND_DISCARD_EXCEPTION_SPEC) \
+	_(2346, ZEND_YIELD_SPEC_CONST_CONST) \
+	_(2347, ZEND_YIELD_SPEC_CONST_TMPVAR) \
+	_(2348, ZEND_YIELD_SPEC_CONST_TMPVAR) \
+	_(2349, ZEND_YIELD_SPEC_CONST_UNUSED) \
+	_(2350, ZEND_YIELD_SPEC_CONST_CV) \
+	_(2351, ZEND_YIELD_SPEC_TMP_CONST) \
+	_(2352, ZEND_YIELD_SPEC_TMP_TMPVAR) \
+	_(2353, ZEND_YIELD_SPEC_TMP_TMPVAR) \
+	_(2354, ZEND_YIELD_SPEC_TMP_UNUSED) \
+	_(2355, ZEND_YIELD_SPEC_TMP_CV) \
+	_(2356, ZEND_YIELD_SPEC_VAR_CONST) \
+	_(2357, ZEND_YIELD_SPEC_VAR_TMPVAR) \
+	_(2358, ZEND_YIELD_SPEC_VAR_TMPVAR) \
+	_(2359, ZEND_YIELD_SPEC_VAR_UNUSED) \
+	_(2360, ZEND_YIELD_SPEC_VAR_CV) \
+	_(2361, ZEND_YIELD_SPEC_UNUSED_CONST) \
+	_(2362, ZEND_YIELD_SPEC_UNUSED_TMPVAR) \
+	_(2363, ZEND_YIELD_SPEC_UNUSED_TMPVAR) \
+	_(2364, ZEND_YIELD_SPEC_UNUSED_UNUSED) \
+	_(2365, ZEND_YIELD_SPEC_UNUSED_CV) \
+	_(2366, ZEND_YIELD_SPEC_CV_CONST) \
+	_(2367, ZEND_YIELD_SPEC_CV_TMPVAR) \
+	_(2368, ZEND_YIELD_SPEC_CV_TMPVAR) \
+	_(2369, ZEND_YIELD_SPEC_CV_UNUSED) \
+	_(2370, ZEND_YIELD_SPEC_CV_CV) \
+	_(2371, ZEND_GENERATOR_RETURN_SPEC_CONST) \
+	_(2372, ZEND_GENERATOR_RETURN_SPEC_OBSERVER) \
+	_(2373, ZEND_GENERATOR_RETURN_SPEC_TMP) \
+	_(2374, ZEND_GENERATOR_RETURN_SPEC_OBSERVER) \
+	_(2375, ZEND_GENERATOR_RETURN_SPEC_VAR) \
+	_(2376, ZEND_GENERATOR_RETURN_SPEC_OBSERVER) \
+	_(2379, ZEND_GENERATOR_RETURN_SPEC_CV) \
+	_(2380, ZEND_GENERATOR_RETURN_SPEC_OBSERVER) \
+	_(2381, ZEND_FAST_CALL_SPEC) \
+	_(2382, ZEND_FAST_RET_SPEC) \
+	_(2383, ZEND_RECV_VARIADIC_SPEC_UNUSED) \
+	_(2384, ZEND_SEND_UNPACK_SPEC) \
+	_(2385, ZEND_YIELD_FROM_SPEC_CONST) \
+	_(2386, ZEND_YIELD_FROM_SPEC_TMPVAR) \
+	_(2387, ZEND_YIELD_FROM_SPEC_TMPVAR) \
+	_(2389, ZEND_YIELD_FROM_SPEC_CV) \
+	_(2390, ZEND_COPY_TMP_SPEC_TMPVAR_UNUSED) \
+	_(2391, ZEND_BIND_GLOBAL_SPEC_CV_CONST) \
+	_(2392, ZEND_COALESCE_SPEC_CONST) \
+	_(2393, ZEND_COALESCE_SPEC_TMP) \
+	_(2394, ZEND_COALESCE_SPEC_VAR) \
+	_(2396, ZEND_COALESCE_SPEC_CV) \
+	_(2397, ZEND_SPACESHIP_SPEC_CONST_CONST) \
+	_(2398, ZEND_SPACESHIP_SPEC_CONST_TMPVAR) \
+	_(2399, ZEND_SPACESHIP_SPEC_CONST_TMPVAR) \
+	_(2401, ZEND_SPACESHIP_SPEC_CONST_CV) \
+	_(2402, ZEND_SPACESHIP_SPEC_TMPVAR_CONST) \
+	_(2403, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
+	_(2404, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
+	_(2406, ZEND_SPACESHIP_SPEC_TMPVAR_CV) \
+	_(2407, ZEND_SPACESHIP_SPEC_TMPVAR_CONST) \
+	_(2408, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
+	_(2409, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
+	_(2411, ZEND_SPACESHIP_SPEC_TMPVAR_CV) \
+	_(2417, ZEND_SPACESHIP_SPEC_CV_CONST) \
+	_(2418, ZEND_SPACESHIP_SPEC_CV_TMPVAR) \
+	_(2419, ZEND_SPACESHIP_SPEC_CV_TMPVAR) \
+	_(2421, ZEND_SPACESHIP_SPEC_CV_CV) \
+	_(2422, ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED) \
+	_(2423, ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED) \
+	_(2426, ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED) \
+	_(2428, ZEND_FETCH_STATIC_PROP_R_SPEC) \
+	_(2429, ZEND_FETCH_STATIC_PROP_W_SPEC) \
+	_(2430, ZEND_FETCH_STATIC_PROP_RW_SPEC) \
+	_(2431, ZEND_FETCH_STATIC_PROP_IS_SPEC) \
+	_(2432, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC) \
+	_(2433, ZEND_FETCH_STATIC_PROP_UNSET_SPEC) \
+	_(2434, ZEND_UNSET_STATIC_PROP_SPEC) \
+	_(2435, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC) \
+	_(2436, ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST) \
+	_(2438, ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST) \
+	_(2439, ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST) \
+	_(2441, ZEND_BIND_LEXICAL_SPEC_TMP_CV) \
+	_(2442, ZEND_BIND_STATIC_SPEC_CV_UNUSED) \
+	_(2443, ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED) \
+	_(2444, ZEND_SEND_FUNC_ARG_SPEC_VAR_CONST) \
+	_(2447, ZEND_SEND_FUNC_ARG_SPEC_VAR_UNUSED) \
+	_(2449, ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED) \
+	_(2450, ZEND_SWITCH_LONG_SPEC_CONST_CONST) \
 	_(2451, ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST) \
-	_(2452, ZEND_SWITCH_STRING_SPEC_CONST_CONST) \
-	_(2453, ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST) \
-	_(2454, ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST) \
+	_(2452, ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST) \
+	_(2454, ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST) \
+	_(2455, ZEND_SWITCH_STRING_SPEC_CONST_CONST) \
 	_(2456, ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST) \
-	_(2457, ZEND_IN_ARRAY_SPEC_CONST_CONST) \
-	_(2458, ZEND_IN_ARRAY_SPEC_TMP_CONST) \
-	_(2459, ZEND_IN_ARRAY_SPEC_VAR_CONST) \
-	_(2461, ZEND_IN_ARRAY_SPEC_CV_CONST) \
-	_(2462, ZEND_COUNT_SPEC_CONST_UNUSED) \
-	_(2463, ZEND_COUNT_SPEC_TMPVAR_UNUSED) \
-	_(2464, ZEND_COUNT_SPEC_TMPVAR_UNUSED) \
-	_(2466, ZEND_COUNT_SPEC_CV_UNUSED) \
-	_(2467, ZEND_GET_CLASS_SPEC_CONST_UNUSED) \
-	_(2468, ZEND_GET_CLASS_SPEC_TMPVAR_UNUSED) \
-	_(2469, ZEND_GET_CLASS_SPEC_TMPVAR_UNUSED) \
-	_(2470, ZEND_GET_CLASS_SPEC_UNUSED_UNUSED) \
-	_(2471, ZEND_GET_CLASS_SPEC_CV_UNUSED) \
-	_(2472, ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED) \
-	_(2473, ZEND_GET_TYPE_SPEC_CONST_UNUSED) \
-	_(2474, ZEND_GET_TYPE_SPEC_TMP_UNUSED) \
-	_(2475, ZEND_GET_TYPE_SPEC_VAR_UNUSED) \
-	_(2477, ZEND_GET_TYPE_SPEC_CV_UNUSED) \
-	_(2478, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CONST) \
-	_(2479, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TMPVAR) \
-	_(2480, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TMPVAR) \
-	_(2482, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CV) \
-	_(2483, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CONST) \
-	_(2484, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
-	_(2485, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
-	_(2487, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CV) \
-	_(2488, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CONST) \
-	_(2489, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
-	_(2490, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
-	_(2492, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CV) \
-	_(2498, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CONST) \
-	_(2499, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMPVAR) \
-	_(2500, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMPVAR) \
-	_(2502, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CV) \
-	_(2503, ZEND_MATCH_SPEC_CONST_CONST) \
-	_(2504, ZEND_MATCH_SPEC_TMPVARCV_CONST) \
-	_(2505, ZEND_MATCH_SPEC_TMPVARCV_CONST) \
+	_(2457, ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST) \
+	_(2459, ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST) \
+	_(2460, ZEND_IN_ARRAY_SPEC_CONST_CONST) \
+	_(2461, ZEND_IN_ARRAY_SPEC_TMP_CONST) \
+	_(2462, ZEND_IN_ARRAY_SPEC_VAR_CONST) \
+	_(2464, ZEND_IN_ARRAY_SPEC_CV_CONST) \
+	_(2465, ZEND_COUNT_SPEC_CONST_UNUSED) \
+	_(2466, ZEND_COUNT_SPEC_TMPVAR_UNUSED) \
+	_(2467, ZEND_COUNT_SPEC_TMPVAR_UNUSED) \
+	_(2469, ZEND_COUNT_SPEC_CV_UNUSED) \
+	_(2470, ZEND_GET_CLASS_SPEC_CONST_UNUSED) \
+	_(2471, ZEND_GET_CLASS_SPEC_TMPVAR_UNUSED) \
+	_(2472, ZEND_GET_CLASS_SPEC_TMPVAR_UNUSED) \
+	_(2473, ZEND_GET_CLASS_SPEC_UNUSED_UNUSED) \
+	_(2474, ZEND_GET_CLASS_SPEC_CV_UNUSED) \
+	_(2475, ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED) \
+	_(2476, ZEND_GET_TYPE_SPEC_CONST_UNUSED) \
+	_(2477, ZEND_GET_TYPE_SPEC_TMP_UNUSED) \
+	_(2478, ZEND_GET_TYPE_SPEC_VAR_UNUSED) \
+	_(2480, ZEND_GET_TYPE_SPEC_CV_UNUSED) \
+	_(2481, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CONST) \
+	_(2482, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TMPVAR) \
+	_(2483, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TMPVAR) \
+	_(2485, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CV) \
+	_(2486, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CONST) \
+	_(2487, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
+	_(2488, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
+	_(2490, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CV) \
+	_(2491, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CONST) \
+	_(2492, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
+	_(2493, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
+	_(2495, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CV) \
+	_(2501, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CONST) \
+	_(2502, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMPVAR) \
+	_(2503, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMPVAR) \
+	_(2505, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CV) \
+	_(2506, ZEND_MATCH_SPEC_CONST_CONST) \
 	_(2507, ZEND_MATCH_SPEC_TMPVARCV_CONST) \
-	_(2513, ZEND_CASE_STRICT_SPEC_TMP_CONST) \
-	_(2514, ZEND_CASE_STRICT_SPEC_TMP_TMP) \
-	_(2515, ZEND_CASE_STRICT_SPEC_TMP_VAR) \
-	_(2517, ZEND_CASE_STRICT_SPEC_TMP_CV) \
-	_(2518, ZEND_CASE_STRICT_SPEC_VAR_CONST) \
-	_(2519, ZEND_CASE_STRICT_SPEC_VAR_TMP) \
-	_(2520, ZEND_CASE_STRICT_SPEC_VAR_VAR) \
-	_(2522, ZEND_CASE_STRICT_SPEC_VAR_CV) \
-	_(2533, ZEND_MATCH_ERROR_SPEC_CONST_UNUSED) \
-	_(2534, ZEND_MATCH_ERROR_SPEC_TMPVARCV_UNUSED) \
-	_(2535, ZEND_MATCH_ERROR_SPEC_TMPVARCV_UNUSED) \
+	_(2508, ZEND_MATCH_SPEC_TMPVARCV_CONST) \
+	_(2510, ZEND_MATCH_SPEC_TMPVARCV_CONST) \
+	_(2516, ZEND_CASE_STRICT_SPEC_TMP_CONST) \
+	_(2517, ZEND_CASE_STRICT_SPEC_TMP_TMP) \
+	_(2518, ZEND_CASE_STRICT_SPEC_TMP_VAR) \
+	_(2520, ZEND_CASE_STRICT_SPEC_TMP_CV) \
+	_(2521, ZEND_CASE_STRICT_SPEC_VAR_CONST) \
+	_(2522, ZEND_CASE_STRICT_SPEC_VAR_TMP) \
+	_(2523, ZEND_CASE_STRICT_SPEC_VAR_VAR) \
+	_(2525, ZEND_CASE_STRICT_SPEC_VAR_CV) \
+	_(2536, ZEND_MATCH_ERROR_SPEC_CONST_UNUSED) \
 	_(2537, ZEND_MATCH_ERROR_SPEC_TMPVARCV_UNUSED) \
-	_(2538, ZEND_JMP_NULL_SPEC_CONST) \
-	_(2539, ZEND_JMP_NULL_SPEC_TMP) \
-	_(2540, ZEND_JMP_NULL_SPEC_VAR) \
-	_(2542, ZEND_JMP_NULL_SPEC_CV) \
-	_(2543, ZEND_CHECK_UNDEF_ARGS_SPEC_UNUSED_UNUSED) \
-	_(2544, ZEND_FETCH_GLOBALS_SPEC_UNUSED_UNUSED) \
-	_(2545, ZEND_VERIFY_NEVER_TYPE_SPEC_UNUSED_UNUSED) \
-	_(2546, ZEND_CALLABLE_CONVERT_SPEC_UNUSED_UNUSED) \
-	_(2547, ZEND_RECV_NOTYPE_SPEC) \
-	_(2548, ZEND_JMP_FORWARD_SPEC) \
-	_(2554, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
-	_(2555, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2556, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2538, ZEND_MATCH_ERROR_SPEC_TMPVARCV_UNUSED) \
+	_(2540, ZEND_MATCH_ERROR_SPEC_TMPVARCV_UNUSED) \
+	_(2541, ZEND_JMP_NULL_SPEC_CONST) \
+	_(2542, ZEND_JMP_NULL_SPEC_TMP) \
+	_(2543, ZEND_JMP_NULL_SPEC_VAR) \
+	_(2545, ZEND_JMP_NULL_SPEC_CV) \
+	_(2546, ZEND_CHECK_UNDEF_ARGS_SPEC_UNUSED_UNUSED) \
+	_(2547, ZEND_FETCH_GLOBALS_SPEC_UNUSED_UNUSED) \
+	_(2548, ZEND_VERIFY_NEVER_TYPE_SPEC_UNUSED_UNUSED) \
+	_(2549, ZEND_CALLABLE_CONVERT_SPEC_UNUSED_UNUSED) \
+	_(2550, ZEND_RECV_NOTYPE_SPEC) \
+	_(2551, ZEND_JMP_FORWARD_SPEC) \
+	_(2557, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
 	_(2558, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2559, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
-	_(2560, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2559, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
 	_(2561, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2562, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
 	_(2563, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2569, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
-	_(2570, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2571, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2564, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2566, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2572, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
 	_(2573, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2579, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
-	_(2580, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2581, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2574, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2576, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2582, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
 	_(2583, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2584, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
-	_(2585, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2584, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(2586, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2587, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
 	_(2588, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2594, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
-	_(2595, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2596, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2589, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2591, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2597, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
 	_(2598, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2604, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(2605, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2606, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2599, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2601, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2607, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
 	_(2608, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2609, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(2610, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2609, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(2611, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2612, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
 	_(2613, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2619, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(2620, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2621, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2614, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2616, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2622, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
 	_(2623, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2625, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
-	_(2626, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
+	_(2624, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2626, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(2628, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
-	_(2629, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
-	_(2630, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2631, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2629, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
+	_(2631, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
+	_(2632, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
 	_(2633, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2634, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
-	_(2635, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2634, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
 	_(2636, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2637, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
 	_(2638, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2644, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
-	_(2645, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2646, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2639, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2641, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2647, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
 	_(2648, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2650, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
-	_(2651, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
+	_(2649, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2651, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
 	_(2653, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
-	_(2654, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
-	_(2655, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2656, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2654, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
+	_(2656, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
+	_(2657, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
 	_(2658, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2659, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
-	_(2660, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2659, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(2661, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2662, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
 	_(2663, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2669, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
-	_(2670, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2671, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2664, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2666, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2672, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
 	_(2673, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2675, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
-	_(2676, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
+	_(2674, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2676, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(2678, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
-	_(2679, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(2680, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2681, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2679, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
+	_(2681, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
+	_(2682, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
 	_(2683, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2684, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(2685, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2684, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(2686, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2687, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
 	_(2688, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2694, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(2695, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2696, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2689, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2691, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2697, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
 	_(2698, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2704, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
-	_(2705, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2706, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2699, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2701, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2707, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
 	_(2708, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2709, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
-	_(2710, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2709, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
 	_(2711, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2712, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
 	_(2713, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2719, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
-	_(2720, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2721, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2714, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2716, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2722, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
 	_(2723, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
-	_(2729, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
-	_(2730, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2731, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2724, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2726, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+	_(2732, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
 	_(2733, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2734, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
-	_(2735, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2734, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(2736, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2737, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
 	_(2738, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2744, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
-	_(2745, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2746, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2739, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2741, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2747, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
 	_(2748, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2754, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(2755, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2756, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2749, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2751, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2757, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
 	_(2758, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2759, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(2760, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2759, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(2761, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2762, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
 	_(2763, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2769, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(2770, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2771, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2764, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2766, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2772, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
 	_(2773, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2789, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
-	_(2790, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(2791, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(2792, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2793, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2794, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2774, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2776, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2792, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+	_(2793, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(2794, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(2795, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(2796, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(2797, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2801, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2802, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2803, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2804, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
-	_(2805, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(2806, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(2807, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2808, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2809, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2798, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2799, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2800, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2804, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2805, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2806, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2807, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+	_(2808, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(2809, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(2810, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(2811, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(2812, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2816, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2817, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2818, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2834, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
-	_(2835, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(2836, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(2837, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2838, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2839, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2813, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2814, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2815, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2819, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2820, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2821, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2837, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+	_(2838, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(2839, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(2840, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(2841, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(2842, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2846, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2847, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2848, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2864, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(2865, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(2866, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(2867, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2868, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2869, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2843, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2844, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2845, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2849, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2850, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2851, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2867, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+	_(2868, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(2869, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(2870, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(2871, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(2872, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2876, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2877, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2878, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2879, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(2880, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(2881, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(2882, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2883, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2884, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2873, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2874, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2875, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2879, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2880, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2881, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2882, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+	_(2883, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(2884, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(2885, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(2886, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(2887, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2891, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2892, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2893, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2909, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(2910, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(2911, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(2912, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2913, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2914, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2888, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2889, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2890, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2894, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2895, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2896, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2912, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+	_(2913, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(2914, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(2915, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(2916, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(2917, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2921, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(2922, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2923, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2939, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
-	_(2940, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(2941, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(2942, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2943, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2944, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2918, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2919, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2920, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2924, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(2925, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2926, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2942, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+	_(2943, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(2944, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(2945, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(2946, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(2947, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2951, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2952, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2953, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2954, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
-	_(2955, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(2956, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(2957, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2958, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2959, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2948, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2949, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2950, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2954, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2955, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2956, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2957, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+	_(2958, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(2959, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(2960, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(2961, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(2962, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2966, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2967, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2968, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2984, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
-	_(2985, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(2986, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(2987, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2988, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2989, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2963, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2964, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2965, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2969, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2970, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2971, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2987, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+	_(2988, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(2989, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(2990, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(2991, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(2992, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(2996, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(2997, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(2998, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3014, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(3015, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3016, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3017, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3018, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3019, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2993, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(2994, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(2995, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(2999, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(3000, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3001, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3017, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+	_(3018, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3019, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3020, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(3021, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3022, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3026, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3027, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3028, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3029, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(3030, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3031, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3032, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3033, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3034, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3023, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3024, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3025, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3029, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3030, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3031, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3032, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+	_(3033, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3034, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3035, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(3036, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3037, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3041, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3042, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3043, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3059, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(3060, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3061, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3062, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3063, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3064, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3038, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3039, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3040, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3044, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3045, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3046, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3062, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+	_(3063, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3064, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3065, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(3066, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3067, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3071, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3072, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3073, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3074, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CONST) \
-	_(3078, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CV) \
-	_(3079, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CONST) \
-	_(3083, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CV) \
-	_(3087, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
-	_(3088, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
-	_(3089, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
+	_(3068, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3069, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3070, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3074, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3075, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3076, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3077, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CONST) \
+	_(3081, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CV) \
+	_(3082, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CONST) \
+	_(3086, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CV) \
 	_(3090, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
 	_(3091, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
 	_(3092, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
-	_(3096, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
-	_(3097, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
-	_(3098, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
-	_(3099, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
-	_(3100, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3101, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3102, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(3103, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3104, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3093, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
+	_(3094, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
+	_(3095, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
+	_(3099, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
+	_(3100, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
+	_(3101, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
+	_(3102, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
+	_(3103, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3104, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3105, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(3106, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3107, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3111, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(3112, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3113, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3114, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
-	_(3115, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3116, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3117, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(3118, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3119, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3108, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(3109, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3110, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3114, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(3115, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3116, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3117, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
+	_(3118, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3119, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3120, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(3121, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3122, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3126, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(3127, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3128, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3144, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
-	_(3145, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3146, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3147, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(3148, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3149, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3123, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(3124, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3125, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3129, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(3130, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3131, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3147, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
+	_(3148, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3149, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3150, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(3151, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3152, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3156, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(3157, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3158, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3162, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
-	_(3163, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
-	_(3164, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
+	_(3153, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(3154, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3155, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3159, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(3160, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3161, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
 	_(3165, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
 	_(3166, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
 	_(3167, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
-	_(3171, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
-	_(3172, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
-	_(3173, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
-	_(3174, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(3175, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3176, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3177, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3178, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3179, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3168, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
+	_(3169, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
+	_(3170, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
+	_(3174, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
+	_(3175, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
+	_(3176, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
+	_(3177, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
+	_(3178, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3179, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3180, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(3181, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3182, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3186, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3187, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3188, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3189, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(3190, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3191, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3192, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3193, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3194, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3183, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3184, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3185, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3189, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3190, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3191, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3192, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
+	_(3193, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3194, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3195, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(3196, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3197, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3201, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3202, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3203, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3219, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(3220, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3221, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3222, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3223, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3224, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3198, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3199, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3200, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3204, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3205, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3206, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3222, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
+	_(3223, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3224, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3225, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(3226, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3227, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3231, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3232, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3233, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3237, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
-	_(3238, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
-	_(3239, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
+	_(3228, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3229, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3230, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3234, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3235, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3236, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
 	_(3240, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
 	_(3241, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
 	_(3242, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
-	_(3246, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
-	_(3247, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
-	_(3248, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
-	_(3249, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
-	_(3250, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3251, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3252, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(3253, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3254, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3243, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
+	_(3244, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
+	_(3245, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
+	_(3249, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
+	_(3250, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
+	_(3251, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
+	_(3252, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+	_(3253, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3254, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3255, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(3256, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3257, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3261, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(3262, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3263, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3264, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
-	_(3265, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3266, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3267, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(3268, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3269, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3258, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(3259, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3260, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3264, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(3265, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3266, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3267, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+	_(3268, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3269, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3270, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(3271, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3272, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3276, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(3277, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3278, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3294, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
-	_(3295, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3296, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3297, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(3298, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3299, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3273, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(3274, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3275, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3279, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(3280, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3281, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3297, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+	_(3298, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3299, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3300, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
 	_(3301, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3302, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3306, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
-	_(3307, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3308, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3312, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
-	_(3313, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
-	_(3314, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
+	_(3303, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(3304, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3305, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3309, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+	_(3310, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3311, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
 	_(3315, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
 	_(3316, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
 	_(3317, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
-	_(3321, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
-	_(3322, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
-	_(3323, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
-	_(3324, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(3325, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3326, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3327, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3328, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3329, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3318, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
+	_(3319, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
+	_(3320, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
+	_(3324, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
+	_(3325, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
+	_(3326, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
+	_(3327, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+	_(3328, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3329, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3330, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(3331, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3332, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3336, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3337, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3338, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3339, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(3340, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3341, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3342, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3343, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3344, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3333, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3334, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3335, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3339, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3340, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3341, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3342, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+	_(3343, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3344, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3345, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(3346, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3347, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3351, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3352, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3353, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3369, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
-	_(3370, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
-	_(3371, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
-	_(3372, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3373, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3374, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3348, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3349, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3350, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3354, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3355, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3356, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3372, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+	_(3373, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+	_(3374, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
 	_(3375, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
 	_(3376, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
 	_(3377, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3381, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
-	_(3382, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
-	_(3383, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
-	_(3384, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \
-	_(3385, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \
-	_(3386, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED) \
-	_(3387, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED) \
-	_(3388, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \
-	_(3389, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \
-	_(3390, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED) \
-	_(3391, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED) \
-	_(3392, ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV) \
-	_(3393, ZEND_POST_INC_LONG_SPEC_CV) \
-	_(3394, ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV) \
-	_(3395, ZEND_POST_DEC_LONG_SPEC_CV) \
-	_(3396, ZEND_QM_ASSIGN_LONG_SPEC_CONST) \
-	_(3397, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
-	_(3398, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
+	_(3378, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3379, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3380, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3384, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+	_(3385, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+	_(3386, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+	_(3387, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \
+	_(3388, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \
+	_(3389, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED) \
+	_(3390, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED) \
+	_(3391, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \
+	_(3392, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \
+	_(3393, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED) \
+	_(3394, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED) \
+	_(3395, ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV) \
+	_(3396, ZEND_POST_INC_LONG_SPEC_CV) \
+	_(3397, ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV) \
+	_(3398, ZEND_POST_DEC_LONG_SPEC_CV) \
+	_(3399, ZEND_QM_ASSIGN_LONG_SPEC_CONST) \
 	_(3400, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
-	_(3401, ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST) \
-	_(3402, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
-	_(3403, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
+	_(3401, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
+	_(3403, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
+	_(3404, ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST) \
 	_(3405, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
-	_(3406, ZEND_QM_ASSIGN_NOREF_SPEC_CONST) \
-	_(3407, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
-	_(3408, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
+	_(3406, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
+	_(3408, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
+	_(3409, ZEND_QM_ASSIGN_NOREF_SPEC_CONST) \
 	_(3410, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
-	_(3412, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
-	_(3413, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
+	_(3411, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
+	_(3413, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
 	_(3415, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
-	_(3416, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \
-	_(3417, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
-	_(3418, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
+	_(3416, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
+	_(3418, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
+	_(3419, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \
 	_(3420, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
-	_(3421, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \
-	_(3422, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
+	_(3421, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
 	_(3423, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
+	_(3424, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \
 	_(3425, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
-	_(3431, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST) \
-	_(3432, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
-	_(3433, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
+	_(3426, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
+	_(3428, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
+	_(3434, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST) \
 	_(3435, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
-	_(3438, ZEND_SEND_VAR_SIMPLE_SPEC_VAR) \
-	_(3440, ZEND_SEND_VAR_SIMPLE_SPEC_CV) \
-	_(3443, ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_UNUSED) \
-	_(3445, ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_UNUSED) \
-	_(3446, ZEND_SEND_VAL_SIMPLE_SPEC_CONST) \
-	_(3447, ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST) \
-	_(3448, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED) \
-	_(3449, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED) \
-	_(3449+1, ZEND_NULL)
+	_(3436, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
+	_(3438, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
+	_(3441, ZEND_SEND_VAR_SIMPLE_SPEC_VAR) \
+	_(3443, ZEND_SEND_VAR_SIMPLE_SPEC_CV) \
+	_(3446, ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_UNUSED) \
+	_(3448, ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_UNUSED) \
+	_(3449, ZEND_SEND_VAL_SIMPLE_SPEC_CONST) \
+	_(3450, ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST) \
+	_(3451, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED) \
+	_(3452, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED) \
+	_(3452+1, ZEND_NULL)

Modified: trunk/MgDev/Oem/php/include/Zend/zend_vm_opcodes.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_vm_opcodes.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_vm_opcodes.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -128,6 +128,7 @@
 #define ZEND_JMP                         42
 #define ZEND_JMPZ                        43
 #define ZEND_JMPNZ                       44
+#define ZEND_JMPZNZ                      45
 #define ZEND_JMPZ_EX                     46
 #define ZEND_JMPNZ_EX                    47
 #define ZEND_CASE                        48

Modified: trunk/MgDev/Oem/php/include/Zend/zend_vm_trace_handlers.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_vm_trace_handlers.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_vm_trace_handlers.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -71,7 +71,7 @@
 	f = fopen("zend_vm_trace.log", "w+");
 	if (f) {
 		zend_hash_sort(&vm_trace_ht, (compare_func_t)zend_vm_trace_compare, 0);
-		ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(&vm_trace_ht, key, val) {
+		ZEND_HASH_FOREACH_STR_KEY_VAL(&vm_trace_ht, key, val) {
 			fprintf(f, "%s "ZEND_LONG_FMT"\n", ZSTR_VAL(key), Z_LVAL_P(val));
 		} ZEND_HASH_FOREACH_END();
 		fclose(f);

Modified: trunk/MgDev/Oem/php/include/Zend/zend_vm_trace_map.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_vm_trace_map.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_vm_trace_map.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -65,7 +65,7 @@
 	if (f) {
 		zend_hash_sort(&vm_trace_ht, (bucket_compare_func_t)zend_vm_trace_compare, 0);
 		prev_key = NULL;
-		ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(&vm_trace_ht, key, val) {
+		ZEND_HASH_FOREACH_STR_KEY_VAL(&vm_trace_ht, key, val) {
 			if (prev_key) {
 				fprintf(f, ADDR_FMT" "ADDR_FMT" t %s\n", prev_addr, Z_LVAL_P(val) - prev_addr, ZSTR_VAL(prev_key));
 			}

Modified: trunk/MgDev/Oem/php/include/Zend/zend_weakrefs.h
===================================================================
--- trunk/MgDev/Oem/php/include/Zend/zend_weakrefs.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/Zend/zend_weakrefs.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -17,8 +17,6 @@
 #ifndef ZEND_WEAKREFS_H
 #define ZEND_WEAKREFS_H
 
-#include "zend_alloc.h"
-
 BEGIN_EXTERN_C()
 
 extern ZEND_API zend_class_entry *zend_ce_weakref;
@@ -42,26 +40,6 @@
 	}
 }
 
-/* Because php uses the raw numbers as a hash function, raw pointers will lead to hash collisions.
- * We have a guarantee that the lowest ZEND_MM_ALIGNED_OFFSET_LOG2 bits of a pointer are zero.
- *
- * E.g. On most 64-bit platforms, pointers are aligned to 8 bytes, so the least significant 3 bits are always 0 and can be discarded.
- *
- * NOTE: This function is only used for EG(weakrefs) and zend_weakmap->ht.
- * It is not used for the HashTable instances associated with ZEND_WEAKREF_TAG_HT tags (created in zend_weakref_register, which uses ZEND_WEAKREF_ENCODE instead).
- * The ZEND_WEAKREF_TAG_HT instances are used to disambiguate between multiple weak references to the same zend_object.
- */
-static zend_always_inline zend_ulong zend_object_to_weakref_key(const zend_object *object)
-{
-	ZEND_ASSERT(((uintptr_t)object) % ZEND_MM_ALIGNMENT == 0);
-	return ((uintptr_t) object) >> ZEND_MM_ALIGNMENT_LOG2;
-}
-
-static zend_always_inline zend_object *zend_weakref_key_to_object(zend_ulong key)
-{
-	return (zend_object *) (((uintptr_t) key) << ZEND_MM_ALIGNMENT_LOG2);
-}
-
 END_EXTERN_C()
 
 #endif

Modified: trunk/MgDev/Oem/php/include/ext/date/lib/timelib.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/date/lib/timelib.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/date/lib/timelib.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,7 +1,7 @@
 /*
  * The MIT License (MIT)
  *
- * Copyright (c) 2015-2023 Derick Rethans
+ * Copyright (c) 2015-2022 Derick Rethans
  * Copyright (c) 2018,2021 MongoDB, Inc.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -30,9 +30,9 @@
 # include "timelib_config.h"
 #endif
 
-#define TIMELIB_VERSION 202205
-#define TIMELIB_EXTENDED_VERSION 20220501
-#define TIMELIB_ASCII_VERSION "2022.05"
+#define TIMELIB_VERSION 202119
+#define TIMELIB_EXTENDED_VERSION 20211901
+#define TIMELIB_ASCII_VERSION "2021.19"
 
 #include <stdlib.h>
 #include <stdbool.h>
@@ -321,7 +321,6 @@
 #define TIMELIB_ERR_INVALID_TZ_OFFSET          0x223
 #define TIMELIB_ERR_FORMAT_LITERAL_MISMATCH    0x224
 #define TIMELIB_ERR_MIX_ISO_WITH_NATURAL       0x225
-#define TIMELIB_ERR_NUMBER_OUT_OF_RANGE        0x226
 
 #define TIMELIB_ZONETYPE_NONE   0
 #define TIMELIB_ZONETYPE_OFFSET 1
@@ -439,7 +438,6 @@
 	TIMELIB_FORMAT_WHITESPACE,
 	TIMELIB_FORMAT_YEAR_TWO_DIGIT,
 	TIMELIB_FORMAT_YEAR_FOUR_DIGIT,
-	TIMELIB_FORMAT_YEAR_EXPANDED,
 	TIMELIB_FORMAT_YEAR_ISO
 } timelib_format_specifier_code;
 
@@ -795,19 +793,6 @@
 timelib_time_offset *timelib_get_time_zone_info(timelib_sll ts, timelib_tzinfo *tz);
 
 /**
- * Returns offset information with time zone 'tz' for the time stamp 'ts'.
- *
- * The returned information contains: the offset in seconds East of UTC (in
- * the output parameter 'offset'), whether DST is active (in the output
- * parameter 'is_dst'), and the transition time that got to this state (in
- * the output parameter 'transition_time'); if NULL is passed, the value is
- * not retrieved
- *
- * Returns 1 if successful, 0 for failure.
- */
-int timelib_get_time_zone_offset_info(timelib_sll ts, timelib_tzinfo *tz, int32_t* offset, timelib_sll* transition_time, unsigned int* is_dst);
-
-/**
  * Returns the UTC offset currently applicable for the information stored in 't'.
  *
  * The value returned is the UTC offset in seconds East.

Modified: trunk/MgDev/Oem/php/include/ext/date/lib/timelib_config.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/date/lib/timelib_config.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/date/lib/timelib_config.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,6 +1,5 @@
 #include "config.w32.h"
-#include <inttypes.h>
-#include <stdint.h>
+#include <php_stdint.h>
 #include "zend.h"
 #define timelib_malloc  emalloc
 #define timelib_realloc erealloc

Modified: trunk/MgDev/Oem/php/include/ext/date/php_date.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/date/php_date.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/date/php_date.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -50,7 +50,7 @@
 #define Z_PHPDATE_P(zv)  php_date_obj_from_obj(Z_OBJ_P((zv)))
 
 struct _php_timezone_obj {
-	bool            initialized;
+	int             initialized;
 	int             type;
 	union {
 		timelib_tzinfo   *tz;         /* TIMELIB_ZONETYPE_ID */
@@ -72,9 +72,7 @@
 struct _php_interval_obj {
 	timelib_rel_time *diff;
 	int               civil_or_wall;
-	bool              from_string;
-	zend_string      *date_string;
-	bool              initialized;
+	int               initialized;
 	zend_object       std;
 };
 
@@ -91,9 +89,8 @@
 	timelib_time     *end;
 	timelib_rel_time *interval;
 	int               recurrences;
-	bool              initialized;
-	bool              include_start_date;
-	bool              include_end_date;
+	int               initialized;
+	int               include_start_date;
 	zend_object       std;
 };
 
@@ -108,6 +105,7 @@
 	char                    *timezone;
 	HashTable               *tzcache;
 	timelib_error_container *last_errors;
+	int                     timezone_valid;
 ZEND_END_MODULE_GLOBALS(date)
 
 #define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
@@ -116,13 +114,13 @@
 
 /* Backwards compatibility wrapper */
 PHPAPI zend_long php_parse_date(const char *string, zend_long *now);
-PHPAPI void php_mktime(INTERNAL_FUNCTION_PARAMETERS, bool gmt);
-PHPAPI int php_idate(char format, time_t ts, bool localtime);
+PHPAPI void php_mktime(INTERNAL_FUNCTION_PARAMETERS, int gmt);
+PHPAPI int php_idate(char format, time_t ts, int localtime);
 
 #define _php_strftime php_strftime
 
-PHPAPI void php_strftime(INTERNAL_FUNCTION_PARAMETERS, bool gm);
-PHPAPI zend_string *php_format_date(const char *format, size_t format_len, time_t ts, bool localtime);
+PHPAPI void php_strftime(INTERNAL_FUNCTION_PARAMETERS, int gm);
+PHPAPI zend_string *php_format_date(const char *format, size_t format_len, time_t ts, int localtime);
 
 /* Mechanism to set new TZ database */
 PHPAPI void php_date_set_tzdb(timelib_tzdb *tzdb);
@@ -141,7 +139,7 @@
 #define PHP_DATE_INIT_FORMAT 0x02
 
 PHPAPI zval *php_date_instantiate(zend_class_entry *pce, zval *object);
-PHPAPI bool php_date_initialize(php_date_obj *dateobj, const char *time_str, size_t time_str_len, const char *format, zval *timezone_object, int flags);
+PHPAPI int php_date_initialize(php_date_obj *dateobj, const char *time_str, size_t time_str_len, const char *format, zval *timezone_object, int flags);
 
 
 #endif /* PHP_DATE_H */

Modified: trunk/MgDev/Oem/php/include/ext/gd/gd_arginfo.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/gd/gd_arginfo.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/gd/gd_arginfo.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 68be83247e5e142879ce1bc4340c1c5b8a8f670a */
+ * Stub hash: 4de3d369fad259705acc5bf5de0e935b7e142ec7 */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_gd_info, 0, 0, IS_ARRAY, 0)
 ZEND_END_ARG_INFO()
@@ -315,7 +315,7 @@
 
 #define arginfo_imagecolorexact arginfo_imagecolorclosest
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagecolorset, 0, 5, IS_FALSE, 1)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagecolorset, 0, 5, _IS_BOOL, 1)
 	ZEND_ARG_OBJ_INFO(0, image, GdImage, 0)
 	ZEND_ARG_TYPE_INFO(0, color, IS_LONG, 0)
 	ZEND_ARG_TYPE_INFO(0, red, IS_LONG, 0)
@@ -875,127 +875,6 @@
 	ZEND_FE_END
 };
 
-static void register_gd_symbols(int module_number)
-{
-	REGISTER_LONG_CONSTANT("IMG_AVIF", PHP_IMG_AVIF, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_GIF", PHP_IMG_GIF, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_JPG", PHP_IMG_JPG, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_JPEG", PHP_IMG_JPEG, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_PNG", PHP_IMG_PNG, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_WBMP", PHP_IMG_WBMP, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_XPM", PHP_IMG_XPM, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_WEBP", PHP_IMG_WEBP, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_BMP", PHP_IMG_BMP, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_TGA", PHP_IMG_TGA, CONST_PERSISTENT);
-#if defined(gdWebpLossless)
-	REGISTER_LONG_CONSTANT("IMG_WEBP_LOSSLESS", gdWebpLossless, CONST_PERSISTENT);
-#endif
-	REGISTER_LONG_CONSTANT("IMG_COLOR_TILED", gdTiled, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_COLOR_STYLED", gdStyled, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_COLOR_BRUSHED", gdBrushed, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_COLOR_STYLEDBRUSHED", gdStyledBrushed, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_COLOR_TRANSPARENT", gdTransparent, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_ARC_ROUNDED", gdArc, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_ARC_PIE", gdPie, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_ARC_CHORD", gdChord, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_ARC_NOFILL", gdNoFill, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_ARC_EDGED", gdEdged, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_GD2_RAW", GD2_FMT_RAW, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_GD2_COMPRESSED", GD2_FMT_COMPRESSED, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FLIP_HORIZONTAL", PHP_GD_FLIP_HORIZONTAL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FLIP_VERTICAL", PHP_GD_FLIP_VERTICAL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FLIP_BOTH", PHP_GD_FLIP_BOTH, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_EFFECT_REPLACE", gdEffectReplace, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_EFFECT_ALPHABLEND", gdEffectAlphaBlend, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_EFFECT_NORMAL", gdEffectNormal, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_EFFECT_OVERLAY", gdEffectOverlay, CONST_PERSISTENT);
-#if defined(gdEffectMultiply)
-	REGISTER_LONG_CONSTANT("IMG_EFFECT_MULTIPLY", gdEffectMultiply, CONST_PERSISTENT);
-#endif
-	REGISTER_LONG_CONSTANT("IMG_CROP_DEFAULT", GD_CROP_DEFAULT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_CROP_TRANSPARENT", GD_CROP_TRANSPARENT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_CROP_BLACK", GD_CROP_BLACK, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_CROP_WHITE", GD_CROP_WHITE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_CROP_SIDES", GD_CROP_SIDES, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_CROP_THRESHOLD", GD_CROP_THRESHOLD, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_BELL", GD_BELL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_BESSEL", GD_BESSEL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_BILINEAR_FIXED", GD_BILINEAR_FIXED, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_BICUBIC", GD_BICUBIC, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_BICUBIC_FIXED", GD_BICUBIC_FIXED, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_BLACKMAN", GD_BLACKMAN, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_BOX", GD_BOX, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_BSPLINE", GD_BSPLINE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_CATMULLROM", GD_CATMULLROM, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_GAUSSIAN", GD_GAUSSIAN, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_GENERALIZED_CUBIC", GD_GENERALIZED_CUBIC, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_HERMITE", GD_HERMITE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_HAMMING", GD_HAMMING, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_HANNING", GD_HANNING, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_MITCHELL", GD_MITCHELL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_POWER", GD_POWER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_QUADRATIC", GD_QUADRATIC, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_SINC", GD_SINC, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_NEAREST_NEIGHBOUR", GD_NEAREST_NEIGHBOUR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_WEIGHTED4", GD_WEIGHTED4, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_TRIANGLE", GD_TRIANGLE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_AFFINE_TRANSLATE", GD_AFFINE_TRANSLATE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_AFFINE_SCALE", GD_AFFINE_SCALE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_AFFINE_ROTATE", GD_AFFINE_ROTATE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_AFFINE_SHEAR_HORIZONTAL", GD_AFFINE_SHEAR_HORIZONTAL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_AFFINE_SHEAR_VERTICAL", GD_AFFINE_SHEAR_VERTICAL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("GD_BUNDLED", GD_BUNDLED, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FILTER_NEGATE", IMAGE_FILTER_NEGATE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FILTER_GRAYSCALE", IMAGE_FILTER_GRAYSCALE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FILTER_BRIGHTNESS", IMAGE_FILTER_BRIGHTNESS, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FILTER_CONTRAST", IMAGE_FILTER_CONTRAST, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FILTER_COLORIZE", IMAGE_FILTER_COLORIZE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FILTER_EDGEDETECT", IMAGE_FILTER_EDGEDETECT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FILTER_GAUSSIAN_BLUR", IMAGE_FILTER_GAUSSIAN_BLUR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FILTER_SELECTIVE_BLUR", IMAGE_FILTER_SELECTIVE_BLUR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FILTER_EMBOSS", IMAGE_FILTER_EMBOSS, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FILTER_MEAN_REMOVAL", IMAGE_FILTER_MEAN_REMOVAL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FILTER_SMOOTH", IMAGE_FILTER_SMOOTH, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FILTER_PIXELATE", IMAGE_FILTER_PIXELATE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMG_FILTER_SCATTER", IMAGE_FILTER_SCATTER, CONST_PERSISTENT);
-#if defined(GD_VERSION_STRING)
-	REGISTER_STRING_CONSTANT("GD_VERSION", GD_VERSION_STRING, CONST_PERSISTENT);
-#endif
-#if (defined(GD_MAJOR_VERSION) && defined(GD_MINOR_VERSION) && defined(GD_RELEASE_VERSION) && defined(GD_EXTRA_VERSION))
-	REGISTER_LONG_CONSTANT("GD_MAJOR_VERSION", GD_MAJOR_VERSION, CONST_PERSISTENT);
-#endif
-#if (defined(GD_MAJOR_VERSION) && defined(GD_MINOR_VERSION) && defined(GD_RELEASE_VERSION) && defined(GD_EXTRA_VERSION))
-	REGISTER_LONG_CONSTANT("GD_MINOR_VERSION", GD_MINOR_VERSION, CONST_PERSISTENT);
-#endif
-#if (defined(GD_MAJOR_VERSION) && defined(GD_MINOR_VERSION) && defined(GD_RELEASE_VERSION) && defined(GD_EXTRA_VERSION))
-	REGISTER_LONG_CONSTANT("GD_RELEASE_VERSION", GD_RELEASE_VERSION, CONST_PERSISTENT);
-#endif
-#if (defined(GD_MAJOR_VERSION) && defined(GD_MINOR_VERSION) && defined(GD_RELEASE_VERSION) && defined(GD_EXTRA_VERSION))
-	REGISTER_STRING_CONSTANT("GD_EXTRA_VERSION", GD_EXTRA_VERSION, CONST_PERSISTENT);
-#endif
-#if defined(HAVE_GD_PNG)
-	REGISTER_LONG_CONSTANT("PNG_NO_FILTER", 0, CONST_PERSISTENT);
-#endif
-#if defined(HAVE_GD_PNG)
-	REGISTER_LONG_CONSTANT("PNG_FILTER_NONE", 8, CONST_PERSISTENT);
-#endif
-#if defined(HAVE_GD_PNG)
-	REGISTER_LONG_CONSTANT("PNG_FILTER_SUB", 16, CONST_PERSISTENT);
-#endif
-#if defined(HAVE_GD_PNG)
-	REGISTER_LONG_CONSTANT("PNG_FILTER_UP", 32, CONST_PERSISTENT);
-#endif
-#if defined(HAVE_GD_PNG)
-	REGISTER_LONG_CONSTANT("PNG_FILTER_AVG", 64, CONST_PERSISTENT);
-#endif
-#if defined(HAVE_GD_PNG)
-	REGISTER_LONG_CONSTANT("PNG_FILTER_PAETH", 128, CONST_PERSISTENT);
-#endif
-#if defined(HAVE_GD_PNG)
-	REGISTER_LONG_CONSTANT("PNG_ALL_FILTERS", 248, CONST_PERSISTENT);
-#endif
-}
-
 static zend_class_entry *register_class_GdImage(void)
 {
 	zend_class_entry ce, *class_entry;

Modified: trunk/MgDev/Oem/php/include/ext/gd/php_gd.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/gd/php_gd.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/gd/php_gd.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -55,35 +55,6 @@
 #define PHP_IMG_TGA  128
 #define PHP_IMG_AVIF 256
 
-/* Section Filters Declarations */
-/* IMPORTANT NOTE FOR NEW FILTER
- * Do not forget to update:
- * IMAGE_FILTER_MAX: define the last filter index
- * IMAGE_FILTER_MAX_ARGS: define the biggest amount of arguments
- * image_filter array in PHP_FUNCTION(imagefilter)
- * */
-#define IMAGE_FILTER_NEGATE         0
-#define IMAGE_FILTER_GRAYSCALE      1
-#define IMAGE_FILTER_BRIGHTNESS     2
-#define IMAGE_FILTER_CONTRAST       3
-#define IMAGE_FILTER_COLORIZE       4
-#define IMAGE_FILTER_EDGEDETECT     5
-#define IMAGE_FILTER_EMBOSS         6
-#define IMAGE_FILTER_GAUSSIAN_BLUR  7
-#define IMAGE_FILTER_SELECTIVE_BLUR 8
-#define IMAGE_FILTER_MEAN_REMOVAL   9
-#define IMAGE_FILTER_SMOOTH         10
-#define IMAGE_FILTER_PIXELATE       11
-#define IMAGE_FILTER_SCATTER		12
-#define IMAGE_FILTER_MAX            12
-#define IMAGE_FILTER_MAX_ARGS       6
-
-#ifdef HAVE_GD_BUNDLED
-#define GD_BUNDLED 1
-#else
-#define GD_BUNDLED 0
-#endif
-
 #ifdef PHP_WIN32
 #	ifdef PHP_GD_EXPORTS
 #		define PHP_GD_API __declspec(dllexport)

Modified: trunk/MgDev/Oem/php/include/ext/iconv/iconv_arginfo.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/iconv/iconv_arginfo.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/iconv/iconv_arginfo.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 4367fa431d3e4814e42d9aa514c10cae1d842d8f */
+ * Stub hash: c7198f92b39f7a15d242a74ed5f42036f858da2e */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_iconv_strlen, 0, 1, MAY_BE_LONG|MAY_BE_FALSE)
 	ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
@@ -85,11 +85,3 @@
 	ZEND_FE(iconv_get_encoding, arginfo_iconv_get_encoding)
 	ZEND_FE_END
 };
-
-static void register_iconv_symbols(int module_number)
-{
-	REGISTER_STRING_CONSTANT("ICONV_IMPL", PHP_ICONV_IMPL_VALUE, CONST_PERSISTENT);
-	REGISTER_STRING_CONSTANT("ICONV_VERSION", get_iconv_version(), CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("ICONV_MIME_DECODE_STRICT", PHP_ICONV_MIME_DECODE_STRICT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("ICONV_MIME_DECODE_CONTINUE_ON_ERROR", PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR, CONST_PERSISTENT);
-}

Modified: trunk/MgDev/Oem/php/include/ext/iconv/php_iconv.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/iconv/php_iconv.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/iconv/php_iconv.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -41,6 +41,18 @@
 PHP_MSHUTDOWN_FUNCTION(miconv);
 PHP_MINFO_FUNCTION(miconv);
 
+PHP_NAMED_FUNCTION(php_if_iconv);
+PHP_FUNCTION(ob_iconv_handler);
+PHP_FUNCTION(iconv_get_encoding);
+PHP_FUNCTION(iconv_set_encoding);
+PHP_FUNCTION(iconv_strlen);
+PHP_FUNCTION(iconv_substr);
+PHP_FUNCTION(iconv_strpos);
+PHP_FUNCTION(iconv_strrpos);
+PHP_FUNCTION(iconv_mime_encode);
+PHP_FUNCTION(iconv_mime_decode);
+PHP_FUNCTION(iconv_mime_decode_headers);
+
 ZEND_BEGIN_MODULE_GLOBALS(iconv)
 	char *input_encoding;
 	char *internal_encoding;

Modified: trunk/MgDev/Oem/php/include/ext/json/php_json.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/json/php_json.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/json/php_json.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -97,11 +97,11 @@
 ZEND_TSRMLS_CACHE_EXTERN()
 #endif
 
-PHP_JSON_API zend_result php_json_encode_ex(smart_str *buf, zval *val, int options, zend_long depth);
-PHP_JSON_API zend_result php_json_encode(smart_str *buf, zval *val, int options);
-PHP_JSON_API zend_result php_json_decode_ex(zval *return_value, const char *str, size_t str_len, zend_long options, zend_long depth);
+PHP_JSON_API int php_json_encode_ex(smart_str *buf, zval *val, int options, zend_long depth);
+PHP_JSON_API int php_json_encode(smart_str *buf, zval *val, int options);
+PHP_JSON_API int php_json_decode_ex(zval *return_value, const char *str, size_t str_len, zend_long options, zend_long depth);
 
-static inline zend_result php_json_decode(zval *return_value, const char *str, size_t str_len, bool assoc, zend_long depth)
+static inline int php_json_decode(zval *return_value, const char *str, int str_len, bool assoc, zend_long depth)
 {
 	return php_json_decode_ex(return_value, str, str_len, assoc ? PHP_JSON_OBJECT_AS_ARRAY : 0, depth);
 }

Modified: trunk/MgDev/Oem/php/include/ext/libxml/php_libxml.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/libxml/php_libxml.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/libxml/php_libxml.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -43,8 +43,8 @@
 	smart_str error_buffer;
 	zend_llist *error_list;
 	struct _php_libxml_entity_resolver {
-		zval 					callback;
-		zend_fcall_info 		fci;
+		zval                    object;
+		zend_fcall_info			fci;
 		zend_fcall_info_cache	fcc;
 	} entity_loader;
 	bool entity_loader_disabled;

Modified: trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/eaw_table.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/eaw_table.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/eaw_table.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -14,8 +14,6 @@
  * which should be displayed as double-width.
  */
 
-#define FIRST_DOUBLEWIDTH_CODEPOINT 0x1100
-
 static const struct {
 	int begin;
 	int end;

Modified: trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfilter.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfilter.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfilter.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -141,10 +141,10 @@
 
 MBFLAPI extern mbfl_buffer_converter * mbfl_buffer_converter_new(const mbfl_encoding *from, const mbfl_encoding *to, size_t buf_initsz);
 MBFLAPI extern void mbfl_buffer_converter_delete(mbfl_buffer_converter *convd);
-MBFLAPI extern void mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode);
-MBFLAPI extern void mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar);
+MBFLAPI extern int mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode);
+MBFLAPI extern int mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar);
 MBFLAPI extern size_t mbfl_buffer_converter_feed(mbfl_buffer_converter *convd, mbfl_string *string);
-MBFLAPI extern void mbfl_buffer_converter_flush(mbfl_buffer_converter *convd);
+MBFLAPI extern int mbfl_buffer_converter_flush(mbfl_buffer_converter *convd);
 MBFLAPI extern mbfl_string * mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result);
 MBFLAPI extern mbfl_string * mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *string, mbfl_string *result);
 MBFLAPI extern size_t mbfl_buffer_illegalchars(mbfl_buffer_converter *convd);
@@ -232,6 +232,18 @@
 mbfl_strcut(mbfl_string *string, mbfl_string *result, size_t from, size_t length);
 
 /*
+ *  strwidth
+ */
+MBFLAPI extern size_t
+mbfl_strwidth(mbfl_string *string);
+
+/*
+ *  strimwidth
+ */
+MBFLAPI extern mbfl_string *
+mbfl_strimwidth(mbfl_string *string, mbfl_string *marker, mbfl_string *result, size_t from, size_t width);
+
+/*
  * MIME header encode
  */
 struct mime_header_encoder_data;	/* forward declaration */
@@ -276,4 +288,16 @@
     mbfl_string *result,
     const mbfl_encoding *outcode);
 
+/*
+ * convert HTML numeric entity
+ */
+MBFLAPI extern mbfl_string *
+mbfl_html_numeric_entity(mbfl_string *string, mbfl_string *result, int *convmap, int mapsize, int type);
+
+/*
+ * convert of halfwidth and fullwidth for japanese
+ */
+MBFLAPI extern mbfl_string *
+mbfl_ja_jp_hantozen(mbfl_string *string, mbfl_string *result, int mode);
+
 #endif	/* MBFL_MBFILTER_H */

Modified: trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_consts.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_consts.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_consts.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -33,6 +33,7 @@
 
 #define MBFL_ENCTYPE_SBCS		0x00000001 /* single-byte encoding */
 #define MBFL_ENCTYPE_WCS2		0x00000010 /* 2 bytes/char */
+#define MBFL_ENCTYPE_MWC2		0x00000040 /* 2+ bytes/char */
 #define MBFL_ENCTYPE_WCS4		0x00000100 /* 4 bytes/char */
 #define MBFL_ENCTYPE_GL_UNSAFE	0x00004000
 

Modified: trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_convert.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_convert.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_convert.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -81,7 +81,4 @@
 MBFLAPI extern void mbfl_convert_filter_devcat(mbfl_convert_filter *filter, mbfl_memory_device *src);
 MBFLAPI extern int mbfl_convert_filter_strcat(mbfl_convert_filter *filter, const unsigned char *p);
 
-MBFLAPI extern zend_string* mb_fast_convert(unsigned char *in, size_t in_len, const mbfl_encoding *from, const mbfl_encoding *to, uint32_t replacement_char, unsigned int error_mode, unsigned int *num_errors);
-MBFLAPI extern void mb_illegal_output(uint32_t bad_cp, mb_from_wchar_fn fn, mb_convert_buf* buf);
-
 #endif /* MBFL_CONVERT_H */

Modified: trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -32,7 +32,6 @@
 #define MBFL_ENCODING_H
 
 #include "mbfl_defs.h"
-#include "zend.h"
 
 enum mbfl_no_encoding {
 	mbfl_no_encoding_invalid = -1,
@@ -120,6 +119,8 @@
 	mbfl_no_encoding_charset_max
 };
 
+typedef enum mbfl_no_encoding mbfl_encoding_id;
+
 struct _mbfl_convert_filter;
 struct mbfl_convert_vtbl {
 	enum mbfl_no_encoding from;
@@ -131,97 +132,10 @@
 	void (*filter_copy)(struct _mbfl_convert_filter *src, struct _mbfl_convert_filter *dest);
 };
 
-typedef struct {
-	unsigned char *out;
-	unsigned char *limit;
-	uint32_t state;
-	uint32_t errors;
-	uint32_t replacement_char;
-	unsigned int error_mode;
-	zend_string *str;
-} mb_convert_buf;
-
-typedef size_t (*mb_to_wchar_fn)(unsigned char **in, size_t *in_len, uint32_t *out, size_t out_len, unsigned int *state);
-typedef void (*mb_from_wchar_fn)(uint32_t *in, size_t in_len, mb_convert_buf *out, bool end);
-
-/* When converting encoded text to a buffer of wchars (Unicode codepoints) using `mb_to_wchar_fn`,
- * the buffer must be at least this size (to work with all supported text encodings) */
-#define MBSTRING_MIN_WCHAR_BUFSIZE 5
-
-static inline void mb_convert_buf_init(mb_convert_buf *buf, size_t initsize, uint32_t repl_char, unsigned int err_mode)
-{
-	buf->state = buf->errors = 0;
-	buf->str = emalloc(_ZSTR_STRUCT_SIZE(initsize));
-	buf->out = (unsigned char*)ZSTR_VAL(buf->str);
-	buf->limit = buf->out + initsize;
-	buf->replacement_char = repl_char;
-	buf->error_mode = err_mode;
-}
-
-#define MB_CONVERT_BUF_ENSURE(buf, out, limit, needed) \
-	ZEND_ASSERT(out <= limit); \
-	if ((limit - out) < (needed)) { \
-		size_t oldsize = limit - (unsigned char*)ZSTR_VAL(buf->str); \
-		size_t newsize = oldsize + MAX(oldsize >> 1, needed); \
-		zend_string *newstr = erealloc(buf->str, _ZSTR_STRUCT_SIZE(newsize)); \
-		out = (unsigned char*)ZSTR_VAL(newstr) + (out - (unsigned char*)ZSTR_VAL(buf->str)); \
-		limit = (unsigned char*)ZSTR_VAL(newstr) + newsize; \
-		buf->str = newstr; \
-	}
-
-#define MB_CONVERT_BUF_STORE(buf, _out, _limit) buf->out = _out; buf->limit = _limit
-
-#define MB_CONVERT_BUF_LOAD(buf, _out, _limit) _out = buf->out; _limit = buf->limit
-
-#define MB_CONVERT_ERROR(buf, out, limit, bad_cp, conv_fn) \
-	MB_CONVERT_BUF_STORE(buf, out, limit); \
-	mb_illegal_output(bad_cp, conv_fn, buf); \
-	MB_CONVERT_BUF_LOAD(buf, out, limit)
-
-static inline unsigned char* mb_convert_buf_add(unsigned char *out, char c)
-{
-	*out++ = c;
-	return out;
-}
-
-static inline unsigned char* mb_convert_buf_add2(unsigned char *out, char c1, char c2)
-{
-	*out++ = c1;
-	*out++ = c2;
-	return out;
-}
-
-static inline unsigned char* mb_convert_buf_add3(unsigned char *out, char c1, char c2, char c3)
-{
-	*out++ = c1;
-	*out++ = c2;
-	*out++ = c3;
-	return out;
-}
-
-static inline unsigned char* mb_convert_buf_add4(unsigned char *out, char c1, char c2, char c3, char c4)
-{
-	*out++ = c1;
-	*out++ = c2;
-	*out++ = c3;
-	*out++ = c4;
-	return out;
-}
-
-static inline zend_string* mb_convert_buf_result(mb_convert_buf *buf)
-{
-	ZEND_ASSERT(buf->out <= buf->limit);
-	zend_string *ret = buf->str;
-	/* See `zend_string_alloc` in zend_string.h */
-	GC_SET_REFCOUNT(ret, 1);
-	GC_TYPE_INFO(ret) = GC_STRING;
-	ZSTR_H(ret) = 0;
-	ZSTR_LEN(ret) = buf->out - (unsigned char*)ZSTR_VAL(ret);
-	*(buf->out) = '\0';
-	return ret;
-}
-
-typedef struct {
+/*
+ * encoding
+ */
+typedef struct _mbfl_encoding {
 	enum mbfl_no_encoding no_encoding;
 	const char *name;
 	const char *mime_name;
@@ -230,8 +144,6 @@
 	unsigned int flag;
 	const struct mbfl_convert_vtbl *input_filter;
 	const struct mbfl_convert_vtbl *output_filter;
-	mb_to_wchar_fn to_wchar;
-	mb_from_wchar_fn from_wchar;
 } mbfl_encoding;
 
 MBFLAPI extern const mbfl_encoding *mbfl_name2encoding(const char *name);

Modified: trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_language.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_language.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/mbstring/libmbfl/mbfl/mbfl_language.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -72,7 +72,7 @@
 	enum mbfl_no_language no_language;
 	const char *name;
 	const char *short_name;
-	const char **aliases;
+	const char *(*aliases)[];
 	enum mbfl_no_encoding mail_charset;
 	enum mbfl_no_encoding mail_header_encoding;
 	enum mbfl_no_encoding mail_body_encoding;

Modified: trunk/MgDev/Oem/php/include/ext/mbstring/mbstring.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/mbstring/mbstring.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/mbstring/mbstring.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -53,16 +53,20 @@
 PHP_RSHUTDOWN_FUNCTION(mbstring);
 PHP_MINFO_FUNCTION(mbstring);
 
-MBSTRING_API char *php_mb_safe_strrchr(const char *s, unsigned int c, size_t nbytes, const mbfl_encoding *enc);
+MBSTRING_API char *php_mb_safe_strrchr_ex(const char *s, unsigned int c,
+                                    size_t nbytes, const mbfl_encoding *enc);
+MBSTRING_API char *php_mb_safe_strrchr(const char *s, unsigned int c,
+                                 size_t nbytes);
 
-MBSTRING_API zend_string* php_mb_convert_encoding_ex(
+MBSTRING_API char *php_mb_convert_encoding_ex(
 		const char *input, size_t length,
-		const mbfl_encoding *to_encoding, const mbfl_encoding *from_encoding);
-MBSTRING_API zend_string* php_mb_convert_encoding(
+		const mbfl_encoding *to_encoding, const mbfl_encoding *from_encoding, size_t *output_len);
+MBSTRING_API char * php_mb_convert_encoding(
 		const char *input, size_t length, const mbfl_encoding *to_encoding,
-		const mbfl_encoding **from_encodings, size_t num_from_encodings);
+		const mbfl_encoding **from_encodings, size_t num_from_encodings, size_t *output_len);
 
-MBSTRING_API size_t php_mb_mbchar_bytes(const char *s, const mbfl_encoding *enc);
+MBSTRING_API size_t php_mb_mbchar_bytes_ex(const char *s, const mbfl_encoding *enc);
+MBSTRING_API size_t php_mb_mbchar_bytes(const char *s);
 
 MBSTRING_API size_t php_mb_stripos(int mode, const char *old_haystack, size_t old_haystack_len, const char *old_needle, size_t old_needle_len, zend_long offset, const mbfl_encoding *encoding);
 MBSTRING_API int php_mb_check_encoding(const char *input, size_t length, const mbfl_encoding *encoding);

Modified: trunk/MgDev/Oem/php/include/ext/mbstring/php_mbregex.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/mbstring/php_mbregex.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/mbstring/php_mbregex.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -30,8 +30,6 @@
 PHP_RSHUTDOWN_FUNCTION(mb_regex);
 PHP_MINFO_FUNCTION(mb_regex);
 
-extern char php_mb_oniguruma_version[256];
-
 typedef struct _zend_mb_regex_globals zend_mb_regex_globals;
 
 zend_mb_regex_globals *php_mb_regex_globals_alloc(void);

Modified: trunk/MgDev/Oem/php/include/ext/mysqli/php_mysqli_structs.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/mysqli/php_mysqli_structs.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/mysqli/php_mysqli_structs.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -26,10 +26,22 @@
 #undef LIST
 #endif
 
+#ifdef MYSQLI_USE_MYSQLND
 #include "ext/mysqlnd/mysqlnd.h"
 #include "mysqli_mysqlnd.h"
+#else
 
+#include <mysql.h>
+#if MYSQL_VERSION_ID >= 80000 &&  MYSQL_VERSION_ID < 100000
+typedef _Bool		my_bool;
+#endif
+#include <errmsg.h>
+#include <mysqld_error.h>
+#include "mysqli_libmysql.h"
 
+#endif /* MYSQLI_USE_MYSQLND */
+
+
 #define MYSQLI_VERSION_ID		101009
 
 enum mysqli_status {
@@ -57,6 +69,10 @@
 	BIND_BUFFER	param;
 	BIND_BUFFER	result;
 	char		*query;
+#ifndef MYSQLI_USE_MYSQLND
+	/* used to manage refcount with libmysql (already implement in mysqlnd) */
+	zval		link_handle;
+#endif
 } MY_STMT;
 
 typedef struct {
@@ -66,7 +82,9 @@
 	php_stream		*li_stream;
 	unsigned int 	multi_query;
 	bool		persistent;
+#ifdef MYSQLI_USE_MYSQLND
 	int				async_result_fetch_type;
+#endif
 } MY_MYSQL;
 
 typedef struct {
@@ -241,13 +259,14 @@
 	zend_long 			num_active_persistent;
 	zend_long 			num_inactive_persistent;
 	zend_long			max_persistent;
-	bool				allow_persistent;
+	zend_long			allow_persistent;
 	zend_ulong			default_port;
 	char				*default_host;
 	char				*default_user;
 	char				*default_pw;
 	char				*default_socket;
-	bool				allow_local_infile;
+	zend_long			reconnect;
+	zend_long			allow_local_infile;
 	char				*local_infile_directory;
 	zend_long			error_no;
 	char				*error_msg;

Modified: trunk/MgDev/Oem/php/include/ext/mysqlnd/mysqlnd.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/mysqlnd/mysqlnd.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/mysqlnd/mysqlnd.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -109,6 +109,7 @@
 #define mysqlnd_query(conn, query_str, query_len)		((conn)->data)->m->query((conn)->data, (query_str), (query_len))
 #define mysqlnd_async_query(conn, query_str, query_len)	((conn)->data)->m->send_query((conn)->data, (query_str), (query_len), NULL, NULL)
 #define mysqlnd_reap_async_query(conn)					((conn)->data)->m->reap_query((conn)->data)
+#define mysqlnd_unbuffered_skip_result(result)			(result)->m.skip_result((result))
 
 PHPAPI enum_func_status mysqlnd_poll(MYSQLND **r_array, MYSQLND **e_array, MYSQLND ***dont_poll, long sec, long usec, int * desc_num);
 

Modified: trunk/MgDev/Oem/php/include/ext/mysqlnd/mysqlnd_portability.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/mysqlnd/mysqlnd_portability.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/mysqlnd/mysqlnd_portability.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -38,7 +38,7 @@
   #define atoll atol
 #endif
 
-#include <stdint.h>
+#include "php_stdint.h"
 
 #if SIZEOF_LONG_LONG > 4 && !defined(_LONG_LONG)
 #define _LONG_LONG 1        /* For AIX string library */

Modified: trunk/MgDev/Oem/php/include/ext/mysqlnd/mysqlnd_structs.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/mysqlnd/mysqlnd_structs.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/mysqlnd/mysqlnd_structs.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -352,7 +352,7 @@
 
 
 
-typedef void				(*func_mysqlnd_vio__init)(MYSQLND_VIO * const vio, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info);
+typedef enum_func_status	(*func_mysqlnd_vio__init)(MYSQLND_VIO * const vio, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info);
 typedef void				(*func_mysqlnd_vio__dtor)(MYSQLND_VIO * const vio, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
 
 typedef enum_func_status	(*func_mysqlnd_vio__connect)(MYSQLND_VIO * const vio, const MYSQLND_CSTRING scheme, const bool persistent, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
@@ -486,8 +486,8 @@
 typedef enum_func_status	(*func_mysqlnd_conn_data__send_command_do_request)(MYSQLND_CONN_DATA * const conn, const enum php_mysqlnd_server_command command, const zend_uchar * const arg, const size_t arg_len, const bool silent, const bool ignore_upsert_status);
 typedef enum_func_status	(*func_mysqlnd_conn_data__send_command_handle_response)(MYSQLND_CONN_DATA * const conn, const enum mysqlnd_packet_type ok_packet, const bool silent, const enum php_mysqlnd_server_command command, const bool ignore_upsert_status);
 
-typedef void				(*func_mysqlnd_conn_data__restart_psession)(MYSQLND_CONN_DATA * conn);
-typedef void				(*func_mysqlnd_conn_data__end_psession)(MYSQLND_CONN_DATA * conn);
+typedef enum_func_status	(*func_mysqlnd_conn_data__restart_psession)(MYSQLND_CONN_DATA * conn);
+typedef enum_func_status	(*func_mysqlnd_conn_data__end_psession)(MYSQLND_CONN_DATA * conn);
 typedef enum_func_status	(*func_mysqlnd_conn_data__send_close)(MYSQLND_CONN_DATA * conn);
 
 typedef enum_func_status    (*func_mysqlnd_conn_data__ssl_set)(MYSQLND_CONN_DATA * const conn, const char * key, const char * const cert, const char * const ca, const char * const capath, const char * const cipher);
@@ -632,7 +632,7 @@
 typedef MYSQLND_ROW_C 		(*func_mysqlnd_res__fetch_row_c)(MYSQLND_RES *result);
 typedef uint64_t			(*func_mysqlnd_res__num_rows)(const MYSQLND_RES * const result);
 typedef unsigned int		(*func_mysqlnd_res__num_fields)(const MYSQLND_RES * const result);
-typedef void				(*func_mysqlnd_res__skip_result)(MYSQLND_RES * const result);
+typedef enum_func_status	(*func_mysqlnd_res__skip_result)(MYSQLND_RES * const result);
 typedef enum_func_status	(*func_mysqlnd_res__seek_data)(MYSQLND_RES * const result, const uint64_t row);
 typedef MYSQLND_FIELD_OFFSET (*func_mysqlnd_res__seek_field)(MYSQLND_RES * const result, const MYSQLND_FIELD_OFFSET field_offset);
 typedef MYSQLND_FIELD_OFFSET (*func_mysqlnd_res__field_tell)(const MYSQLND_RES * const result);
@@ -1085,9 +1085,9 @@
 
 
 
-typedef void				(*func_mysqlnd_pfc__init)(MYSQLND_PFC * const pfc, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info);
+typedef enum_func_status	(*func_mysqlnd_pfc__init)(MYSQLND_PFC * const pfc, MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info);
 typedef void				(*func_mysqlnd_pfc__dtor)(MYSQLND_PFC * const pfc, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
-typedef void				(*func_mysqlnd_pfc__reset)(MYSQLND_PFC * const pfc, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
+typedef enum_func_status	(*func_mysqlnd_pfc__reset)(MYSQLND_PFC * const pfc, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info);
 typedef enum_func_status	(*func_mysqlnd_pfc__set_client_option)(MYSQLND_PFC * const pfc, enum_mysqlnd_client_option option, const char * const value);
 typedef enum_func_status	(*func_mysqlnd_pfc__decode)(zend_uchar * uncompressed_data, const size_t uncompressed_data_len, const zend_uchar * const compressed_data, const size_t compressed_data_len);
 typedef enum_func_status	(*func_mysqlnd_pfc__encode)(zend_uchar * compress_buffer, size_t * compress_buffer_len, const zend_uchar * const uncompressed_data, const size_t uncompressed_data_len);

Modified: trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -42,9 +42,9 @@
 /* The current PCRE version information. */
 
 #define PCRE2_MAJOR           10
-#define PCRE2_MINOR           40
+#define PCRE2_MINOR           39
 #define PCRE2_PRERELEASE      
-#define PCRE2_DATE            2022-04-14
+#define PCRE2_DATE            2021-10-29
 
 /* When an application links to a PCRE DLL in Windows, the symbols that are
 imported have to be identified as such. When building PCRE2, the appropriate

Modified: trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_internal.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_internal.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_internal.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -7,7 +7,7 @@
 
                        Written by Philip Hazel
      Original API code Copyright (c) 1997-2012 University of Cambridge
-          New API code Copyright (c) 2016-2022 University of Cambridge
+          New API code Copyright (c) 2016-2020 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -954,13 +954,6 @@
 #define STRING_LIMIT_RECURSION_EQ         "LIMIT_RECURSION="
 #define STRING_MARK                       "MARK"
 
-#define STRING_bc                         "bc"
-#define STRING_bidiclass                  "bidiclass"
-#define STRING_sc                         "sc"
-#define STRING_script                     "script"
-#define STRING_scriptextensions           "scriptextensions"
-#define STRING_scx                        "scx"
-
 #else  /* SUPPORT_UNICODE */
 
 /* UTF-8 support is enabled; always use UTF-8 (=ASCII) character codes. This
@@ -1255,14 +1248,6 @@
 #define STRING_LIMIT_RECURSION_EQ         STR_L STR_I STR_M STR_I STR_T STR_UNDERSCORE STR_R STR_E STR_C STR_U STR_R STR_S STR_I STR_O STR_N STR_EQUALS_SIGN
 #define STRING_MARK                       STR_M STR_A STR_R STR_K
 
-#define STRING_bc                         STR_b STR_c
-#define STRING_bidiclass                  STR_b STR_i STR_d STR_i STR_c STR_l STR_a STR_s STR_s
-#define STRING_sc                         STR_s STR_c
-#define STRING_script                     STR_s STR_c STR_r STR_i STR_p STR_t
-#define STRING_scriptextensions           STR_s STR_c STR_r STR_i STR_p STR_t STR_e STR_x STR_t STR_e STR_n STR_s STR_i STR_o STR_n STR_s
-#define STRING_scx                        STR_s STR_c STR_x
-
-
 #endif  /* SUPPORT_UNICODE */
 
 /* -------------------- End of character and string names -------------------*/
@@ -1269,25 +1254,20 @@
 
 /* -------------------- Definitions for compiled patterns -------------------*/
 
-/* Codes for different types of Unicode property. If these definitions are
-changed, the autopossessifying table in pcre2_auto_possess.c must be updated to
-match. */
+/* Codes for different types of Unicode property */
 
 #define PT_ANY        0    /* Any property - matches all chars */
 #define PT_LAMP       1    /* L& - the union of Lu, Ll, Lt */
 #define PT_GC         2    /* Specified general characteristic (e.g. L) */
 #define PT_PC         3    /* Specified particular characteristic (e.g. Lu) */
-#define PT_SC         4    /* Script only (e.g. Han) */
-#define PT_SCX        5    /* Script extensions (includes SC) */
-#define PT_ALNUM      6    /* Alphanumeric - the union of L and N */
-#define PT_SPACE      7    /* Perl space - general category Z plus 9,10,12,13 */
-#define PT_PXSPACE    8    /* POSIX space - Z plus 9,10,11,12,13 */
-#define PT_WORD       9    /* Word - L plus N plus underscore */
-#define PT_CLIST     10    /* Pseudo-property: match character list */
-#define PT_UCNC      11    /* Universal Character nameable character */
-#define PT_BIDICL    12    /* Specified bidi class */
-#define PT_BOOL      13    /* Boolean property */
-#define PT_TABSIZE   14    /* Size of square table for autopossessify tests */
+#define PT_SC         4    /* Script (e.g. Han) */
+#define PT_ALNUM      5    /* Alphanumeric - the union of L and N */
+#define PT_SPACE      6    /* Perl space - Z plus 9,10,12,13 */
+#define PT_PXSPACE    7    /* POSIX space - Z plus 9,10,11,12,13 */
+#define PT_WORD       8    /* Word - L plus N plus underscore */
+#define PT_CLIST      9    /* Pseudo-property: match character list */
+#define PT_UCNC      10    /* Universal Character nameable character */
+#define PT_TABSIZE   11    /* Size of square table for autopossessify tests */
 
 /* The following special properties are used only in XCLASS items, when POSIX
 classes are specified and PCRE2_UCP is set - in other words, for Unicode
@@ -1295,27 +1275,22 @@
 those in the above list, and so they do not take part in the autopossessifying
 table. */
 
-#define PT_PXGRAPH   14    /* [:graph:] - characters that mark the paper */
-#define PT_PXPRINT   15    /* [:print:] - [:graph:] plus non-control spaces */
-#define PT_PXPUNCT   16    /* [:punct:] - punctuation characters */
+#define PT_PXGRAPH   11    /* [:graph:] - characters that mark the paper */
+#define PT_PXPRINT   12    /* [:print:] - [:graph:] plus non-control spaces */
+#define PT_PXPUNCT   13    /* [:punct:] - punctuation characters */
 
-/* This value is used when parsing \p and \P escapes to indicate that neither
-\p{script:...} nor \p{scx:...} has been encountered. */
-
-#define PT_NOTSCRIPT 255
-
 /* Flag bits and data types for the extended class (OP_XCLASS) for classes that
 contain characters with values greater than 255. */
 
-#define XCL_NOT      0x01  /* Flag: this is a negative class */
-#define XCL_MAP      0x02  /* Flag: a 32-byte map is present */
-#define XCL_HASPROP  0x04  /* Flag: property checks are present. */
+#define XCL_NOT       0x01    /* Flag: this is a negative class */
+#define XCL_MAP       0x02    /* Flag: a 32-byte map is present */
+#define XCL_HASPROP   0x04    /* Flag: property checks are present. */
 
-#define XCL_END      0     /* Marks end of individual items */
-#define XCL_SINGLE   1     /* Single item (one multibyte char) follows */
-#define XCL_RANGE    2     /* A range (two multibyte chars) follows */
-#define XCL_PROP     3     /* Unicode property (2-byte property code follows) */
-#define XCL_NOTPROP  4     /* Unicode inverted property (ditto) */
+#define XCL_END       0    /* Marks end of individual items */
+#define XCL_SINGLE    1    /* Single item (one multibyte char) follows */
+#define XCL_RANGE     2    /* A range (two multibyte chars) follows */
+#define XCL_PROP      3    /* Unicode property (2-byte property code follows) */
+#define XCL_NOTPROP   4    /* Unicode inverted property (ditto) */
 
 /* These are escaped items that aren't just an encoding of a particular data
 value such as \n. They must have non-zero values, as check_escape() returns 0
@@ -1822,8 +1797,8 @@
   uint8_t gbprop;     /* ucp_gbControl, etc. (grapheme break property) */
   uint8_t caseset;    /* offset to multichar other cases or zero */
   int32_t other_case; /* offset to other case, or zero if none */
-  uint16_t scriptx_bidiclass; /* script extension (11 bit) and bidi class (5 bit) values */
-  uint16_t bprops;    /* binary properties offset */
+  int16_t scriptx;    /* script extension value */
+  int16_t dummy;      /* spare - to round to multiple of 4 bytes */
 } ucd_record;
 
 /* UCD access macros */
@@ -1840,14 +1815,6 @@
 #define GET_UCD(ch) REAL_GET_UCD(ch)
 #endif
 
-#define UCD_SCRIPTX_MASK 0x3ff
-#define UCD_BIDICLASS_SHIFT 11
-#define UCD_BPROPS_MASK 0xfff
-
-#define UCD_SCRIPTX_PROP(prop) ((prop)->scriptx_bidiclass & UCD_SCRIPTX_MASK)
-#define UCD_BIDICLASS_PROP(prop) ((prop)->scriptx_bidiclass >> UCD_BIDICLASS_SHIFT)
-#define UCD_BPROPS_PROP(prop) ((prop)->bprops & UCD_BPROPS_MASK)
-
 #define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
 #define UCD_SCRIPT(ch)      GET_UCD(ch)->script
 #define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
@@ -1854,17 +1821,8 @@
 #define UCD_GRAPHBREAK(ch)  GET_UCD(ch)->gbprop
 #define UCD_CASESET(ch)     GET_UCD(ch)->caseset
 #define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
-#define UCD_SCRIPTX(ch)     UCD_SCRIPTX_PROP(GET_UCD(ch))
-#define UCD_BPROPS(ch)      UCD_BPROPS_PROP(GET_UCD(ch))
-#define UCD_BIDICLASS(ch)   UCD_BIDICLASS_PROP(GET_UCD(ch))
+#define UCD_SCRIPTX(ch)     GET_UCD(ch)->scriptx
 
-/* The "scriptx" and bprops fields contain offsets into vectors of 32-bit words
-that form a bitmap representing a list of scripts or boolean properties. These
-macros test or set a bit in the map by number. */
-
-#define MAPBIT(map,n) ((map)[(n)/32]&(1u<<((n)%32)))
-#define MAPSET(map,n) ((map)[(n)/32]|=(1u<<((n)%32)))
-
 /* Header for serialized pcre2 codes. */
 
 typedef struct pcre2_serialized_data {
@@ -1920,7 +1878,6 @@
 #endif
 #define _pcre2_hspace_list             PCRE2_SUFFIX(_pcre2_hspace_list_)
 #define _pcre2_vspace_list             PCRE2_SUFFIX(_pcre2_vspace_list_)
-#define _pcre2_ucd_boolprop_sets       PCRE2_SUFFIX(_pcre2_ucd_boolprop_sets_)
 #define _pcre2_ucd_caseless_sets       PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_)
 #define _pcre2_ucd_digit_sets          PCRE2_SUFFIX(_pcre2_ucd_digit_sets_)
 #define _pcre2_ucd_script_sets         PCRE2_SUFFIX(_pcre2_ucd_script_sets_)
@@ -1944,10 +1901,9 @@
 extern const uint8_t                   PRIV(default_tables)[];
 extern const uint32_t                  PRIV(hspace_list)[];
 extern const uint32_t                  PRIV(vspace_list)[];
-extern const uint32_t                  PRIV(ucd_boolprop_sets)[];
 extern const uint32_t                  PRIV(ucd_caseless_sets)[];
 extern const uint32_t                  PRIV(ucd_digit_sets)[];
-extern const uint32_t                  PRIV(ucd_script_sets)[];
+extern const uint8_t                   PRIV(ucd_script_sets)[];
 extern const ucd_record                PRIV(ucd_records)[];
 #if PCRE2_CODE_UNIT_WIDTH == 32
 extern const ucd_record                PRIV(dummy_ucd_record)[];

Modified: trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_intmodedep.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_intmodedep.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_intmodedep.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -519,7 +519,7 @@
 macro because almost all calls are already within a block of UTF-32 only
 code.
 
-These are all no-ops since all UTF-32 characters fit into one PCRE2_UCHAR. */
+These are all no-ops since all UTF-32 characters fit into one pcre_uchar. */
 
 #define BACKCHAR(eptr) do { } while (0)
 
@@ -747,8 +747,8 @@
   uint32_t class_range_start;      /* Overall class range start */
   uint32_t class_range_end;        /* Overall class range end */
   PCRE2_UCHAR nl[4];               /* Newline string when fixed length */
-  uint32_t req_varyopt;            /* "After variable item" flag for reqbyte */
   int  max_lookbehind;             /* Maximum lookbehind (characters) */
+  int  req_varyopt;                /* "After variable item" flag for reqbyte */
   BOOL had_accept;                 /* (*ACCEPT) encountered */
   BOOL had_pruneorskip;            /* (*PRUNE) or (*SKIP) encountered */
   BOOL had_recurse;                /* Had a recursion or subroutine call */
@@ -764,7 +764,7 @@
 } pcre2_real_jit_stack;
 
 /* Structure for items in a linked list that represents an explicit recursive
-call within the pattern when running pcre2_dfa_match(). */
+call within the pattern when running pcre_dfa_match(). */
 
 typedef struct dfa_recursion_info {
   struct dfa_recursion_info *prevrec;
@@ -838,17 +838,6 @@
 typedef char check_heapframe_size[
   ((sizeof(heapframe) % sizeof(PCRE2_SIZE)) == 0)? (+1):(-1)];
 
-/* Structure for computing the alignment of heapframe. */
-
-typedef struct heapframe_align {
-  char unalign;    /* Completely unalign the current offset */
-  heapframe frame; /* Offset is its alignment */
-} heapframe_align;
-
-/* This define is the minimum alignment required for a heapframe, in bytes. */
-
-#define HEAPFRAME_ALIGNMENT offsetof(heapframe_align, frame)
-
 /* Structure for passing "static" information around between the functions
 doing traditional NFA matching (pcre2_match() and friends). */
 

Modified: trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_jit_simd_inc.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_jit_simd_inc.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_jit_simd_inc.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -339,7 +339,7 @@
   {
   JUMPHERE(partial_quit[0]);
   JUMPHERE(partial_quit[1]);
-  OP2U(SLJIT_SUB | SLJIT_SET_GREATER, STR_PTR, 0, STR_END, 0);
+  OP2(SLJIT_SUB | SLJIT_SET_GREATER, SLJIT_UNUSED, 0, STR_PTR, 0, STR_END, 0);
   CMOV(SLJIT_GREATER, STR_PTR, STR_END, 0);
   }
 else
@@ -537,7 +537,7 @@
   OP1(SLJIT_MOV, TMP3, 0, STR_END, 0);
   OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, IN_UCHARS(offs1 + 1));
 
-  OP2U(SLJIT_SUB | SLJIT_SET_LESS, TMP1, 0, STR_END, 0);
+  OP2(SLJIT_SUB | SLJIT_SET_LESS, SLJIT_UNUSED, 0, TMP1, 0, STR_END, 0);
   CMOV(SLJIT_LESS, STR_END, TMP1, 0);
   }
 
@@ -883,14 +883,14 @@
 
 #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32
   if (common->utf && offset > 0)
-    sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                     SLJIT_IMM, SLJIT_FUNC_ADDR(ffcs_utf));
+    sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(UW) | SLJIT_ARG3(UW) | SLJIT_ARG4(UW),
+                     SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcs_utf));
   else
-    sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                     SLJIT_IMM, SLJIT_FUNC_ADDR(ffcs));
+    sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(UW) | SLJIT_ARG3(UW) | SLJIT_ARG4(UW),
+                     SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcs));
 #else
-  sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                   SLJIT_IMM, SLJIT_FUNC_ADDR(ffcs));
+  sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(UW) | SLJIT_ARG3(UW) | SLJIT_ARG4(UW),
+                   SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcs));
 #endif
   }
 else
@@ -904,14 +904,14 @@
 
 #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32
     if (common->utf && offset > 0)
-      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                       SLJIT_IMM, SLJIT_FUNC_ADDR(ffcs_mask_utf));
+      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(UW) | SLJIT_ARG3(UW) | SLJIT_ARG4(UW),
+                       SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcs_mask_utf));
     else
-      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                       SLJIT_IMM, SLJIT_FUNC_ADDR(ffcs_mask));
+      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(UW) | SLJIT_ARG3(UW) | SLJIT_ARG4(UW),
+                       SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcs_mask));
 #else
-    sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                     SLJIT_IMM, SLJIT_FUNC_ADDR(ffcs_mask));
+    sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(UW) | SLJIT_ARG3(UW) | SLJIT_ARG4(UW),
+                     SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcs_mask));
 #endif
     }
   else
@@ -922,14 +922,14 @@
 
 #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32
     if (common->utf && offset > 0)
-      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                       SLJIT_IMM, SLJIT_FUNC_ADDR(ffcs_2_utf));
+      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(UW) | SLJIT_ARG3(UW) | SLJIT_ARG4(UW),
+                       SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcs_2_utf));
     else
-      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                       SLJIT_IMM, SLJIT_FUNC_ADDR(ffcs_2));
+      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(UW) | SLJIT_ARG3(UW) | SLJIT_ARG4(UW),
+                       SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcs_2));
 #else
-    sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                     SLJIT_IMM, SLJIT_FUNC_ADDR(ffcs_2));
+    sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(UW) | SLJIT_ARG3(UW) | SLJIT_ARG4(UW),
+                     SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcs_2));
 #endif
     }
   }
@@ -1067,7 +1067,7 @@
   OP1(SLJIT_MOV, SLJIT_R0, 0, SLJIT_MEM1(SLJIT_SP), common->match_end_ptr);
   OP2(SLJIT_ADD, SLJIT_R0, 0, SLJIT_R0, 0, SLJIT_IMM, IN_UCHARS(offs1 + 1));
 
-  OP2U(SLJIT_SUB | SLJIT_SET_LESS, STR_END, 0, SLJIT_R0, 0);
+  OP2(SLJIT_SUB | SLJIT_SET_LESS, SLJIT_UNUSED, 0, STR_END, 0, SLJIT_R0, 0);
   CMOV(SLJIT_LESS, SLJIT_R0, STR_END, 0);
   }
 
@@ -1084,31 +1084,31 @@
   if (char1a == char1b && char2a == char2b) {
 #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32
     if (common->utf)
-      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                       SLJIT_IMM, SLJIT_FUNC_ADDR(ffcps_0_utf));
+      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(SW) | SLJIT_ARG3(SW) | SLJIT_ARG4(SW),
+                       SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcps_0_utf));
     else
 #endif
-      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                       SLJIT_IMM, SLJIT_FUNC_ADDR(ffcps_0));
+      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(SW) | SLJIT_ARG3(SW) | SLJIT_ARG4(SW),
+                       SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcps_0));
   } else {
 #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32
     if (common->utf)
-      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                       SLJIT_IMM, SLJIT_FUNC_ADDR(ffcps_1_utf));
+      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(SW) | SLJIT_ARG3(SW) | SLJIT_ARG4(SW),
+                       SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcps_1_utf));
     else
 #endif
-      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                       SLJIT_IMM, SLJIT_FUNC_ADDR(ffcps_1));
+      sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(SW) | SLJIT_ARG3(SW) | SLJIT_ARG4(SW),
+                       SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcps_1));
   }
 } else {
 #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32
   if (common->utf)
-    sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                     SLJIT_IMM, SLJIT_FUNC_ADDR(ffcps_default_utf));
+    sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(SW) | SLJIT_ARG3(SW) | SLJIT_ARG4(SW),
+                     SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcps_default_utf));
   else
 #endif
-    sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_ARGS4(W, W, W, W, W),
-                     SLJIT_IMM, SLJIT_FUNC_ADDR(ffcps_default));
+    sljit_emit_icall(compiler, SLJIT_CALL, SLJIT_RET(SW) | SLJIT_ARG1(SW) | SLJIT_ARG2(SW) | SLJIT_ARG3(SW) | SLJIT_ARG4(SW),
+                     SLJIT_IMM, SLJIT_FUNC_OFFSET(ffcps_default));
 }
 
 /* Restore STR_PTR register. */
@@ -1418,7 +1418,7 @@
   {
   JUMPHERE(partial_quit[0]);
   JUMPHERE(partial_quit[1]);
-  OP2U(SLJIT_SUB | SLJIT_SET_GREATER, STR_PTR, 0, STR_END, 0);
+  OP2(SLJIT_SUB | SLJIT_SET_GREATER, SLJIT_UNUSED, 0, STR_PTR, 0, STR_END, 0);
   CMOV(SLJIT_GREATER, STR_PTR, STR_END, 0);
   }
 else
@@ -1673,7 +1673,7 @@
   OP1(SLJIT_MOV, TMP3, 0, STR_END, 0);
   OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, IN_UCHARS(offs1 + 1));
 
-  OP2U(SLJIT_SUB | SLJIT_SET_LESS, TMP1, 0, STR_END, 0);
+  OP2(SLJIT_SUB | SLJIT_SET_LESS, SLJIT_UNUSED, 0, TMP1, 0, STR_END, 0);
   CMOV(SLJIT_LESS, STR_END, TMP1, 0);
   }
 

Modified: trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_ucp.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_ucp.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/pcre/pcre2lib/pcre2_ucp.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -7,12 +7,8 @@
 
                        Written by Philip Hazel
      Original API code Copyright (c) 1997-2012 University of Cambridge
-          New API code Copyright (c) 2016-2022 University of Cambridge
+          New API code Copyright (c) 2016-2018 University of Cambridge
 
-This module is auto-generated from Unicode data files. DO NOT EDIT MANUALLY!
-Instead, modify the maint/GenerateUcpHeader.py script and run it to generate
-a new version of this code.
-
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
@@ -42,27 +38,31 @@
 -----------------------------------------------------------------------------
 */
 
+
 #ifndef PCRE2_UCP_H_IDEMPOTENT_GUARD
 #define PCRE2_UCP_H_IDEMPOTENT_GUARD
 
-/* This file contains definitions of the Unicode property values that are
-returned by the UCD access macros and used throughout PCRE2.
+/* This file contains definitions of the property values that are returned by
+the UCD access macros. New values that are added for new releases of Unicode
+should always be at the end of each enum, for backwards compatibility.
 
-IMPORTANT: The specific values of the first two enums (general and particular
-character categories) are assumed by the table called catposstab in the file
-pcre2_auto_possess.c. They are unlikely to change, but should be checked after
-an update. */
+IMPORTANT: Note also that the specific numeric values of the enums have to be
+the same as the values that are generated by the maint/MultiStage2.py script,
+where the equivalent property descriptive names are listed in vectors.
 
+ALSO: The specific values of the first two enums are assumed for the table
+called catposstab in pcre2_compile.c. */
+
 /* These are the general character categories. */
 
 enum {
-  ucp_C,
-  ucp_L,
-  ucp_M,
-  ucp_N,
-  ucp_P,
-  ucp_S,
-  ucp_Z,
+  ucp_C,     /* Other */
+  ucp_L,     /* Letter */
+  ucp_M,     /* Mark */
+  ucp_N,     /* Number */
+  ucp_P,     /* Punctuation */
+  ucp_S,     /* Symbol */
+  ucp_Z      /* Separator */
 };
 
 /* These are the particular character categories. */
@@ -97,100 +97,9 @@
   ucp_So,    /* Other symbol */
   ucp_Zl,    /* Line separator */
   ucp_Zp,    /* Paragraph separator */
-  ucp_Zs,    /* Space separator */
+  ucp_Zs     /* Space separator */
 };
 
-/* These are Boolean properties. */
-
-enum {
-  ucp_ASCII,
-  ucp_ASCII_Hex_Digit,
-  ucp_Alphabetic,
-  ucp_Bidi_Control,
-  ucp_Bidi_Mirrored,
-  ucp_Case_Ignorable,
-  ucp_Cased,
-  ucp_Changes_When_Casefolded,
-  ucp_Changes_When_Casemapped,
-  ucp_Changes_When_Lowercased,
-  ucp_Changes_When_Titlecased,
-  ucp_Changes_When_Uppercased,
-  ucp_Dash,
-  ucp_Default_Ignorable_Code_Point,
-  ucp_Deprecated,
-  ucp_Diacritic,
-  ucp_Emoji,
-  ucp_Emoji_Component,
-  ucp_Emoji_Modifier,
-  ucp_Emoji_Modifier_Base,
-  ucp_Emoji_Presentation,
-  ucp_Extended_Pictographic,
-  ucp_Extender,
-  ucp_Grapheme_Base,
-  ucp_Grapheme_Extend,
-  ucp_Grapheme_Link,
-  ucp_Hex_Digit,
-  ucp_IDS_Binary_Operator,
-  ucp_IDS_Trinary_Operator,
-  ucp_ID_Continue,
-  ucp_ID_Start,
-  ucp_Ideographic,
-  ucp_Join_Control,
-  ucp_Logical_Order_Exception,
-  ucp_Lowercase,
-  ucp_Math,
-  ucp_Noncharacter_Code_Point,
-  ucp_Pattern_Syntax,
-  ucp_Pattern_White_Space,
-  ucp_Prepended_Concatenation_Mark,
-  ucp_Quotation_Mark,
-  ucp_Radical,
-  ucp_Regional_Indicator,
-  ucp_Sentence_Terminal,
-  ucp_Soft_Dotted,
-  ucp_Terminal_Punctuation,
-  ucp_Unified_Ideograph,
-  ucp_Uppercase,
-  ucp_Variation_Selector,
-  ucp_White_Space,
-  ucp_XID_Continue,
-  ucp_XID_Start,
-  /* This must be last */
-  ucp_Bprop_Count
-};
-
-/* Size of entries in ucd_boolprop_sets[] */
-
-#define ucd_boolprop_sets_item_size 2
-
-/* These are the bidi class values. */
-
-enum {
-  ucp_bidiAL,   /* Arabic letter */
-  ucp_bidiAN,   /* Arabic number */
-  ucp_bidiB,    /* Paragraph separator */
-  ucp_bidiBN,   /* Boundary neutral */
-  ucp_bidiCS,   /* Common separator */
-  ucp_bidiEN,   /* European number */
-  ucp_bidiES,   /* European separator */
-  ucp_bidiET,   /* European terminator */
-  ucp_bidiFSI,  /* First strong isolate */
-  ucp_bidiL,    /* Left to right */
-  ucp_bidiLRE,  /* Left to right embedding */
-  ucp_bidiLRI,  /* Left to right isolate */
-  ucp_bidiLRO,  /* Left to right override */
-  ucp_bidiNSM,  /* Non-spacing mark */
-  ucp_bidiON,   /* Other neutral */
-  ucp_bidiPDF,  /* Pop directional format */
-  ucp_bidiPDI,  /* Pop directional isolate */
-  ucp_bidiR,    /* Right to left */
-  ucp_bidiRLE,  /* Right to left embedding */
-  ucp_bidiRLI,  /* Right to left isolate */
-  ucp_bidiRLO,  /* Right to left override */
-  ucp_bidiS,    /* Segment separator */
-  ucp_bidiWS,   /* White space */
-};
-
 /* These are grapheme break properties. The Extended Pictographic property
 comes from the emoji-data.txt file. */
 
@@ -206,189 +115,191 @@
   ucp_gbT,                     /*  8 Hangul syllable type T */
   ucp_gbLV,                    /*  9 Hangul syllable type LV */
   ucp_gbLVT,                   /* 10 Hangul syllable type LVT */
-  ucp_gbRegional_Indicator,    /* 11 */
+  ucp_gbRegionalIndicator,     /* 11 */
   ucp_gbOther,                 /* 12 */
   ucp_gbZWJ,                   /* 13 */
-  ucp_gbExtended_Pictographic, /* 14 */
+  ucp_gbExtended_Pictographic  /* 14 */
 };
 
 /* These are the script identifications. */
 
 enum {
-  /* Scripts which has characters in other scripts. */
-  ucp_Latin,
-  ucp_Greek,
+  ucp_Unknown,
+  ucp_Arabic,
+  ucp_Armenian,
+  ucp_Bengali,
+  ucp_Bopomofo,
+  ucp_Braille,
+  ucp_Buginese,
+  ucp_Buhid,
+  ucp_Canadian_Aboriginal,
+  ucp_Cherokee,
+  ucp_Common,
+  ucp_Coptic,
+  ucp_Cypriot,
   ucp_Cyrillic,
-  ucp_Arabic,
-  ucp_Syriac,
-  ucp_Thaana,
+  ucp_Deseret,
   ucp_Devanagari,
-  ucp_Bengali,
+  ucp_Ethiopic,
+  ucp_Georgian,
+  ucp_Glagolitic,
+  ucp_Gothic,
+  ucp_Greek,
+  ucp_Gujarati,
   ucp_Gurmukhi,
-  ucp_Gujarati,
-  ucp_Oriya,
-  ucp_Tamil,
-  ucp_Telugu,
+  ucp_Han,
+  ucp_Hangul,
+  ucp_Hanunoo,
+  ucp_Hebrew,
+  ucp_Hiragana,
+  ucp_Inherited,
   ucp_Kannada,
+  ucp_Katakana,
+  ucp_Kharoshthi,
+  ucp_Khmer,
+  ucp_Lao,
+  ucp_Latin,
+  ucp_Limbu,
+  ucp_Linear_B,
   ucp_Malayalam,
+  ucp_Mongolian,
+  ucp_Myanmar,
+  ucp_New_Tai_Lue,
+  ucp_Ogham,
+  ucp_Old_Italic,
+  ucp_Old_Persian,
+  ucp_Oriya,
+  ucp_Osmanya,
+  ucp_Runic,
+  ucp_Shavian,
   ucp_Sinhala,
-  ucp_Myanmar,
-  ucp_Georgian,
-  ucp_Hangul,
-  ucp_Mongolian,
-  ucp_Hiragana,
-  ucp_Katakana,
-  ucp_Bopomofo,
-  ucp_Han,
-  ucp_Yi,
+  ucp_Syloti_Nagri,
+  ucp_Syriac,
   ucp_Tagalog,
-  ucp_Hanunoo,
-  ucp_Buhid,
   ucp_Tagbanwa,
-  ucp_Limbu,
   ucp_Tai_Le,
-  ucp_Linear_B,
-  ucp_Cypriot,
-  ucp_Buginese,
-  ucp_Coptic,
-  ucp_Glagolitic,
-  ucp_Syloti_Nagri,
-  ucp_Phags_Pa,
-  ucp_Nko,
-  ucp_Kayah_Li,
-  ucp_Javanese,
-  ucp_Kaithi,
-  ucp_Mandaic,
-  ucp_Chakma,
-  ucp_Sharada,
-  ucp_Takri,
-  ucp_Duployan,
-  ucp_Grantha,
-  ucp_Khojki,
-  ucp_Linear_A,
-  ucp_Mahajani,
-  ucp_Manichaean,
-  ucp_Modi,
-  ucp_Old_Permic,
-  ucp_Psalter_Pahlavi,
-  ucp_Khudawadi,
-  ucp_Tirhuta,
-  ucp_Multani,
-  ucp_Adlam,
-  ucp_Masaram_Gondi,
-  ucp_Dogra,
-  ucp_Gunjala_Gondi,
-  ucp_Hanifi_Rohingya,
-  ucp_Sogdian,
-  ucp_Nandinagari,
-  ucp_Yezidi,
-  ucp_Cypro_Minoan,
-  ucp_Old_Uyghur,
-
-  /* Scripts which has no characters in other scripts. */
-  ucp_Unknown,
-  ucp_Common,
-  ucp_Armenian,
-  ucp_Hebrew,
+  ucp_Tamil,
+  ucp_Telugu,
+  ucp_Thaana,
   ucp_Thai,
-  ucp_Lao,
   ucp_Tibetan,
-  ucp_Ethiopic,
-  ucp_Cherokee,
-  ucp_Canadian_Aboriginal,
-  ucp_Ogham,
-  ucp_Runic,
-  ucp_Khmer,
-  ucp_Old_Italic,
-  ucp_Gothic,
-  ucp_Deseret,
-  ucp_Inherited,
+  ucp_Tifinagh,
   ucp_Ugaritic,
-  ucp_Shavian,
-  ucp_Osmanya,
-  ucp_Braille,
-  ucp_New_Tai_Lue,
-  ucp_Tifinagh,
-  ucp_Old_Persian,
-  ucp_Kharoshthi,
+  ucp_Yi,
+  /* New for Unicode 5.0 */
   ucp_Balinese,
   ucp_Cuneiform,
+  ucp_Nko,
+  ucp_Phags_Pa,
   ucp_Phoenician,
-  ucp_Sundanese,
+  /* New for Unicode 5.1 */
+  ucp_Carian,
+  ucp_Cham,
+  ucp_Kayah_Li,
   ucp_Lepcha,
+  ucp_Lycian,
+  ucp_Lydian,
   ucp_Ol_Chiki,
+  ucp_Rejang,
+  ucp_Saurashtra,
+  ucp_Sundanese,
   ucp_Vai,
-  ucp_Saurashtra,
-  ucp_Rejang,
-  ucp_Lycian,
-  ucp_Carian,
-  ucp_Lydian,
-  ucp_Cham,
-  ucp_Tai_Tham,
-  ucp_Tai_Viet,
+  /* New for Unicode 5.2 */
   ucp_Avestan,
+  ucp_Bamum,
   ucp_Egyptian_Hieroglyphs,
-  ucp_Samaritan,
+  ucp_Imperial_Aramaic,
+  ucp_Inscriptional_Pahlavi,
+  ucp_Inscriptional_Parthian,
+  ucp_Javanese,
+  ucp_Kaithi,
   ucp_Lisu,
-  ucp_Bamum,
   ucp_Meetei_Mayek,
-  ucp_Imperial_Aramaic,
   ucp_Old_South_Arabian,
-  ucp_Inscriptional_Parthian,
-  ucp_Inscriptional_Pahlavi,
   ucp_Old_Turkic,
+  ucp_Samaritan,
+  ucp_Tai_Tham,
+  ucp_Tai_Viet,
+  /* New for Unicode 6.0.0 */
   ucp_Batak,
   ucp_Brahmi,
+  ucp_Mandaic,
+  /* New for Unicode 6.1.0 */
+  ucp_Chakma,
   ucp_Meroitic_Cursive,
   ucp_Meroitic_Hieroglyphs,
   ucp_Miao,
+  ucp_Sharada,
   ucp_Sora_Sompeng,
+  ucp_Takri,
+  /* New for Unicode 7.0.0 */
+  ucp_Bassa_Vah,
   ucp_Caucasian_Albanian,
-  ucp_Bassa_Vah,
+  ucp_Duployan,
   ucp_Elbasan,
-  ucp_Pahawh_Hmong,
+  ucp_Grantha,
+  ucp_Khojki,
+  ucp_Khudawadi,
+  ucp_Linear_A,
+  ucp_Mahajani,
+  ucp_Manichaean,
   ucp_Mende_Kikakui,
+  ucp_Modi,
   ucp_Mro,
+  ucp_Nabataean,
   ucp_Old_North_Arabian,
-  ucp_Nabataean,
+  ucp_Old_Permic,
+  ucp_Pahawh_Hmong,
   ucp_Palmyrene,
+  ucp_Psalter_Pahlavi,
   ucp_Pau_Cin_Hau,
   ucp_Siddham,
+  ucp_Tirhuta,
   ucp_Warang_Citi,
+  /* New for Unicode 8.0.0 */
   ucp_Ahom,
   ucp_Anatolian_Hieroglyphs,
   ucp_Hatran,
+  ucp_Multani,
   ucp_Old_Hungarian,
   ucp_SignWriting,
+  /* New for Unicode 10.0.0 (no update since 8.0.0) */
+  ucp_Adlam,
   ucp_Bhaiksuki,
   ucp_Marchen,
   ucp_Newa,
   ucp_Osage,
   ucp_Tangut,
+  ucp_Masaram_Gondi,
   ucp_Nushu,
   ucp_Soyombo,
   ucp_Zanabazar_Square,
+  /* New for Unicode 11.0.0 */
+  ucp_Dogra,
+  ucp_Gunjala_Gondi,
+  ucp_Hanifi_Rohingya,
   ucp_Makasar,
   ucp_Medefaidrin,
   ucp_Old_Sogdian,
+  ucp_Sogdian,
+  /* New for Unicode 12.0.0 */
   ucp_Elymaic,
+  ucp_Nandinagari,
   ucp_Nyiakeng_Puachue_Hmong,
   ucp_Wancho,
+  /* New for Unicode 13.0.0 */
   ucp_Chorasmian,
   ucp_Dives_Akuru,
   ucp_Khitan_Small_Script,
+  ucp_Yezidi,
+  /* New for Unicode 14.0.0 */
+  ucp_Cypro_Minoan,
+  ucp_Old_Uyghur,
   ucp_Tangsa,
   ucp_Toto,
-  ucp_Vithkuqi,
-
-  /* This must be last */
-  ucp_Script_Count
+  ucp_Vithkuqi
 };
 
-/* Size of entries in ucd_script_sets[] */
-
-#define ucd_script_sets_item_size 3
-
 #endif  /* PCRE2_UCP_H_IDEMPOTENT_GUARD */
 
 /* End of pcre2_ucp.h */

Modified: trunk/MgDev/Oem/php/include/ext/pdo/php_pdo.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/pdo/php_pdo.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/pdo/php_pdo.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -53,8 +53,6 @@
 #define REGISTER_PDO_CLASS_CONST_STRING(const_name, value) \
 	zend_declare_class_constant_stringl(php_pdo_get_dbh_ce(), const_name, sizeof(const_name)-1, value, sizeof(value)-1);
 
-#define LONG_CONST(c) (zend_long) c
-
 #define PDO_CONSTRUCT_CHECK \
 	if (!dbh->driver) { \
 		zend_throw_error(NULL, "PDO object is not initialized, constructor was not called"); \

Modified: trunk/MgDev/Oem/php/include/ext/pdo/php_pdo_driver.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/pdo/php_pdo_driver.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/pdo/php_pdo_driver.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -672,7 +672,7 @@
 PDO_API int pdo_parse_params(pdo_stmt_t *stmt, zend_string *inquery, zend_string **outquery);
 
 PDO_API void pdo_raise_impl_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt,
-	pdo_error_type sqlstate, const char *supp);
+	const char *sqlstate, const char *supp);
 
 PDO_API void php_pdo_dbh_addref(pdo_dbh_t *dbh);
 PDO_API void php_pdo_dbh_delref(pdo_dbh_t *dbh);

Modified: trunk/MgDev/Oem/php/include/ext/session/php_session.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/session/php_session.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/session/php_session.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -39,29 +39,29 @@
 
 typedef struct ps_module_struct {
 	const char *s_name;
-	zend_result (*s_open)(PS_OPEN_ARGS);
-	zend_result (*s_close)(PS_CLOSE_ARGS);
-	zend_result (*s_read)(PS_READ_ARGS);
-	zend_result (*s_write)(PS_WRITE_ARGS);
-	zend_result (*s_destroy)(PS_DESTROY_ARGS);
+	int (*s_open)(PS_OPEN_ARGS);
+	int (*s_close)(PS_CLOSE_ARGS);
+	int (*s_read)(PS_READ_ARGS);
+	int (*s_write)(PS_WRITE_ARGS);
+	int (*s_destroy)(PS_DESTROY_ARGS);
 	zend_long (*s_gc)(PS_GC_ARGS);
 	zend_string *(*s_create_sid)(PS_CREATE_SID_ARGS);
-	zend_result (*s_validate_sid)(PS_VALIDATE_SID_ARGS);
-	zend_result (*s_update_timestamp)(PS_UPDATE_TIMESTAMP_ARGS);
+	int (*s_validate_sid)(PS_VALIDATE_SID_ARGS);
+	int (*s_update_timestamp)(PS_UPDATE_TIMESTAMP_ARGS);
 } ps_module;
 
 #define PS_GET_MOD_DATA() *mod_data
 #define PS_SET_MOD_DATA(a) *mod_data = (a)
 
-#define PS_OPEN_FUNC(x) 	zend_result ps_open_##x(PS_OPEN_ARGS)
-#define PS_CLOSE_FUNC(x) 	zend_result ps_close_##x(PS_CLOSE_ARGS)
-#define PS_READ_FUNC(x) 	zend_result ps_read_##x(PS_READ_ARGS)
-#define PS_WRITE_FUNC(x) 	zend_result ps_write_##x(PS_WRITE_ARGS)
-#define PS_DESTROY_FUNC(x) 	zend_result ps_delete_##x(PS_DESTROY_ARGS)
+#define PS_OPEN_FUNC(x) 	int ps_open_##x(PS_OPEN_ARGS)
+#define PS_CLOSE_FUNC(x) 	int ps_close_##x(PS_CLOSE_ARGS)
+#define PS_READ_FUNC(x) 	int ps_read_##x(PS_READ_ARGS)
+#define PS_WRITE_FUNC(x) 	int ps_write_##x(PS_WRITE_ARGS)
+#define PS_DESTROY_FUNC(x) 	int ps_delete_##x(PS_DESTROY_ARGS)
 #define PS_GC_FUNC(x) 		zend_long ps_gc_##x(PS_GC_ARGS)
 #define PS_CREATE_SID_FUNC(x)	zend_string *ps_create_sid_##x(PS_CREATE_SID_ARGS)
-#define PS_VALIDATE_SID_FUNC(x)	zend_result ps_validate_sid_##x(PS_VALIDATE_SID_ARGS)
-#define PS_UPDATE_TIMESTAMP_FUNC(x) 	zend_result ps_update_timestamp_##x(PS_UPDATE_TIMESTAMP_ARGS)
+#define PS_VALIDATE_SID_FUNC(x)	int ps_validate_sid_##x(PS_VALIDATE_SID_ARGS)
+#define PS_UPDATE_TIMESTAMP_FUNC(x) 	int ps_update_timestamp_##x(PS_UPDATE_TIMESTAMP_ARGS)
 
 /* Legacy save handler module definitions */
 #define PS_FUNCS(x) \
@@ -174,9 +174,8 @@
 			zval ps_update_timestamp;
 		} name;
 	} mod_user_names;
-	bool mod_user_implemented;
-	bool mod_user_is_open;
-	zend_string *mod_user_class_name;
+	int mod_user_implemented;
+	int mod_user_is_open;
 	const struct ps_serializer_struct *serializer;
 	zval http_session_vars;
 	bool auto_start;
@@ -186,8 +185,8 @@
 
 	zend_long sid_length;
 	zend_long sid_bits_per_character;
-	bool send_cookie;
-	bool define_sid;
+	int send_cookie;
+	int define_sid;
 
 	php_session_rfc1867_progress *rfc1867_progress;
 	bool rfc1867_enabled; /* session.upload_progress.enabled */
@@ -224,7 +223,7 @@
 typedef struct ps_serializer_struct {
 	const char *name;
 	zend_string *(*encode)(PS_SERIALIZER_ENCODE_ARGS);
-	zend_result (*decode)(PS_SERIALIZER_DECODE_ARGS);
+	int (*decode)(PS_SERIALIZER_DECODE_ARGS);
 } ps_serializer;
 
 #define PS_SERIALIZER_ENCODE_NAME(x) ps_srlzr_encode_##x
@@ -233,7 +232,7 @@
 #define PS_SERIALIZER_ENCODE_FUNC(x) \
 	zend_string *PS_SERIALIZER_ENCODE_NAME(x)(PS_SERIALIZER_ENCODE_ARGS)
 #define PS_SERIALIZER_DECODE_FUNC(x) \
-	zend_result PS_SERIALIZER_DECODE_NAME(x)(PS_SERIALIZER_DECODE_ARGS)
+	int PS_SERIALIZER_DECODE_NAME(x)(PS_SERIALIZER_DECODE_ARGS)
 
 #define PS_SERIALIZER_FUNCS(x) \
 	PS_SERIALIZER_ENCODE_FUNC(x); \
@@ -245,30 +244,30 @@
 /* default create id function */
 PHPAPI zend_string *php_session_create_id(PS_CREATE_SID_ARGS);
 /* Dummy PS module functions */
-PHPAPI zend_result php_session_validate_sid(PS_VALIDATE_SID_ARGS);
-PHPAPI zend_result php_session_update_timestamp(PS_UPDATE_TIMESTAMP_ARGS);
+PHPAPI int php_session_validate_sid(PS_VALIDATE_SID_ARGS);
+PHPAPI int php_session_update_timestamp(PS_UPDATE_TIMESTAMP_ARGS);
 
 PHPAPI void session_adapt_url(const char *url, size_t url_len, char **new_url, size_t *new_len);
 
-PHPAPI zend_result php_session_destroy(void);
+PHPAPI int php_session_destroy(void);
 PHPAPI void php_add_session_var(zend_string *name);
 PHPAPI zval *php_set_session_var(zend_string *name, zval *state_val, php_unserialize_data_t *var_hash);
 PHPAPI zval *php_get_session_var(zend_string *name);
 
-PHPAPI zend_result php_session_register_module(const ps_module *);
+PHPAPI int php_session_register_module(const ps_module *);
 
-PHPAPI zend_result php_session_register_serializer(const char *name,
+PHPAPI int php_session_register_serializer(const char *name,
 	        zend_string *(*encode)(PS_SERIALIZER_ENCODE_ARGS),
-	        zend_result (*decode)(PS_SERIALIZER_DECODE_ARGS));
+	        int (*decode)(PS_SERIALIZER_DECODE_ARGS));
 
-PHPAPI zend_result php_session_start(void);
-PHPAPI zend_result php_session_flush(int write);
+PHPAPI int php_session_start(void);
+PHPAPI int php_session_flush(int write);
 
 PHPAPI const ps_module *_php_find_ps_module(const char *name);
 PHPAPI const ps_serializer *_php_find_ps_serializer(const char *name);
 
-PHPAPI zend_result php_session_valid_key(const char *key);
-PHPAPI zend_result php_session_reset_id(void);
+PHPAPI int php_session_valid_key(const char *key);
+PHPAPI int php_session_reset_id(void);
 
 #define PS_ADD_VARL(name) do {										\
 	php_add_session_var(name);							\

Modified: trunk/MgDev/Oem/php/include/ext/sockets/php_sockets.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/sockets/php_sockets.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/sockets/php_sockets.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -136,271 +136,4 @@
 # define ss_family __ss_family
 #endif
 
-#ifndef MSG_EOF
-#ifdef MSG_FIN
-#define MSG_EOF MSG_FIN
 #endif
-#endif
-
-#ifndef MSG_WAITALL
-#ifdef LINUX
-#define MSG_WAITALL 0x00000100
-#else
-#define MSG_WAITALL 0x00000000
-#endif
-#endif
-
-#define PHP_NORMAL_READ 0x0001
-#define PHP_BINARY_READ 0x0002
-
-#ifdef WIN32
-#define PHP_SOCKET_EINTR WSAEINTR
-#elif defined(EINTR)
-#define PHP_SOCKET_EINTR EINTR
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EBADF WSAEBADF
-#elif defined(EBADF)
-#define PHP_SOCKET_EBADF EBADF
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EACCES WSAEACCES
-#elif defined(EACCES)
-#define PHP_SOCKET_EACCES EACCES
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EFAULT WSAEFAULT
-#elif defined(EFAULT)
-#define PHP_SOCKET_EFAULT EFAULT
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EINVAL WSAEINVAL
-#elif defined(EINVAL)
-#define PHP_SOCKET_EINVAL EINVAL
-#endif
-
-#ifdef ENFILE
-#define PHP_SOCKET_ENFILE ENFILE
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EMFILE WSAEMFILE
-#elif defined(EMFILE)
-#define PHP_SOCKET_EMFILE EMFILE
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EWOULDBLOCK WSAEWOULDBLOCK
-#elif defined(EWOULDBLOCK)
-#define PHP_SOCKET_EWOULDBLOCK EWOULDBLOCK
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EINPROGRESS WSAEINPROGRESS
-#elif defined(EINPROGRESS)
-#define PHP_SOCKET_EINPROGRESS EINPROGRESS
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EALREADY WSAEALREADY
-#elif defined(EALREADY)
-#define PHP_SOCKET_EALREADY EALREADY
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ENOTSOCK WSAENOTSOCK
-#elif defined(ENOTSOCK)
-#define PHP_SOCKET_ENOTSOCK ENOTSOCK
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EDESTADDRREQ WSAEDESTADDRREQ
-#elif defined(EDESTADDRREQ)
-#define PHP_SOCKET_EDESTADDRREQ EDESTADDRREQ
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EMSGSIZE WSAEMSGSIZE
-#elif defined(EMSGSIZE)
-#define PHP_SOCKET_EMSGSIZE EMSGSIZE
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EPROTOTYPE WSAEPROTOTYPE
-#elif defined(EPROTOTYPE)
-#define PHP_SOCKET_EPROTOTYPE EPROTOTYPE
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ENOPROTOOPT WSAENOPROTOOPT
-#elif defined(ENOPROTOOPT)
-#define PHP_SOCKET_ENOPROTOOPT ENOPROTOOPT
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EPROTONOSUPPORT WSAEPROTONOSUPPORT
-#elif defined(EPROTONOSUPPORT)
-#define PHP_SOCKET_EPROTONOSUPPORT EPROTONOSUPPORT
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
-#elif defined(ESOCKTNOSUPPORT)
-#define PHP_SOCKET_ESOCKTNOSUPPORT ESOCKTNOSUPPORT
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EOPNOTSUPP WSAEOPNOTSUPP
-#elif defined(EOPNOTSUPP)
-#define PHP_SOCKET_EOPNOTSUPP EOPNOTSUPP
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EPFNOSUPPORT WSAEPFNOSUPPORT
-#elif defined(EPFNOSUPPORT)
-#define PHP_SOCKET_EPFNOSUPPORT EPFNOSUPPORT
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EAFNOSUPPORT WSAEAFNOSUPPORT
-#elif defined(EAFNOSUPPORT)
-#define PHP_SOCKET_EAFNOSUPPORT EAFNOSUPPORT
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EADDRINUSE WSAEADDRINUSE
-#elif defined(EADDRINUSE)
-#define PHP_SOCKET_EADDRINUSE EADDRINUSE
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EADDRNOTAVAIL WSAEADDRNOTAVAIL
-#elif defined(EADDRNOTAVAIL)
-#define PHP_SOCKET_EADDRNOTAVAIL EADDRNOTAVAIL
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ENETDOWN WSAENETDOWN
-#elif defined(ENETDOWN)
-#define PHP_SOCKET_ENETDOWN ENETDOWN
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ENETUNREACH WSAENETUNREACH
-#elif defined(ENETUNREACH)
-#define PHP_SOCKET_ENETUNREACH ENETUNREACH
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ENETRESET WSAENETRESET
-#elif defined(ENETRESET)
-#define PHP_SOCKET_ENETRESET ENETRESET
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ECONNABORTED WSAECONNABORTED
-#elif defined(ECONNABORTED)
-#define PHP_SOCKET_ECONNABORTED ECONNABORTED
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ECONNRESET WSAECONNRESET
-#elif defined(ECONNRESET)
-#define PHP_SOCKET_ECONNRESET ECONNRESET
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ENOBUFS WSAENOBUFS
-#elif defined(ENOBUFS)
-#define PHP_SOCKET_ENOBUFS ENOBUFS
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EISCONN WSAEISCONN
-#elif defined(EISCONN)
-#define PHP_SOCKET_EISCONN EISCONN
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ENOTCONN WSAENOTCONN
-#elif defined(ENOTCONN)
-#define PHP_SOCKET_ENOTCONN ENOTCONN
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ESHUTDOWN WSAESHUTDOWN
-#elif defined(ESHUTDOWN)
-#define PHP_SOCKET_ESHUTDOWN ESHUTDOWN
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ETOOMANYREFS WSAETOOMANYREFS
-#elif defined(ETOOMANYREFS)
-#define PHP_SOCKET_ETOOMANYREFS ETOOMANYREFS
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ETIMEDOUT WSAETIMEDOUT
-#elif defined(ETIMEDOUT)
-#define PHP_SOCKET_ETIMEDOUT ETIMEDOUT
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ECONNREFUSED WSAECONNREFUSED
-#elif defined(ECONNREFUSED)
-#define PHP_SOCKET_ECONNREFUSED ECONNREFUSED
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ELOOP WSAELOOP
-#elif defined(ELOOP)
-#define PHP_SOCKET_ELOOP ELOOP
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ENAMETOOLONG WSAENAMETOOLONG
-#elif defined(ENAMETOOLONG)
-#define PHP_SOCKET_ENAMETOOLONG ENAMETOOLONG
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EHOSTDOWN WSAEHOSTDOWN
-#elif defined(EHOSTDOWN)
-#define PHP_SOCKET_EHOSTDOWN EHOSTDOWN
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EHOSTUNREACH WSAEHOSTUNREACH
-#elif defined(EHOSTUNREACH)
-#define PHP_SOCKET_EHOSTUNREACH EHOSTUNREACH
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_ENOTEMPTY WSAENOTEMPTY
-#elif defined(ENOTEMPTY)
-#define PHP_SOCKET_ENOTEMPTY ENOTEMPTY
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EUSERS WSAEUSERS
-#elif defined(EUSERS)
-#define PHP_SOCKET_EUSERS EUSERS
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EDQUOT WSAEDQUOT
-#elif defined(EDQUOT)
-#define PHP_SOCKET_EDQUOT EDQUOT
-#endif
-
-#ifdef WIN32
-#define PHP_SOCKET_EREMOTE WSAEREMOTE
-#elif defined(EREMOTE)
-#define PHP_SOCKET_EREMOTE EREMOTE
-#endif
-
-#endif

Modified: trunk/MgDev/Oem/php/include/ext/sodium/php_libsodium.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/sodium/php_libsodium.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/sodium/php_libsodium.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -26,14 +26,6 @@
 # include "TSRM.h"
 #endif
 
-#define SODIUM_LIBRARY_VERSION() (char *) (void *) sodium_version_string()
-
-#define SODIUM_CRYPTO_BOX_KEYPAIRBYTES() crypto_box_SECRETKEYBYTES + crypto_box_PUBLICKEYBYTES
-
-#define SODIUM_CRYPTO_KX_KEYPAIRBYTES() crypto_kx_SECRETKEYBYTES + crypto_kx_PUBLICKEYBYTES
-
-#define SODIUM_CRYPTO_SIGN_KEYPAIRBYTES() crypto_sign_SECRETKEYBYTES + crypto_sign_PUBLICKEYBYTES
-
 PHP_MINIT_FUNCTION(sodium);
 PHP_MINIT_FUNCTION(sodium_password_hash);
 PHP_MSHUTDOWN_FUNCTION(sodium);
@@ -41,4 +33,108 @@
 PHP_RSHUTDOWN_FUNCTION(sodium);
 PHP_MINFO_FUNCTION(sodium);
 
+PHP_FUNCTION(sodium_add);
+PHP_FUNCTION(sodium_base642bin);
+PHP_FUNCTION(sodium_bin2base64);
+PHP_FUNCTION(sodium_bin2hex);
+PHP_FUNCTION(sodium_compare);
+PHP_FUNCTION(sodium_crypto_aead_aes256gcm_decrypt);
+PHP_FUNCTION(sodium_crypto_aead_aes256gcm_encrypt);
+PHP_FUNCTION(sodium_crypto_aead_aes256gcm_is_available);
+PHP_FUNCTION(sodium_crypto_aead_aes256gcm_keygen);
+PHP_FUNCTION(sodium_crypto_aead_chacha20poly1305_decrypt);
+PHP_FUNCTION(sodium_crypto_aead_chacha20poly1305_encrypt);
+PHP_FUNCTION(sodium_crypto_aead_chacha20poly1305_ietf_decrypt);
+PHP_FUNCTION(sodium_crypto_aead_chacha20poly1305_ietf_encrypt);
+PHP_FUNCTION(sodium_crypto_aead_chacha20poly1305_ietf_keygen);
+PHP_FUNCTION(sodium_crypto_aead_chacha20poly1305_keygen);
+PHP_FUNCTION(sodium_crypto_aead_xchacha20poly1305_ietf_decrypt);
+PHP_FUNCTION(sodium_crypto_aead_xchacha20poly1305_ietf_encrypt);
+PHP_FUNCTION(sodium_crypto_aead_xchacha20poly1305_ietf_keygen);
+PHP_FUNCTION(sodium_crypto_auth);
+PHP_FUNCTION(sodium_crypto_auth_keygen);
+PHP_FUNCTION(sodium_crypto_auth_verify);
+PHP_FUNCTION(sodium_crypto_box);
+PHP_FUNCTION(sodium_crypto_box_keypair);
+PHP_FUNCTION(sodium_crypto_box_keypair_from_secretkey_and_publickey);
+PHP_FUNCTION(sodium_crypto_box_open);
+PHP_FUNCTION(sodium_crypto_box_publickey);
+PHP_FUNCTION(sodium_crypto_box_publickey_from_secretkey);
+PHP_FUNCTION(sodium_crypto_box_seal);
+PHP_FUNCTION(sodium_crypto_box_seal_open);
+PHP_FUNCTION(sodium_crypto_box_secretkey);
+PHP_FUNCTION(sodium_crypto_box_seed_keypair);
+PHP_FUNCTION(sodium_crypto_core_ristretto255_add);
+PHP_FUNCTION(sodium_crypto_core_ristretto255_from_hash);
+PHP_FUNCTION(sodium_crypto_core_ristretto255_is_valid_point);
+PHP_FUNCTION(sodium_crypto_core_ristretto255_random);
+PHP_FUNCTION(sodium_crypto_core_ristretto255_scalar_add);
+PHP_FUNCTION(sodium_crypto_core_ristretto255_scalar_complement);
+PHP_FUNCTION(sodium_crypto_core_ristretto255_scalar_invert);
+PHP_FUNCTION(sodium_crypto_core_ristretto255_scalar_mul);
+PHP_FUNCTION(sodium_crypto_core_ristretto255_scalar_negate);
+PHP_FUNCTION(sodium_crypto_core_ristretto255_scalar_random);
+PHP_FUNCTION(sodium_crypto_core_ristretto255_scalar_reduce);
+PHP_FUNCTION(sodium_crypto_core_ristretto255_scalar_sub);
+PHP_FUNCTION(sodium_crypto_core_ristretto255_sub);
+PHP_FUNCTION(sodium_crypto_generichash);
+PHP_FUNCTION(sodium_crypto_generichash_final);
+PHP_FUNCTION(sodium_crypto_generichash_init);
+PHP_FUNCTION(sodium_crypto_generichash_keygen);
+PHP_FUNCTION(sodium_crypto_generichash_update);
+PHP_FUNCTION(sodium_crypto_kdf_derive_from_key);
+PHP_FUNCTION(sodium_crypto_kdf_keygen);
+PHP_FUNCTION(sodium_crypto_kx_client_session_keys);
+PHP_FUNCTION(sodium_crypto_kx_keypair);
+PHP_FUNCTION(sodium_crypto_kx_publickey);
+PHP_FUNCTION(sodium_crypto_kx_secretkey);
+PHP_FUNCTION(sodium_crypto_kx_seed_keypair);
+PHP_FUNCTION(sodium_crypto_kx_server_session_keys);
+PHP_FUNCTION(sodium_crypto_pwhash);
+PHP_FUNCTION(sodium_crypto_pwhash_scryptsalsa208sha256);
+PHP_FUNCTION(sodium_crypto_pwhash_scryptsalsa208sha256_str);
+PHP_FUNCTION(sodium_crypto_pwhash_scryptsalsa208sha256_str_verify);
+PHP_FUNCTION(sodium_crypto_pwhash_str);
+PHP_FUNCTION(sodium_crypto_pwhash_str_needs_rehash);
+PHP_FUNCTION(sodium_crypto_pwhash_str_verify);
+PHP_FUNCTION(sodium_crypto_scalarmult);
+PHP_FUNCTION(sodium_crypto_scalarmult_base);
+PHP_FUNCTION(sodium_crypto_scalarmult_ristretto255);
+PHP_FUNCTION(sodium_crypto_scalarmult_ristretto255_base);
+PHP_FUNCTION(sodium_crypto_secretbox);
+PHP_FUNCTION(sodium_crypto_secretbox_keygen);
+PHP_FUNCTION(sodium_crypto_secretbox_open);
+PHP_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_keygen);
+PHP_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_init_push);
+PHP_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_push);
+PHP_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_init_pull);
+PHP_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_pull);
+PHP_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_rekey);
+PHP_FUNCTION(sodium_crypto_shorthash);
+PHP_FUNCTION(sodium_crypto_shorthash_keygen);
+PHP_FUNCTION(sodium_crypto_sign);
+PHP_FUNCTION(sodium_crypto_sign_detached);
+PHP_FUNCTION(sodium_crypto_sign_ed25519_pk_to_curve25519);
+PHP_FUNCTION(sodium_crypto_sign_ed25519_sk_to_curve25519);
+PHP_FUNCTION(sodium_crypto_sign_keypair);
+PHP_FUNCTION(sodium_crypto_sign_keypair_from_secretkey_and_publickey);
+PHP_FUNCTION(sodium_crypto_sign_open);
+PHP_FUNCTION(sodium_crypto_sign_publickey);
+PHP_FUNCTION(sodium_crypto_sign_publickey_from_secretkey);
+PHP_FUNCTION(sodium_crypto_sign_secretkey);
+PHP_FUNCTION(sodium_crypto_sign_seed_keypair);
+PHP_FUNCTION(sodium_crypto_sign_verify_detached);
+PHP_FUNCTION(sodium_crypto_stream);
+PHP_FUNCTION(sodium_crypto_stream_keygen);
+PHP_FUNCTION(sodium_crypto_stream_xor);
+PHP_FUNCTION(sodium_crypto_stream_xchacha20);
+PHP_FUNCTION(sodium_crypto_stream_xchacha20_keygen);
+PHP_FUNCTION(sodium_crypto_stream_xchacha20_xor);
+PHP_FUNCTION(sodium_hex2bin);
+PHP_FUNCTION(sodium_increment);
+PHP_FUNCTION(sodium_memcmp);
+PHP_FUNCTION(sodium_memzero);
+PHP_FUNCTION(sodium_pad);
+PHP_FUNCTION(sodium_unpad);
+
 #endif	/* PHP_LIBSODIUM_H */

Modified: trunk/MgDev/Oem/php/include/ext/spl/spl_array.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/spl/spl_array.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/spl/spl_array.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -21,18 +21,6 @@
 #include "php_spl.h"
 #include "spl_iterators.h"
 
-#define SPL_ARRAY_STD_PROP_LIST      0x00000001
-#define SPL_ARRAY_ARRAY_AS_PROPS     0x00000002
-#define SPL_ARRAY_CHILD_ARRAYS_ONLY  0x00000004
-#define SPL_ARRAY_IS_SELF            0x01000000
-#define SPL_ARRAY_USE_OTHER          0x02000000
-#define SPL_ARRAY_INT_MASK           0xFFFF0000
-#define SPL_ARRAY_CLONE_MASK         0x0100FFFF
-
-#define SPL_ARRAY_METHOD_NO_ARG				0
-#define SPL_ARRAY_METHOD_CALLBACK_ARG  		1
-#define SPL_ARRAY_METHOD_SORT_FLAGS_ARG 	2
-
 extern PHPAPI zend_class_entry *spl_ce_ArrayObject;
 extern PHPAPI zend_class_entry *spl_ce_ArrayIterator;
 extern PHPAPI zend_class_entry *spl_ce_RecursiveArrayIterator;

Modified: trunk/MgDev/Oem/php/include/ext/spl/spl_directory.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/spl/spl_directory.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/spl/spl_directory.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -30,13 +30,18 @@
 
 PHP_MINIT_FUNCTION(spl_directory);
 
-/* Internal objecte structure and helpers for Directory and File SPL objects */
+typedef enum {
+	SPL_FS_INFO, /* must be 0 */
+	SPL_FS_DIR,
+	SPL_FS_FILE
+} SPL_FS_OBJ_TYPE;
+
 typedef struct _spl_filesystem_object  spl_filesystem_object;
 
 typedef void (*spl_foreign_dtor_t)(spl_filesystem_object *object);
 typedef void (*spl_foreign_clone_t)(spl_filesystem_object *src, spl_filesystem_object *dst);
 
-PHPAPI zend_string *spl_filesystem_object_get_path(spl_filesystem_object *intern);
+PHPAPI char* spl_filesystem_object_get_path(spl_filesystem_object *intern, size_t *len);
 
 typedef struct _spl_other_handler {
 	spl_foreign_dtor_t     dtor;
@@ -43,11 +48,12 @@
 	spl_foreign_clone_t    clone;
 } spl_other_handler;
 
-typedef enum {
-	SPL_FS_INFO, /* must be 0 */
-	SPL_FS_DIR,
-	SPL_FS_FILE
-} SPL_FS_OBJ_TYPE;
+/* define an overloaded iterator structure */
+typedef struct {
+	zend_object_iterator  intern;
+	zval                  current;
+	void                 *object;
+} spl_filesystem_iterator;
 
 struct _spl_filesystem_object {
 	void               *oth;
@@ -90,6 +96,28 @@
 	zend_object        std;
 };
 
+static inline spl_filesystem_object *spl_filesystem_from_obj(zend_object *obj) /* {{{ */ {
+	return (spl_filesystem_object*)((char*)(obj) - XtOffsetOf(spl_filesystem_object, std));
+}
+/* }}} */
+
+#define Z_SPLFILESYSTEM_P(zv)  spl_filesystem_from_obj(Z_OBJ_P((zv)))
+
+static inline spl_filesystem_iterator* spl_filesystem_object_to_iterator(spl_filesystem_object *obj)
+{
+	spl_filesystem_iterator    *it;
+
+	it = ecalloc(1, sizeof(spl_filesystem_iterator));
+	it->object = (void *)obj;
+	zend_iterator_init(&it->intern);
+	return it;
+}
+
+static inline spl_filesystem_object* spl_filesystem_iterator_to_object(spl_filesystem_iterator *it)
+{
+	return (spl_filesystem_object*)it->object;
+}
+
 #define SPL_FILE_OBJECT_DROP_NEW_LINE      0x00000001 /* drop new lines */
 #define SPL_FILE_OBJECT_READ_AHEAD         0x00000002 /* read on rewind/next */
 #define SPL_FILE_OBJECT_SKIP_EMPTY         0x00000004 /* skip empty lines */
@@ -105,7 +133,6 @@
 #define SPL_FILE_DIR_KEY_AS_PATHNAME       0x00000000 /* make RecursiveDirectoryTree::key() return getPathname() */
 #define SPL_FILE_DIR_KEY_AS_FILENAME       0x00000100 /* make RecursiveDirectoryTree::key() return getFilename() */
 #define SPL_FILE_DIR_KEY_MODE_MASK         0x00000F00 /* mask RecursiveDirectoryTree::key() */
-#define SPL_FILE_NEW_CURRENT_AND_KEY       SPL_FILE_DIR_KEY_AS_FILENAME|SPL_FILE_DIR_CURRENT_AS_FILEINFO
 #define SPL_FILE_DIR_KEY(intern,mode)      ((intern->flags&SPL_FILE_DIR_KEY_MODE_MASK)==mode)
 
 #define SPL_FILE_DIR_SKIPDOTS              0x00001000 /* Tells whether it should skip dots or not */

Modified: trunk/MgDev/Oem/php/include/ext/spl/spl_dllist.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/spl/spl_dllist.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/spl/spl_dllist.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -20,13 +20,6 @@
 #include "php.h"
 #include "php_spl.h"
 
-#define SPL_DLLIST_IT_KEEP   0x00000000
-#define SPL_DLLIST_IT_FIFO   0x00000000 /* FIFO flag makes the iterator traverse the structure as a FirstInFirstOut */
-#define SPL_DLLIST_IT_DELETE 0x00000001 /* Delete flag makes the iterator delete the current element on next */
-#define SPL_DLLIST_IT_LIFO   0x00000002 /* LIFO flag makes the iterator traverse the structure as a LastInFirstOut */
-#define SPL_DLLIST_IT_MASK   0x00000003 /* Mask to isolate flags related to iterators */
-#define SPL_DLLIST_IT_FIX    0x00000004 /* Backward/Forward bit is fixed */
-
 extern PHPAPI zend_class_entry *spl_ce_SplDoublyLinkedList;
 extern PHPAPI zend_class_entry *spl_ce_SplQueue;
 extern PHPAPI zend_class_entry *spl_ce_SplStack;

Modified: trunk/MgDev/Oem/php/include/ext/spl/spl_functions.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/spl/spl_functions.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/spl/spl_functions.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -21,6 +21,9 @@
 
 typedef zend_object* (*create_object_func_t)(zend_class_entry *class_type);
 
+#define REGISTER_SPL_CLASS_CONST_LONG(class_name, const_name, value) \
+	zend_declare_class_constant_long(spl_ce_ ## class_name, const_name, sizeof(const_name)-1, (zend_long)value);
+
 /* sub: whether to allow subclasses/interfaces
    allow = 0: allow all classes and interfaces
    allow > 0: allow all that match and mask ce_flags
@@ -29,9 +32,9 @@
 void spl_add_class_name(zval * list, zend_class_entry * pce, int allow, int ce_flags);
 void spl_add_interfaces(zval * list, zend_class_entry * pce, int allow, int ce_flags);
 void spl_add_traits(zval * list, zend_class_entry * pce, int allow, int ce_flags);
-void spl_add_classes(zend_class_entry *pce, zval *list, bool sub, int allow, int ce_flags);
+int spl_add_classes(zend_class_entry *pce, zval *list, int sub, int allow, int ce_flags);
 
 /* caller must efree(return) */
-zend_string *spl_gen_private_prop_name(zend_class_entry *ce, char *prop_name, size_t prop_len);
+zend_string *spl_gen_private_prop_name(zend_class_entry *ce, char *prop_name, int prop_len);
 
 #endif /* PHP_FUNCTIONS_H */

Modified: trunk/MgDev/Oem/php/include/ext/spl/spl_heap.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/spl/spl_heap.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/spl/spl_heap.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -20,11 +20,6 @@
 #include "php.h"
 #include "php_spl.h"
 
-#define SPL_PQUEUE_EXTR_MASK     0x00000003
-#define SPL_PQUEUE_EXTR_BOTH     0x00000003
-#define SPL_PQUEUE_EXTR_DATA     0x00000001
-#define SPL_PQUEUE_EXTR_PRIORITY 0x00000002
-
 extern PHPAPI zend_class_entry *spl_ce_SplHeap;
 extern PHPAPI zend_class_entry *spl_ce_SplMinHeap;
 extern PHPAPI zend_class_entry *spl_ce_SplMaxHeap;

Modified: trunk/MgDev/Oem/php/include/ext/spl/spl_iterators.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/spl/spl_iterators.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/spl/spl_iterators.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -19,6 +19,7 @@
 
 #include "php.h"
 #include "php_spl.h"
+#include "ext/pcre/php_pcre.h"
 
 extern PHPAPI zend_class_entry *spl_ce_AppendIterator;
 extern PHPAPI zend_class_entry *spl_ce_CachingIterator;
@@ -43,21 +44,11 @@
 
 PHP_MINIT_FUNCTION(spl_iterators);
 
+PHP_FUNCTION(iterator_apply);
+PHP_FUNCTION(iterator_count);
+PHP_FUNCTION(iterator_to_array);
 
 typedef enum {
-	RIT_LEAVES_ONLY = 0,
-	RIT_SELF_FIRST  = 1,
-	RIT_CHILD_FIRST = 2
-} RecursiveIteratorMode;
-
-#define RIT_CATCH_GET_CHILD CIT_CATCH_GET_CHILD
-
-typedef enum {
-	RTIT_BYPASS_CURRENT = 4,
-	RTIT_BYPASS_KEY	    = 8
-} RecursiveTreeIteratorFlags;
-
-typedef enum {
 	DIT_Default = 0,
 	DIT_FilterIterator = DIT_Default,
 	DIT_RecursiveFilterIterator = DIT_Default,
@@ -112,6 +103,59 @@
 	REGIT_MODE_MAX
 } regex_mode;
 
+typedef struct _spl_cbfilter_it_intern {
+	zend_fcall_info       fci;
+	zend_fcall_info_cache fcc;
+	zend_object           *object;
+} _spl_cbfilter_it_intern;
+
+typedef struct _spl_dual_it_object {
+	struct {
+		zval                 zobject;
+		zend_class_entry     *ce;
+		zend_object          *object;
+		zend_object_iterator *iterator;
+	} inner;
+	struct {
+		zval                 data;
+		zval                 key;
+		zend_long            pos;
+	} current;
+	dual_it_type             dit_type;
+	union {
+		struct {
+			zend_long             offset;
+			zend_long             count;
+		} limit;
+		struct {
+			zend_long             flags; /* CIT_* */
+			zend_string          *zstr;
+			zval             zchildren;
+			zval             zcache;
+		} caching;
+		struct {
+			zval                  zarrayit;
+			zend_object_iterator *iterator;
+		} append;
+		struct {
+			zend_long        flags;
+			zend_long        preg_flags;
+			pcre_cache_entry *pce;
+			zend_string      *regex;
+			regex_mode       mode;
+			int              use_flags;
+		} regex;
+		_spl_cbfilter_it_intern *cbfilter;
+	} u;
+	zend_object              std;
+} spl_dual_it_object;
+
+static inline spl_dual_it_object *spl_dual_it_from_obj(zend_object *obj) /* {{{ */ {
+	return (spl_dual_it_object*)((char*)(obj) - XtOffsetOf(spl_dual_it_object, std));
+} /* }}} */
+
+#define Z_SPLDUAL_IT_P(zv)  spl_dual_it_from_obj(Z_OBJ_P((zv)))
+
 typedef int (*spl_iterator_apply_func_t)(zend_object_iterator *iter, void *puser);
 
 PHPAPI int spl_iterator_apply(zval *obj, spl_iterator_apply_func_t apply_func, void *puser);

Modified: trunk/MgDev/Oem/php/include/ext/spl/spl_observer.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/spl/spl_observer.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/spl/spl_observer.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -20,13 +20,6 @@
 #include "php.h"
 #include "php_spl.h"
 
-typedef enum {
-	MIT_NEED_ANY     = 0,
-	MIT_NEED_ALL     = 1,
-	MIT_KEYS_NUMERIC = 0,
-	MIT_KEYS_ASSOC   = 2
-} MultipleIteratorFlags;
-
 extern PHPAPI zend_class_entry *spl_ce_SplObserver;
 extern PHPAPI zend_class_entry *spl_ce_SplSubject;
 extern PHPAPI zend_class_entry *spl_ce_SplObjectStorage;

Modified: trunk/MgDev/Oem/php/include/ext/standard/basic_functions.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/basic_functions.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/basic_functions.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -27,9 +27,6 @@
 
 #include "url_scanner_ex.h"
 
-/* for MT_N */
-#include "ext/random/php_random.h"
-
 #if defined(_WIN32) && !defined(__clang__)
 #include <intrin.h>
 #endif
@@ -54,6 +51,8 @@
 PHPAPI int _php_error_log_ex(int opt_err, const char *message, size_t message_len, const char *opt, const char *headers);
 PHPAPI int php_prefix_varname(zval *result, zend_string *prefix, const char *var_name, size_t var_name_len, bool add_underscore);
 
+#define MT_N (624)
+
 /* Deprecated type aliases -- use the standard types instead */
 typedef uint32_t php_uint32;
 typedef int32_t php_int32;
@@ -83,6 +82,14 @@
 	zend_string *CurrentStatFile, *CurrentLStatFile;
 	php_stream_statbuf ssb, lssb;
 
+	/* mt_rand.c */
+	uint32_t state[MT_N+1];  /* state vector + 1 extra to not violate ANSI C */
+	uint32_t *next;       /* next random value is computed from here */
+	int      left;        /* can *next++ this many times before reloading */
+
+	bool mt_rand_is_seeded; /* Whether mt_rand() has been seeded */
+	zend_long mt_rand_mode;
+
 	/* syslog.c */
 	char *syslog_device;
 

Modified: trunk/MgDev/Oem/php/include/ext/standard/basic_functions_arginfo.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/basic_functions_arginfo.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/basic_functions_arginfo.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: e46c8ef36dc0f29d877ae6e4096135414d0a4412 */
+ * Stub hash: eb6a3a2e3cf8f62e768d5d4968606438819e6cf0 */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_time_limit, 0, 1, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0)
@@ -74,7 +74,7 @@
 	ZEND_ARG_VARIADIC_TYPE_INFO(0, values, IS_MIXED, 0)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_krsort, 0, 1, IS_TRUE, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_krsort, 0, 1, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO(1, array, IS_ARRAY, 0)
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "SORT_REGULAR")
 ZEND_END_ARG_INFO()
@@ -100,12 +100,9 @@
 
 #define arginfo_sort arginfo_krsort
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_rsort, 0, 1, _IS_BOOL, 0)
-	ZEND_ARG_TYPE_INFO(1, array, IS_ARRAY, 0)
-	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "SORT_REGULAR")
-ZEND_END_ARG_INFO()
+#define arginfo_rsort arginfo_krsort
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_usort, 0, 2, IS_TRUE, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_usort, 0, 2, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO(1, array, IS_ARRAY, 0)
 	ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
 ZEND_END_ARG_INFO()
@@ -141,7 +138,7 @@
 
 #define arginfo_max arginfo_min
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_walk, 0, 2, IS_TRUE, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_walk, 0, 2, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_MASK(1, array, MAY_BE_ARRAY|MAY_BE_OBJECT, NULL)
 	ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
 	ZEND_ARG_TYPE_INFO(0, arg, IS_MIXED, 0)
@@ -189,9 +186,7 @@
 	ZEND_ARG_TYPE_MASK(0, step, MAY_BE_LONG|MAY_BE_DOUBLE, "1")
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_shuffle, 0, 1, IS_TRUE, 0)
-	ZEND_ARG_TYPE_INFO(1, array, IS_ARRAY, 0)
-ZEND_END_ARG_INFO()
+#define arginfo_shuffle arginfo_natsort
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_pop, 0, 1, IS_MIXED, 0)
 	ZEND_ARG_TYPE_INFO(1, array, IS_ARRAY, 0)
@@ -418,7 +413,7 @@
 	ZEND_ARG_TYPE_INFO(0, microseconds, IS_LONG, 0)
 ZEND_END_ARG_INFO()
 
-#if defined(HAVE_NANOSLEEP)
+#if HAVE_NANOSLEEP
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_time_nanosleep, 0, 2, MAY_BE_ARRAY|MAY_BE_BOOL)
 	ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0)
 	ZEND_ARG_TYPE_INFO(0, nanoseconds, IS_LONG, 0)
@@ -425,7 +420,7 @@
 ZEND_END_ARG_INFO()
 #endif
 
-#if defined(HAVE_NANOSLEEP)
+#if HAVE_NANOSLEEP
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_time_sleep_until, 0, 1, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO(0, timestamp, IS_DOUBLE, 0)
 ZEND_END_ARG_INFO()
@@ -464,7 +459,7 @@
 
 #define arginfo_forward_static_call_array arginfo_call_user_func_array
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_register_shutdown_function, 0, 1, IS_VOID, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_register_shutdown_function, 0, 1, _IS_BOOL, 1)
 	ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
 	ZEND_ARG_VARIADIC_TYPE_INFO(0, args, IS_MIXED, 0)
 ZEND_END_ARG_INFO()
@@ -505,10 +500,6 @@
 	ZEND_ARG_TYPE_INFO(0, option, IS_STRING, 0)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ini_parse_quantity, 0, 1, IS_LONG, 0)
-	ZEND_ARG_TYPE_INFO(0, shorthand, IS_STRING, 0)
-ZEND_END_ARG_INFO()
-
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_set_include_path, 0, 1, MAY_BE_STRING|MAY_BE_FALSE)
 	ZEND_ARG_TYPE_INFO(0, include_path, IS_STRING, 0)
 ZEND_END_ARG_INFO()
@@ -528,7 +519,7 @@
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, enable, _IS_BOOL, 1, "null")
 ZEND_END_ARG_INFO()
 
-#if defined(HAVE_GETSERVBYNAME)
+#if HAVE_GETSERVBYNAME
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_getservbyname, 0, 2, MAY_BE_LONG|MAY_BE_FALSE)
 	ZEND_ARG_TYPE_INFO(0, service, IS_STRING, 0)
 	ZEND_ARG_TYPE_INFO(0, protocol, IS_STRING, 0)
@@ -535,7 +526,7 @@
 ZEND_END_ARG_INFO()
 #endif
 
-#if defined(HAVE_GETSERVBYPORT)
+#if HAVE_GETSERVBYPORT
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_getservbyport, 0, 2, MAY_BE_STRING|MAY_BE_FALSE)
 	ZEND_ARG_TYPE_INFO(0, port, IS_LONG, 0)
 	ZEND_ARG_TYPE_INFO(0, protocol, IS_STRING, 0)
@@ -542,13 +533,13 @@
 ZEND_END_ARG_INFO()
 #endif
 
-#if defined(HAVE_GETPROTOBYNAME)
+#if HAVE_GETPROTOBYNAME
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_getprotobyname, 0, 1, MAY_BE_LONG|MAY_BE_FALSE)
 	ZEND_ARG_TYPE_INFO(0, protocol, IS_STRING, 0)
 ZEND_END_ARG_INFO()
 #endif
 
-#if defined(HAVE_GETPROTOBYNUMBER)
+#if HAVE_GETPROTOBYNUMBER
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_getprotobynumber, 0, 1, MAY_BE_STRING|MAY_BE_FALSE)
 	ZEND_ARG_TYPE_INFO(0, protocol, IS_LONG, 0)
 ZEND_END_ARG_INFO()
@@ -608,7 +599,7 @@
 	ZEND_ARG_TYPE_INFO(0, salt, IS_STRING, 0)
 ZEND_END_ARG_INFO()
 
-#if defined(HAVE_STRPTIME)
+#if HAVE_STRPTIME
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_strptime, 0, 2, MAY_BE_ARRAY|MAY_BE_FALSE)
 	ZEND_ARG_TYPE_INFO(0, timestamp, IS_STRING, 0)
 	ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0)
@@ -632,7 +623,7 @@
 	ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0)
 ZEND_END_ARG_INFO()
 
-#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC))
+#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_dns_check_record, 0, 1, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0)
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_STRING, 0, "\"MX\"")
@@ -639,11 +630,11 @@
 ZEND_END_ARG_INFO()
 #endif
 
-#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC))
+#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
 #define arginfo_checkdnsrr arginfo_dns_check_record
 #endif
 
-#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC))
+#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_dns_get_record, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE)
 	ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0)
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "DNS_ANY")
@@ -653,7 +644,7 @@
 ZEND_END_ARG_INFO()
 #endif
 
-#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC))
+#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_dns_get_mx, 0, 2, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0)
 	ZEND_ARG_INFO(1, hosts)
@@ -661,16 +652,16 @@
 ZEND_END_ARG_INFO()
 #endif
 
-#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC))
+#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
 #define arginfo_getmxrr arginfo_dns_get_mx
 #endif
 
-#if (defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__))
+#if defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__)
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_net_get_interfaces, 0, 0, MAY_BE_ARRAY|MAY_BE_FALSE)
 ZEND_END_ARG_INFO()
 #endif
 
-#if defined(HAVE_FTOK)
+#if HAVE_FTOK
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ftok, 0, 2, IS_LONG, 0)
 	ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
 	ZEND_ARG_TYPE_INFO(0, project_id, IS_STRING, 0)
@@ -681,6 +672,9 @@
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, as_number, _IS_BOOL, 0, "false")
 ZEND_END_ARG_INFO()
 
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_lcg_value, 0, 0, IS_DOUBLE, 0)
+ZEND_END_ARG_INFO()
+
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_md5, 0, 1, IS_STRING, 0)
 	ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, binary, _IS_BOOL, 0, "false")
@@ -706,7 +700,7 @@
 #define arginfo_sha1_file arginfo_md5_file
 
 #if defined(HAVE_SYSLOG_H)
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openlog, 0, 3, IS_TRUE, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openlog, 0, 3, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO(0, prefix, IS_STRING, 0)
 	ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
 	ZEND_ARG_TYPE_INFO(0, facility, IS_LONG, 0)
@@ -714,12 +708,12 @@
 #endif
 
 #if defined(HAVE_SYSLOG_H)
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_closelog, 0, 0, IS_TRUE, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_closelog, 0, 0, _IS_BOOL, 0)
 ZEND_END_ARG_INFO()
 #endif
 
 #if defined(HAVE_SYSLOG_H)
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_syslog, 0, 2, IS_TRUE, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_syslog, 0, 2, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO(0, priority, IS_LONG, 0)
 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
 ZEND_END_ARG_INFO()
@@ -826,7 +820,7 @@
 
 #define arginfo_strcspn arginfo_strspn
 
-#if defined(HAVE_NL_LANGINFO)
+#if HAVE_NL_LANGINFO
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_nl_langinfo, 0, 1, MAY_BE_STRING|MAY_BE_FALSE)
 	ZEND_ARG_TYPE_INFO(0, item, IS_LONG, 0)
 ZEND_END_ARG_INFO()
@@ -1119,7 +1113,7 @@
 	ZEND_ARG_TYPE_INFO(0, directory, IS_STRING, 0)
 ZEND_END_ARG_INFO()
 
-#if (defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC))
+#if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chroot, 0, 1, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO(0, directory, IS_STRING, 0)
 ZEND_END_ARG_INFO()
@@ -1157,7 +1151,7 @@
 	ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, result_code, "null")
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_passthru, 0, 1, IS_FALSE, 1)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_passthru, 0, 1, _IS_BOOL, 1)
 	ZEND_ARG_TYPE_INFO(0, command, IS_STRING, 0)
 	ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, result_code, "null")
 ZEND_END_ARG_INFO()
@@ -1421,7 +1415,7 @@
 	ZEND_ARG_TYPE_MASK(0, group, MAY_BE_STRING|MAY_BE_LONG, NULL)
 ZEND_END_ARG_INFO()
 
-#if defined(HAVE_LCHOWN)
+#if HAVE_LCHOWN
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_lchown, 0, 2, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
 	ZEND_ARG_TYPE_MASK(0, user, MAY_BE_STRING|MAY_BE_LONG, NULL)
@@ -1428,7 +1422,7 @@
 ZEND_END_ARG_INFO()
 #endif
 
-#if defined(HAVE_LCHOWN)
+#if HAVE_LCHOWN
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_lchgrp, 0, 2, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
 	ZEND_ARG_TYPE_MASK(0, group, MAY_BE_STRING|MAY_BE_LONG, NULL)
@@ -1440,7 +1434,7 @@
 	ZEND_ARG_TYPE_INFO(0, permissions, IS_LONG, 0)
 ZEND_END_ARG_INFO()
 
-#if defined(HAVE_UTIME)
+#if HAVE_UTIME
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_touch, 0, 1, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mtime, IS_LONG, 1, "null")
@@ -1533,7 +1527,7 @@
 	ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, image_info, "null")
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_phpinfo, 0, 0, IS_TRUE, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_phpinfo, 0, 0, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "INFO_ALL")
 ZEND_END_ARG_INFO()
 
@@ -1541,7 +1535,7 @@
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, extension, IS_STRING, 1, "null")
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_phpcredits, 0, 0, IS_TRUE, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_phpcredits, 0, 0, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "CREDITS_ALL")
 ZEND_END_ARG_INFO()
 
@@ -1573,19 +1567,19 @@
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, deletion_cost, IS_LONG, 0, "1")
 ZEND_END_ARG_INFO()
 
-#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32))
+#if defined(HAVE_SYMLINK) || defined(PHP_WIN32)
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_readlink, 0, 1, MAY_BE_STRING|MAY_BE_FALSE)
 	ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
 ZEND_END_ARG_INFO()
 #endif
 
-#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32))
+#if defined(HAVE_SYMLINK) || defined(PHP_WIN32)
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_linkinfo, 0, 1, MAY_BE_LONG|MAY_BE_FALSE)
 	ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
 ZEND_END_ARG_INFO()
 #endif
 
-#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32))
+#if defined(HAVE_SYMLINK) || defined(PHP_WIN32)
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_symlink, 0, 2, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO(0, target, IS_STRING, 0)
 	ZEND_ARG_TYPE_INFO(0, link, IS_STRING, 0)
@@ -1592,7 +1586,7 @@
 ZEND_END_ARG_INFO()
 #endif
 
-#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32))
+#if defined(HAVE_SYMLINK) || defined(PHP_WIN32)
 #define arginfo_link arginfo_symlink
 #endif
 
@@ -1655,8 +1649,7 @@
 
 #define arginfo_log1p arginfo_sin
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pi, 0, 0, IS_DOUBLE, 0)
-ZEND_END_ARG_INFO()
+#define arginfo_pi arginfo_lcg_value
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_is_finite, 0, 1, _IS_BOOL, 0)
 	ZEND_ARG_TYPE_INFO(0, num, IS_DOUBLE, 0)
@@ -1819,6 +1812,33 @@
 
 #define arginfo_quoted_printable_encode arginfo_base64_encode
 
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mt_srand, 0, 0, IS_VOID, 0)
+	ZEND_ARG_TYPE_INFO(0, seed, IS_LONG, 0)
+	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "MT_RAND_MT19937")
+ZEND_END_ARG_INFO()
+
+#define arginfo_srand arginfo_mt_srand
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_rand, 0, 0, IS_LONG, 0)
+	ZEND_ARG_TYPE_INFO(0, min, IS_LONG, 0)
+	ZEND_ARG_TYPE_INFO(0, max, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_mt_rand arginfo_rand
+
+#define arginfo_mt_getrandmax arginfo_ob_get_level
+
+#define arginfo_getrandmax arginfo_ob_get_level
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_random_bytes, 0, 1, IS_STRING, 0)
+	ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_random_int, 0, 2, IS_LONG, 0)
+	ZEND_ARG_TYPE_INFO(0, min, IS_LONG, 0)
+	ZEND_ARG_TYPE_INFO(0, max, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
 #define arginfo_soundex arginfo_base64_encode
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_select, 0, 4, MAY_BE_LONG|MAY_BE_FALSE)
@@ -1931,7 +1951,7 @@
 ZEND_END_ARG_INFO()
 #endif
 
-#if defined(HAVE_SOCKETPAIR)
+#if HAVE_SOCKETPAIR
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_socket_pair, 0, 3, MAY_BE_ARRAY|MAY_BE_FALSE)
 	ZEND_ARG_TYPE_INFO(0, domain, IS_LONG, 0)
 	ZEND_ARG_TYPE_INFO(0, type, IS_LONG, 0)
@@ -2001,7 +2021,7 @@
 
 #define arginfo_stream_set_chunk_size arginfo_stream_set_write_buffer
 
-#if (defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32))
+#if HAVE_SYS_TIME_H || defined(PHP_WIN32)
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_set_timeout, 0, 2, _IS_BOOL, 0)
 	ZEND_ARG_INFO(0, stream)
 	ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0)
@@ -2009,7 +2029,7 @@
 ZEND_END_ARG_INFO()
 #endif
 
-#if (defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32))
+#if HAVE_SYS_TIME_H || defined(PHP_WIN32)
 #define arginfo_socket_set_timeout arginfo_stream_set_timeout
 #endif
 
@@ -2155,8 +2175,6 @@
 
 #define arginfo_memory_get_peak_usage arginfo_memory_get_usage
 
-#define arginfo_memory_reset_peak_usage arginfo_flush
-
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_version_compare, 0, 2, MAY_BE_LONG|MAY_BE_BOOL)
 	ZEND_ARG_TYPE_INFO(0, version1, IS_STRING, 0)
 	ZEND_ARG_TYPE_INFO(0, version2, IS_STRING, 0)
@@ -2314,10 +2332,10 @@
 ZEND_FUNCTION(flush);
 ZEND_FUNCTION(sleep);
 ZEND_FUNCTION(usleep);
-#if defined(HAVE_NANOSLEEP)
+#if HAVE_NANOSLEEP
 ZEND_FUNCTION(time_nanosleep);
 #endif
-#if defined(HAVE_NANOSLEEP)
+#if HAVE_NANOSLEEP
 ZEND_FUNCTION(time_sleep_until);
 #endif
 ZEND_FUNCTION(get_current_user);
@@ -2337,7 +2355,6 @@
 ZEND_FUNCTION(ini_get_all);
 ZEND_FUNCTION(ini_set);
 ZEND_FUNCTION(ini_restore);
-ZEND_FUNCTION(ini_parse_quantity);
 ZEND_FUNCTION(set_include_path);
 ZEND_FUNCTION(get_include_path);
 ZEND_FUNCTION(print_r);
@@ -2344,16 +2361,16 @@
 ZEND_FUNCTION(connection_aborted);
 ZEND_FUNCTION(connection_status);
 ZEND_FUNCTION(ignore_user_abort);
-#if defined(HAVE_GETSERVBYNAME)
+#if HAVE_GETSERVBYNAME
 ZEND_FUNCTION(getservbyname);
 #endif
-#if defined(HAVE_GETSERVBYPORT)
+#if HAVE_GETSERVBYPORT
 ZEND_FUNCTION(getservbyport);
 #endif
-#if defined(HAVE_GETPROTOBYNAME)
+#if HAVE_GETPROTOBYNAME
 ZEND_FUNCTION(getprotobyname);
 #endif
-#if defined(HAVE_GETPROTOBYNUMBER)
+#if HAVE_GETPROTOBYNUMBER
 ZEND_FUNCTION(getprotobynumber);
 #endif
 ZEND_FUNCTION(register_tick_function);
@@ -2371,7 +2388,7 @@
 ZEND_FUNCTION(get_browser);
 ZEND_FUNCTION(crc32);
 ZEND_FUNCTION(crypt);
-#if defined(HAVE_STRPTIME)
+#if HAVE_STRPTIME
 ZEND_FUNCTION(strptime);
 #endif
 #if defined(HAVE_GETHOSTNAME)
@@ -2380,22 +2397,23 @@
 ZEND_FUNCTION(gethostbyaddr);
 ZEND_FUNCTION(gethostbyname);
 ZEND_FUNCTION(gethostbynamel);
-#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC))
+#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
 ZEND_FUNCTION(dns_check_record);
 #endif
-#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC))
+#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
 ZEND_FUNCTION(dns_get_record);
 #endif
-#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC))
+#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
 ZEND_FUNCTION(dns_get_mx);
 #endif
-#if (defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__))
+#if defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__)
 ZEND_FUNCTION(net_get_interfaces);
 #endif
-#if defined(HAVE_FTOK)
+#if HAVE_FTOK
 ZEND_FUNCTION(ftok);
 #endif
 ZEND_FUNCTION(hrtime);
+ZEND_FUNCTION(lcg_value);
 ZEND_FUNCTION(md5);
 ZEND_FUNCTION(md5_file);
 ZEND_FUNCTION(getmyuid);
@@ -2439,7 +2457,7 @@
 ZEND_FUNCTION(hex2bin);
 ZEND_FUNCTION(strspn);
 ZEND_FUNCTION(strcspn);
-#if defined(HAVE_NL_LANGINFO)
+#if HAVE_NL_LANGINFO
 ZEND_FUNCTION(nl_langinfo);
 #endif
 ZEND_FUNCTION(strcoll);
@@ -2509,7 +2527,7 @@
 ZEND_FUNCTION(dir);
 ZEND_FUNCTION(closedir);
 ZEND_FUNCTION(chdir);
-#if (defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC))
+#if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC
 ZEND_FUNCTION(chroot);
 #endif
 ZEND_FUNCTION(getcwd);
@@ -2588,14 +2606,14 @@
 ZEND_FUNCTION(lstat);
 ZEND_FUNCTION(chown);
 ZEND_FUNCTION(chgrp);
-#if defined(HAVE_LCHOWN)
+#if HAVE_LCHOWN
 ZEND_FUNCTION(lchown);
 #endif
-#if defined(HAVE_LCHOWN)
+#if HAVE_LCHOWN
 ZEND_FUNCTION(lchgrp);
 #endif
 ZEND_FUNCTION(chmod);
-#if defined(HAVE_UTIME)
+#if HAVE_UTIME
 ZEND_FUNCTION(touch);
 #endif
 ZEND_FUNCTION(clearstatcache);
@@ -2626,16 +2644,16 @@
 ZEND_FUNCTION(iptcembed);
 ZEND_FUNCTION(iptcparse);
 ZEND_FUNCTION(levenshtein);
-#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32))
+#if defined(HAVE_SYMLINK) || defined(PHP_WIN32)
 ZEND_FUNCTION(readlink);
 #endif
-#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32))
+#if defined(HAVE_SYMLINK) || defined(PHP_WIN32)
 ZEND_FUNCTION(linkinfo);
 #endif
-#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32))
+#if defined(HAVE_SYMLINK) || defined(PHP_WIN32)
 ZEND_FUNCTION(symlink);
 #endif
-#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32))
+#if defined(HAVE_SYMLINK) || defined(PHP_WIN32)
 ZEND_FUNCTION(link);
 #endif
 ZEND_FUNCTION(mail);
@@ -2711,6 +2729,12 @@
 #endif
 ZEND_FUNCTION(quoted_printable_decode);
 ZEND_FUNCTION(quoted_printable_encode);
+ZEND_FUNCTION(mt_srand);
+ZEND_FUNCTION(rand);
+ZEND_FUNCTION(mt_rand);
+ZEND_FUNCTION(mt_getrandmax);
+ZEND_FUNCTION(random_bytes);
+ZEND_FUNCTION(random_int);
 ZEND_FUNCTION(soundex);
 ZEND_FUNCTION(stream_select);
 ZEND_FUNCTION(stream_context_create);
@@ -2733,7 +2757,7 @@
 #if defined(HAVE_SHUTDOWN)
 ZEND_FUNCTION(stream_socket_shutdown);
 #endif
-#if defined(HAVE_SOCKETPAIR)
+#if HAVE_SOCKETPAIR
 ZEND_FUNCTION(stream_socket_pair);
 #endif
 ZEND_FUNCTION(stream_copy_to_stream);
@@ -2753,7 +2777,7 @@
 ZEND_FUNCTION(sapi_windows_vt100_support);
 #endif
 ZEND_FUNCTION(stream_set_chunk_size);
-#if (defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32))
+#if HAVE_SYS_TIME_H || defined(PHP_WIN32)
 ZEND_FUNCTION(stream_set_timeout);
 #endif
 ZEND_FUNCTION(gettype);
@@ -2800,7 +2824,6 @@
 ZEND_FUNCTION(unserialize);
 ZEND_FUNCTION(memory_get_usage);
 ZEND_FUNCTION(memory_get_peak_usage);
-ZEND_FUNCTION(memory_reset_peak_usage);
 ZEND_FUNCTION(version_compare);
 #if defined(PHP_WIN32)
 ZEND_FUNCTION(sapi_windows_cp_set);
@@ -2847,7 +2870,7 @@
 	ZEND_FE(array_push, arginfo_array_push)
 	ZEND_FE(krsort, arginfo_krsort)
 	ZEND_FE(ksort, arginfo_ksort)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(count, arginfo_count)
+	ZEND_FE(count, arginfo_count)
 	ZEND_FALIAS(sizeof, count, arginfo_sizeof)
 	ZEND_FE(natsort, arginfo_natsort)
 	ZEND_FE(natcasesort, arginfo_natcasesort)
@@ -2865,12 +2888,12 @@
 	ZEND_FE(current, arginfo_current)
 	ZEND_FALIAS(pos, current, arginfo_pos)
 	ZEND_FE(key, arginfo_key)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(min, arginfo_min)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(max, arginfo_max)
+	ZEND_FE(min, arginfo_min)
+	ZEND_FE(max, arginfo_max)
 	ZEND_FE(array_walk, arginfo_array_walk)
 	ZEND_FE(array_walk_recursive, arginfo_array_walk_recursive)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(in_array, arginfo_in_array)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_search, arginfo_array_search)
+	ZEND_FE(in_array, arginfo_in_array)
+	ZEND_FE(array_search, arginfo_array_search)
 	ZEND_FE(extract, arginfo_extract)
 	ZEND_FE(compact, arginfo_compact)
 	ZEND_FE(array_fill, arginfo_array_fill)
@@ -2882,21 +2905,21 @@
 	ZEND_FE(array_unshift, arginfo_array_unshift)
 	ZEND_FE(array_splice, arginfo_array_splice)
 	ZEND_FE(array_slice, arginfo_array_slice)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_merge, arginfo_array_merge)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_merge_recursive, arginfo_array_merge_recursive)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_replace, arginfo_array_replace)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_replace_recursive, arginfo_array_replace_recursive)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_keys, arginfo_array_keys)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_key_first, arginfo_array_key_first)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_key_last, arginfo_array_key_last)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_values, arginfo_array_values)
+	ZEND_FE(array_merge, arginfo_array_merge)
+	ZEND_FE(array_merge_recursive, arginfo_array_merge_recursive)
+	ZEND_FE(array_replace, arginfo_array_replace)
+	ZEND_FE(array_replace_recursive, arginfo_array_replace_recursive)
+	ZEND_FE(array_keys, arginfo_array_keys)
+	ZEND_FE(array_key_first, arginfo_array_key_first)
+	ZEND_FE(array_key_last, arginfo_array_key_last)
+	ZEND_FE(array_values, arginfo_array_values)
 	ZEND_FE(array_count_values, arginfo_array_count_values)
 	ZEND_FE(array_column, arginfo_array_column)
 	ZEND_FE(array_reverse, arginfo_array_reverse)
 	ZEND_FE(array_pad, arginfo_array_pad)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_flip, arginfo_array_flip)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_change_key_case, arginfo_array_change_key_case)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_unique, arginfo_array_unique)
+	ZEND_FE(array_flip, arginfo_array_flip)
+	ZEND_FE(array_change_key_case, arginfo_array_change_key_case)
+	ZEND_FE(array_unique, arginfo_array_unique)
 	ZEND_FE(array_intersect_key, arginfo_array_intersect_key)
 	ZEND_FE(array_intersect_ukey, arginfo_array_intersect_ukey)
 	ZEND_FE(array_intersect, arginfo_array_intersect)
@@ -2905,11 +2928,11 @@
 	ZEND_FE(array_uintersect_assoc, arginfo_array_uintersect_assoc)
 	ZEND_FE(array_intersect_uassoc, arginfo_array_intersect_uassoc)
 	ZEND_FE(array_uintersect_uassoc, arginfo_array_uintersect_uassoc)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_diff_key, arginfo_array_diff_key)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_diff_ukey, arginfo_array_diff_ukey)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_diff, arginfo_array_diff)
+	ZEND_FE(array_diff_key, arginfo_array_diff_key)
+	ZEND_FE(array_diff_ukey, arginfo_array_diff_ukey)
+	ZEND_FE(array_diff, arginfo_array_diff)
 	ZEND_FE(array_udiff, arginfo_array_udiff)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(array_diff_assoc, arginfo_array_diff_assoc)
+	ZEND_FE(array_diff_assoc, arginfo_array_diff_assoc)
 	ZEND_FE(array_diff_uassoc, arginfo_array_diff_uassoc)
 	ZEND_FE(array_udiff_assoc, arginfo_array_udiff_assoc)
 	ZEND_FE(array_udiff_uassoc, arginfo_array_udiff_uassoc)
@@ -2925,8 +2948,8 @@
 	ZEND_FE(array_chunk, arginfo_array_chunk)
 	ZEND_FE(array_combine, arginfo_array_combine)
 	ZEND_FE(array_is_list, arginfo_array_is_list)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(base64_encode, arginfo_base64_encode)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(base64_decode, arginfo_base64_decode)
+	ZEND_FE(base64_encode, arginfo_base64_encode)
+	ZEND_FE(base64_decode, arginfo_base64_decode)
 	ZEND_FE(constant, arginfo_constant)
 	ZEND_FE(ip2long, arginfo_ip2long)
 	ZEND_FE(long2ip, arginfo_long2ip)
@@ -2938,10 +2961,10 @@
 	ZEND_FE(flush, arginfo_flush)
 	ZEND_FE(sleep, arginfo_sleep)
 	ZEND_FE(usleep, arginfo_usleep)
-#if defined(HAVE_NANOSLEEP)
+#if HAVE_NANOSLEEP
 	ZEND_FE(time_nanosleep, arginfo_time_nanosleep)
 #endif
-#if defined(HAVE_NANOSLEEP)
+#if HAVE_NANOSLEEP
 	ZEND_FE(time_sleep_until, arginfo_time_sleep_until)
 #endif
 	ZEND_FE(get_current_user, arginfo_get_current_user)
@@ -2963,7 +2986,6 @@
 	ZEND_FE(ini_set, arginfo_ini_set)
 	ZEND_FALIAS(ini_alter, ini_set, arginfo_ini_alter)
 	ZEND_FE(ini_restore, arginfo_ini_restore)
-	ZEND_FE(ini_parse_quantity, arginfo_ini_parse_quantity)
 	ZEND_FE(set_include_path, arginfo_set_include_path)
 	ZEND_FE(get_include_path, arginfo_get_include_path)
 	ZEND_FE(print_r, arginfo_print_r)
@@ -2970,16 +2992,16 @@
 	ZEND_FE(connection_aborted, arginfo_connection_aborted)
 	ZEND_FE(connection_status, arginfo_connection_status)
 	ZEND_FE(ignore_user_abort, arginfo_ignore_user_abort)
-#if defined(HAVE_GETSERVBYNAME)
+#if HAVE_GETSERVBYNAME
 	ZEND_FE(getservbyname, arginfo_getservbyname)
 #endif
-#if defined(HAVE_GETSERVBYPORT)
+#if HAVE_GETSERVBYPORT
 	ZEND_FE(getservbyport, arginfo_getservbyport)
 #endif
-#if defined(HAVE_GETPROTOBYNAME)
+#if HAVE_GETPROTOBYNAME
 	ZEND_FE(getprotobyname, arginfo_getprotobyname)
 #endif
-#if defined(HAVE_GETPROTOBYNUMBER)
+#if HAVE_GETPROTOBYNUMBER
 	ZEND_FE(getprotobynumber, arginfo_getprotobynumber)
 #endif
 	ZEND_FE(register_tick_function, arginfo_register_tick_function)
@@ -2995,9 +3017,9 @@
 	ZEND_FE(sys_getloadavg, arginfo_sys_getloadavg)
 #endif
 	ZEND_FE(get_browser, arginfo_get_browser)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(crc32, arginfo_crc32)
+	ZEND_FE(crc32, arginfo_crc32)
 	ZEND_FE(crypt, arginfo_crypt)
-#if defined(HAVE_STRPTIME)
+#if HAVE_STRPTIME
 	ZEND_DEP_FE(strptime, arginfo_strptime)
 #endif
 #if defined(HAVE_GETHOSTNAME)
@@ -3006,28 +3028,29 @@
 	ZEND_FE(gethostbyaddr, arginfo_gethostbyaddr)
 	ZEND_FE(gethostbyname, arginfo_gethostbyname)
 	ZEND_FE(gethostbynamel, arginfo_gethostbynamel)
-#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC))
+#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
 	ZEND_FE(dns_check_record, arginfo_dns_check_record)
 #endif
-#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC))
+#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
 	ZEND_FALIAS(checkdnsrr, dns_check_record, arginfo_checkdnsrr)
 #endif
-#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC))
+#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
 	ZEND_FE(dns_get_record, arginfo_dns_get_record)
 #endif
-#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC))
+#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
 	ZEND_FE(dns_get_mx, arginfo_dns_get_mx)
 #endif
-#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC))
+#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
 	ZEND_FALIAS(getmxrr, dns_get_mx, arginfo_getmxrr)
 #endif
-#if (defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__))
+#if defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__)
 	ZEND_FE(net_get_interfaces, arginfo_net_get_interfaces)
 #endif
-#if defined(HAVE_FTOK)
+#if HAVE_FTOK
 	ZEND_FE(ftok, arginfo_ftok)
 #endif
 	ZEND_FE(hrtime, arginfo_hrtime)
+	ZEND_FE(lcg_value, arginfo_lcg_value)
 	ZEND_FE(md5, arginfo_md5)
 	ZEND_FE(md5_file, arginfo_md5_file)
 	ZEND_FE(getmyuid, arginfo_getmyuid)
@@ -3067,25 +3090,25 @@
 	ZEND_FE(get_html_translation_table, arginfo_get_html_translation_table)
 	ZEND_FE(assert, arginfo_assert)
 	ZEND_FE(assert_options, arginfo_assert_options)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(bin2hex, arginfo_bin2hex)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(hex2bin, arginfo_hex2bin)
+	ZEND_FE(bin2hex, arginfo_bin2hex)
+	ZEND_FE(hex2bin, arginfo_hex2bin)
 	ZEND_FE(strspn, arginfo_strspn)
 	ZEND_FE(strcspn, arginfo_strcspn)
-#if defined(HAVE_NL_LANGINFO)
+#if HAVE_NL_LANGINFO
 	ZEND_FE(nl_langinfo, arginfo_nl_langinfo)
 #endif
 	ZEND_FE(strcoll, arginfo_strcoll)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(trim, arginfo_trim)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(rtrim, arginfo_rtrim)
+	ZEND_FE(trim, arginfo_trim)
+	ZEND_FE(rtrim, arginfo_rtrim)
 	ZEND_FALIAS(chop, rtrim, arginfo_chop)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(ltrim, arginfo_ltrim)
+	ZEND_FE(ltrim, arginfo_ltrim)
 	ZEND_FE(wordwrap, arginfo_wordwrap)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(explode, arginfo_explode)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(implode, arginfo_implode)
+	ZEND_FE(explode, arginfo_explode)
+	ZEND_FE(implode, arginfo_implode)
 	ZEND_FALIAS(join, implode, arginfo_join)
 	ZEND_FE(strtok, arginfo_strtok)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(strtoupper, arginfo_strtoupper)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(strtolower, arginfo_strtolower)
+	ZEND_FE(strtoupper, arginfo_strtoupper)
+	ZEND_FE(strtolower, arginfo_strtolower)
 	ZEND_FE(basename, arginfo_basename)
 	ZEND_FE(dirname, arginfo_dirname)
 	ZEND_FE(pathinfo, arginfo_pathinfo)
@@ -3092,32 +3115,32 @@
 	ZEND_FE(stristr, arginfo_stristr)
 	ZEND_FE(strstr, arginfo_strstr)
 	ZEND_FALIAS(strchr, strstr, arginfo_strchr)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(strpos, arginfo_strpos)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(stripos, arginfo_stripos)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(strrpos, arginfo_strrpos)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(strripos, arginfo_strripos)
+	ZEND_FE(strpos, arginfo_strpos)
+	ZEND_FE(stripos, arginfo_stripos)
+	ZEND_FE(strrpos, arginfo_strrpos)
+	ZEND_FE(strripos, arginfo_strripos)
 	ZEND_FE(strrchr, arginfo_strrchr)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(str_contains, arginfo_str_contains)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(str_starts_with, arginfo_str_starts_with)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(str_ends_with, arginfo_str_ends_with)
+	ZEND_FE(str_contains, arginfo_str_contains)
+	ZEND_FE(str_starts_with, arginfo_str_starts_with)
+	ZEND_FE(str_ends_with, arginfo_str_ends_with)
 	ZEND_FE(chunk_split, arginfo_chunk_split)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(substr, arginfo_substr)
+	ZEND_FE(substr, arginfo_substr)
 	ZEND_FE(substr_replace, arginfo_substr_replace)
 	ZEND_FE(quotemeta, arginfo_quotemeta)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(ord, arginfo_ord)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(chr, arginfo_chr)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(ucfirst, arginfo_ucfirst)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(lcfirst, arginfo_lcfirst)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(ucwords, arginfo_ucwords)
+	ZEND_FE(ord, arginfo_ord)
+	ZEND_FE(chr, arginfo_chr)
+	ZEND_FE(ucfirst, arginfo_ucfirst)
+	ZEND_FE(lcfirst, arginfo_lcfirst)
+	ZEND_FE(ucwords, arginfo_ucwords)
 	ZEND_FE(strtr, arginfo_strtr)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(strrev, arginfo_strrev)
+	ZEND_FE(strrev, arginfo_strrev)
 	ZEND_FE(similar_text, arginfo_similar_text)
 	ZEND_FE(addcslashes, arginfo_addcslashes)
 	ZEND_FE(addslashes, arginfo_addslashes)
 	ZEND_FE(stripcslashes, arginfo_stripcslashes)
 	ZEND_FE(stripslashes, arginfo_stripslashes)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(str_replace, arginfo_str_replace)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(str_ireplace, arginfo_str_ireplace)
+	ZEND_FE(str_replace, arginfo_str_replace)
+	ZEND_FE(str_ireplace, arginfo_str_ireplace)
 	ZEND_FE(hebrev, arginfo_hebrev)
 	ZEND_FE(nl2br, arginfo_nl2br)
 	ZEND_FE(strip_tags, arginfo_strip_tags)
@@ -3135,16 +3158,16 @@
 	ZEND_FE(str_rot13, arginfo_str_rot13)
 	ZEND_FE(str_shuffle, arginfo_str_shuffle)
 	ZEND_FE(str_word_count, arginfo_str_word_count)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(str_split, arginfo_str_split)
+	ZEND_FE(str_split, arginfo_str_split)
 	ZEND_FE(strpbrk, arginfo_strpbrk)
 	ZEND_FE(substr_compare, arginfo_substr_compare)
-	ZEND_DEP_FE(utf8_encode, arginfo_utf8_encode)
-	ZEND_DEP_FE(utf8_decode, arginfo_utf8_decode)
+	ZEND_FE(utf8_encode, arginfo_utf8_encode)
+	ZEND_FE(utf8_decode, arginfo_utf8_decode)
 	ZEND_FE(opendir, arginfo_opendir)
 	ZEND_FE(dir, arginfo_dir)
 	ZEND_FE(closedir, arginfo_closedir)
 	ZEND_FE(chdir, arginfo_chdir)
-#if (defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC))
+#if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC
 	ZEND_FE(chroot, arginfo_chroot)
 #endif
 	ZEND_FE(getcwd, arginfo_getcwd)
@@ -3225,14 +3248,14 @@
 	ZEND_FE(lstat, arginfo_lstat)
 	ZEND_FE(chown, arginfo_chown)
 	ZEND_FE(chgrp, arginfo_chgrp)
-#if defined(HAVE_LCHOWN)
+#if HAVE_LCHOWN
 	ZEND_FE(lchown, arginfo_lchown)
 #endif
-#if defined(HAVE_LCHOWN)
+#if HAVE_LCHOWN
 	ZEND_FE(lchgrp, arginfo_lchgrp)
 #endif
 	ZEND_FE(chmod, arginfo_chmod)
-#if defined(HAVE_UTIME)
+#if HAVE_UTIME
 	ZEND_FE(touch, arginfo_touch)
 #endif
 	ZEND_FE(clearstatcache, arginfo_clearstatcache)
@@ -3255,25 +3278,25 @@
 	ZEND_FE(getimagesize, arginfo_getimagesize)
 	ZEND_FE(getimagesizefromstring, arginfo_getimagesizefromstring)
 	ZEND_FE(phpinfo, arginfo_phpinfo)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(phpversion, arginfo_phpversion)
+	ZEND_FE(phpversion, arginfo_phpversion)
 	ZEND_FE(phpcredits, arginfo_phpcredits)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(php_sapi_name, arginfo_php_sapi_name)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(php_uname, arginfo_php_uname)
+	ZEND_FE(php_sapi_name, arginfo_php_sapi_name)
+	ZEND_FE(php_uname, arginfo_php_uname)
 	ZEND_FE(php_ini_scanned_files, arginfo_php_ini_scanned_files)
 	ZEND_FE(php_ini_loaded_file, arginfo_php_ini_loaded_file)
 	ZEND_FE(iptcembed, arginfo_iptcembed)
 	ZEND_FE(iptcparse, arginfo_iptcparse)
 	ZEND_FE(levenshtein, arginfo_levenshtein)
-#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32))
+#if defined(HAVE_SYMLINK) || defined(PHP_WIN32)
 	ZEND_FE(readlink, arginfo_readlink)
 #endif
-#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32))
+#if defined(HAVE_SYMLINK) || defined(PHP_WIN32)
 	ZEND_FE(linkinfo, arginfo_linkinfo)
 #endif
-#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32))
+#if defined(HAVE_SYMLINK) || defined(PHP_WIN32)
 	ZEND_FE(symlink, arginfo_symlink)
 #endif
-#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32))
+#if defined(HAVE_SYMLINK) || defined(PHP_WIN32)
 	ZEND_FE(link, arginfo_link)
 #endif
 	ZEND_FE(mail, arginfo_mail)
@@ -3296,12 +3319,12 @@
 	ZEND_FE(acosh, arginfo_acosh)
 	ZEND_FE(expm1, arginfo_expm1)
 	ZEND_FE(log1p, arginfo_log1p)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(pi, arginfo_pi)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(is_finite, arginfo_is_finite)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(is_nan, arginfo_is_nan)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(intdiv, arginfo_intdiv)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(is_infinite, arginfo_is_infinite)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(pow, arginfo_pow)
+	ZEND_FE(pi, arginfo_pi)
+	ZEND_FE(is_finite, arginfo_is_finite)
+	ZEND_FE(is_nan, arginfo_is_nan)
+	ZEND_FE(intdiv, arginfo_intdiv)
+	ZEND_FE(is_infinite, arginfo_is_infinite)
+	ZEND_FE(pow, arginfo_pow)
 	ZEND_FE(exp, arginfo_exp)
 	ZEND_FE(log, arginfo_log)
 	ZEND_FE(log10, arginfo_log10)
@@ -3309,12 +3332,12 @@
 	ZEND_FE(hypot, arginfo_hypot)
 	ZEND_FE(deg2rad, arginfo_deg2rad)
 	ZEND_FE(rad2deg, arginfo_rad2deg)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(bindec, arginfo_bindec)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(hexdec, arginfo_hexdec)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(octdec, arginfo_octdec)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(decbin, arginfo_decbin)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(decoct, arginfo_decoct)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(dechex, arginfo_dechex)
+	ZEND_FE(bindec, arginfo_bindec)
+	ZEND_FE(hexdec, arginfo_hexdec)
+	ZEND_FE(octdec, arginfo_octdec)
+	ZEND_FE(decbin, arginfo_decbin)
+	ZEND_FE(decoct, arginfo_decoct)
+	ZEND_FE(dechex, arginfo_dechex)
 	ZEND_FE(base_convert, arginfo_base_convert)
 	ZEND_FE(number_format, arginfo_number_format)
 	ZEND_FE(fmod, arginfo_fmod)
@@ -3349,6 +3372,14 @@
 #endif
 	ZEND_FE(quoted_printable_decode, arginfo_quoted_printable_decode)
 	ZEND_FE(quoted_printable_encode, arginfo_quoted_printable_encode)
+	ZEND_FE(mt_srand, arginfo_mt_srand)
+	ZEND_FALIAS(srand, mt_srand, arginfo_srand)
+	ZEND_FE(rand, arginfo_rand)
+	ZEND_FE(mt_rand, arginfo_mt_rand)
+	ZEND_FE(mt_getrandmax, arginfo_mt_getrandmax)
+	ZEND_FALIAS(getrandmax, mt_getrandmax, arginfo_getrandmax)
+	ZEND_FE(random_bytes, arginfo_random_bytes)
+	ZEND_FE(random_int, arginfo_random_int)
 	ZEND_FE(soundex, arginfo_soundex)
 	ZEND_FE(stream_select, arginfo_stream_select)
 	ZEND_FE(stream_context_create, arginfo_stream_context_create)
@@ -3371,7 +3402,7 @@
 #if defined(HAVE_SHUTDOWN)
 	ZEND_FE(stream_socket_shutdown, arginfo_stream_socket_shutdown)
 #endif
-#if defined(HAVE_SOCKETPAIR)
+#if HAVE_SOCKETPAIR
 	ZEND_FE(stream_socket_pair, arginfo_stream_socket_pair)
 #endif
 	ZEND_FE(stream_copy_to_stream, arginfo_stream_copy_to_stream)
@@ -3394,10 +3425,10 @@
 	ZEND_FE(sapi_windows_vt100_support, arginfo_sapi_windows_vt100_support)
 #endif
 	ZEND_FE(stream_set_chunk_size, arginfo_stream_set_chunk_size)
-#if (defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32))
+#if HAVE_SYS_TIME_H || defined(PHP_WIN32)
 	ZEND_FE(stream_set_timeout, arginfo_stream_set_timeout)
 #endif
-#if (defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32))
+#if HAVE_SYS_TIME_H || defined(PHP_WIN32)
 	ZEND_FALIAS(socket_set_timeout, stream_set_timeout, arginfo_socket_set_timeout)
 #endif
 	ZEND_FE(gettype, arginfo_gettype)
@@ -3428,10 +3459,10 @@
 	ZEND_FE(uniqid, arginfo_uniqid)
 #endif
 	ZEND_FE(parse_url, arginfo_parse_url)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(urlencode, arginfo_urlencode)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(urldecode, arginfo_urldecode)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(rawurlencode, arginfo_rawurlencode)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(rawurldecode, arginfo_rawurldecode)
+	ZEND_FE(urlencode, arginfo_urlencode)
+	ZEND_FE(urldecode, arginfo_urldecode)
+	ZEND_FE(rawurlencode, arginfo_rawurlencode)
+	ZEND_FE(rawurldecode, arginfo_rawurldecode)
 	ZEND_FE(get_headers, arginfo_get_headers)
 	ZEND_FE(stream_bucket_make_writeable, arginfo_stream_bucket_make_writeable)
 	ZEND_FE(stream_bucket_prepend, arginfo_stream_bucket_prepend)
@@ -3444,12 +3475,11 @@
 	ZEND_FE(var_dump, arginfo_var_dump)
 	ZEND_FE(var_export, arginfo_var_export)
 	ZEND_FE(debug_zval_dump, arginfo_debug_zval_dump)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(serialize, arginfo_serialize)
+	ZEND_FE(serialize, arginfo_serialize)
 	ZEND_FE(unserialize, arginfo_unserialize)
 	ZEND_FE(memory_get_usage, arginfo_memory_get_usage)
 	ZEND_FE(memory_get_peak_usage, arginfo_memory_get_peak_usage)
-	ZEND_FE(memory_reset_peak_usage, arginfo_memory_reset_peak_usage)
-	ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(version_compare, arginfo_version_compare)
+	ZEND_FE(version_compare, arginfo_version_compare)
 #if defined(PHP_WIN32)
 	ZEND_FE(sapi_windows_cp_set, arginfo_sapi_windows_cp_set)
 #endif
@@ -3481,247 +3511,6 @@
 	ZEND_FE_END
 };
 
-static void register_basic_functions_symbols(int module_number)
-{
-	REGISTER_LONG_CONSTANT("EXTR_OVERWRITE", PHP_EXTR_OVERWRITE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("EXTR_SKIP", PHP_EXTR_SKIP, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("EXTR_PREFIX_SAME", PHP_EXTR_PREFIX_SAME, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("EXTR_PREFIX_ALL", PHP_EXTR_PREFIX_ALL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("EXTR_PREFIX_INVALID", PHP_EXTR_PREFIX_INVALID, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("EXTR_PREFIX_IF_EXISTS", PHP_EXTR_PREFIX_IF_EXISTS, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("EXTR_IF_EXISTS", PHP_EXTR_IF_EXISTS, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("EXTR_REFS", PHP_EXTR_REFS, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("SORT_ASC", PHP_SORT_ASC, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("SORT_DESC", PHP_SORT_DESC, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("SORT_REGULAR", PHP_SORT_REGULAR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("SORT_NUMERIC", PHP_SORT_NUMERIC, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("SORT_STRING", PHP_SORT_STRING, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("SORT_LOCALE_STRING", PHP_SORT_LOCALE_STRING, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("SORT_NATURAL", PHP_SORT_NATURAL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("SORT_FLAG_CASE", PHP_SORT_FLAG_CASE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("CASE_LOWER", PHP_CASE_LOWER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("CASE_UPPER", PHP_CASE_UPPER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("COUNT_NORMAL", PHP_COUNT_NORMAL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("COUNT_RECURSIVE", PHP_COUNT_RECURSIVE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("ARRAY_FILTER_USE_BOTH", ARRAY_FILTER_USE_BOTH, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("ARRAY_FILTER_USE_KEY", ARRAY_FILTER_USE_KEY, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("CONNECTION_ABORTED", PHP_CONNECTION_ABORTED, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("CONNECTION_NORMAL", PHP_CONNECTION_NORMAL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("CONNECTION_TIMEOUT", PHP_CONNECTION_TIMEOUT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("INI_USER", ZEND_INI_USER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("INI_PERDIR", ZEND_INI_PERDIR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("INI_SYSTEM", ZEND_INI_SYSTEM, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("INI_ALL", ZEND_INI_ALL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("INI_SCANNER_NORMAL", ZEND_INI_SCANNER_NORMAL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("INI_SCANNER_RAW", ZEND_INI_SCANNER_RAW, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("INI_SCANNER_TYPED", ZEND_INI_SCANNER_TYPED, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PHP_URL_SCHEME", PHP_URL_SCHEME, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PHP_URL_HOST", PHP_URL_HOST, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PHP_URL_PORT", PHP_URL_PORT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PHP_URL_USER", PHP_URL_USER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PHP_URL_PASS", PHP_URL_PASS, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PHP_URL_PATH", PHP_URL_PATH, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PHP_URL_QUERY", PHP_URL_QUERY, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PHP_URL_FRAGMENT", PHP_URL_FRAGMENT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PHP_QUERY_RFC1738", PHP_QUERY_RFC1738, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PHP_QUERY_RFC3986", PHP_QUERY_RFC3986, CONST_PERSISTENT);
-	REGISTER_DOUBLE_CONSTANT("M_E", M_E, CONST_PERSISTENT);
-	ZEND_ASSERT(M_E == 2.718281828459045);
-	REGISTER_DOUBLE_CONSTANT("M_LOG2E", M_LOG2E, CONST_PERSISTENT);
-	ZEND_ASSERT(M_LOG2E == 1.4426950408889634);
-	REGISTER_DOUBLE_CONSTANT("M_LOG10E", M_LOG10E, CONST_PERSISTENT);
-	ZEND_ASSERT(M_LOG10E == 0.4342944819032518);
-	REGISTER_DOUBLE_CONSTANT("M_LN2", M_LN2, CONST_PERSISTENT);
-	ZEND_ASSERT(M_LN2 == 0.6931471805599453);
-	REGISTER_DOUBLE_CONSTANT("M_LN10", M_LN10, CONST_PERSISTENT);
-	ZEND_ASSERT(M_LN10 == 2.302585092994046);
-	REGISTER_DOUBLE_CONSTANT("M_PI", M_PI, CONST_PERSISTENT);
-	ZEND_ASSERT(M_PI == 3.141592653589793);
-	REGISTER_DOUBLE_CONSTANT("M_PI_2", M_PI_2, CONST_PERSISTENT);
-	ZEND_ASSERT(M_PI_2 == 1.5707963267948966);
-	REGISTER_DOUBLE_CONSTANT("M_PI_4", M_PI_4, CONST_PERSISTENT);
-	ZEND_ASSERT(M_PI_4 == 0.7853981633974483);
-	REGISTER_DOUBLE_CONSTANT("M_1_PI", M_1_PI, CONST_PERSISTENT);
-	ZEND_ASSERT(M_1_PI == 0.3183098861837907);
-	REGISTER_DOUBLE_CONSTANT("M_2_PI", M_2_PI, CONST_PERSISTENT);
-	ZEND_ASSERT(M_2_PI == 0.6366197723675814);
-	REGISTER_DOUBLE_CONSTANT("M_SQRTPI", M_SQRTPI, CONST_PERSISTENT);
-	ZEND_ASSERT(M_SQRTPI == 1.772453850905516);
-	REGISTER_DOUBLE_CONSTANT("M_2_SQRTPI", M_2_SQRTPI, CONST_PERSISTENT);
-	ZEND_ASSERT(M_2_SQRTPI == 1.1283791670955126);
-	REGISTER_DOUBLE_CONSTANT("M_LNPI", M_LNPI, CONST_PERSISTENT);
-	ZEND_ASSERT(M_LNPI == 1.1447298858494002);
-	REGISTER_DOUBLE_CONSTANT("M_EULER", M_EULER, CONST_PERSISTENT);
-	ZEND_ASSERT(M_EULER == 0.5772156649015329);
-	REGISTER_DOUBLE_CONSTANT("M_SQRT2", M_SQRT2, CONST_PERSISTENT);
-	ZEND_ASSERT(M_SQRT2 == 1.4142135623730951);
-	REGISTER_DOUBLE_CONSTANT("M_SQRT1_2", M_SQRT1_2, CONST_PERSISTENT);
-	ZEND_ASSERT(M_SQRT1_2 == 0.7071067811865476);
-	REGISTER_DOUBLE_CONSTANT("M_SQRT3", M_SQRT3, CONST_PERSISTENT);
-	ZEND_ASSERT(M_SQRT3 == 1.7320508075688772);
-	REGISTER_DOUBLE_CONSTANT("INF", ZEND_INFINITY, CONST_PERSISTENT);
-	REGISTER_DOUBLE_CONSTANT("NAN", ZEND_NAN, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_UP", PHP_ROUND_HALF_UP, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_DOWN", PHP_ROUND_HALF_DOWN, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_EVEN", PHP_ROUND_HALF_EVEN, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_ODD", PHP_ROUND_HALF_ODD, CONST_PERSISTENT);
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
-	REGISTER_LONG_CONSTANT("DNS_A", PHP_DNS_A, CONST_PERSISTENT);
-#endif
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
-	REGISTER_LONG_CONSTANT("DNS_NS", PHP_DNS_NS, CONST_PERSISTENT);
-#endif
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
-	REGISTER_LONG_CONSTANT("DNS_CNAME", PHP_DNS_CNAME, CONST_PERSISTENT);
-#endif
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
-	REGISTER_LONG_CONSTANT("DNS_SOA", PHP_DNS_SOA, CONST_PERSISTENT);
-#endif
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
-	REGISTER_LONG_CONSTANT("DNS_PTR", PHP_DNS_PTR, CONST_PERSISTENT);
-#endif
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
-	REGISTER_LONG_CONSTANT("DNS_HINFO", PHP_DNS_HINFO, CONST_PERSISTENT);
-#endif
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) && (!defined(PHP_WIN32))
-	REGISTER_LONG_CONSTANT("DNS_CAA", PHP_DNS_CAA, CONST_PERSISTENT);
-#endif
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
-	REGISTER_LONG_CONSTANT("DNS_MX", PHP_DNS_MX, CONST_PERSISTENT);
-#endif
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
-	REGISTER_LONG_CONSTANT("DNS_TXT", PHP_DNS_TXT, CONST_PERSISTENT);
-#endif
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
-	REGISTER_LONG_CONSTANT("DNS_SRV", PHP_DNS_SRV, CONST_PERSISTENT);
-#endif
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
-	REGISTER_LONG_CONSTANT("DNS_NAPTR", PHP_DNS_NAPTR, CONST_PERSISTENT);
-#endif
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
-	REGISTER_LONG_CONSTANT("DNS_AAAA", PHP_DNS_AAAA, CONST_PERSISTENT);
-#endif
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
-	REGISTER_LONG_CONSTANT("DNS_A6", PHP_DNS_A6, CONST_PERSISTENT);
-#endif
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
-	REGISTER_LONG_CONSTANT("DNS_ANY", PHP_DNS_ANY, CONST_PERSISTENT);
-#endif
-#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
-	REGISTER_LONG_CONSTANT("DNS_ALL", PHP_DNS_ALL, CONST_PERSISTENT);
-#endif
-	REGISTER_LONG_CONSTANT("IMAGETYPE_GIF", IMAGE_FILETYPE_GIF, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_JPEG", IMAGE_FILETYPE_JPEG, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_PNG", IMAGE_FILETYPE_PNG, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_SWF", IMAGE_FILETYPE_SWF, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_PSD", IMAGE_FILETYPE_PSD, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_BMP", IMAGE_FILETYPE_BMP, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_TIFF_II", IMAGE_FILETYPE_TIFF_II, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_TIFF_MM", IMAGE_FILETYPE_TIFF_MM, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_JPC", IMAGE_FILETYPE_JPC, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_JP2", IMAGE_FILETYPE_JP2, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_JPX", IMAGE_FILETYPE_JPX, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_JB2", IMAGE_FILETYPE_JB2, CONST_PERSISTENT);
-#if (defined(HAVE_ZLIB) && !defined(COMPILE_DL_ZLIB))
-	REGISTER_LONG_CONSTANT("IMAGETYPE_SWC", IMAGE_FILETYPE_SWC, CONST_PERSISTENT);
-#endif
-	REGISTER_LONG_CONSTANT("IMAGETYPE_IFF", IMAGE_FILETYPE_IFF, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_WBMP", IMAGE_FILETYPE_WBMP, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_JPEG2000", IMAGE_FILETYPE_JPC, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_XBM", IMAGE_FILETYPE_XBM, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_ICO", IMAGE_FILETYPE_ICO, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_WEBP", IMAGE_FILETYPE_WEBP, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_AVIF", IMAGE_FILETYPE_AVIF, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_UNKNOWN", IMAGE_FILETYPE_UNKNOWN, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("IMAGETYPE_COUNT", IMAGE_FILETYPE_COUNT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_EMERG", LOG_EMERG, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_ALERT", LOG_ALERT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_CRIT", LOG_CRIT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_ERR", LOG_ERR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_WARNING", LOG_WARNING, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_NOTICE", LOG_NOTICE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_INFO", LOG_INFO, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_DEBUG", LOG_DEBUG, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_KERN", LOG_KERN, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_USER", LOG_USER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_MAIL", LOG_MAIL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_DAEMON", LOG_DAEMON, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_AUTH", LOG_AUTH, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_SYSLOG", LOG_SYSLOG, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_LPR", LOG_LPR, CONST_PERSISTENT);
-#if defined(LOG_NEWS)
-	REGISTER_LONG_CONSTANT("LOG_NEWS", LOG_NEWS, CONST_PERSISTENT);
-#endif
-#if defined(LOG_UUCP)
-	REGISTER_LONG_CONSTANT("LOG_UUCP", LOG_UUCP, CONST_PERSISTENT);
-#endif
-#if defined(LOG_CRON)
-	REGISTER_LONG_CONSTANT("LOG_CRON", LOG_CRON, CONST_PERSISTENT);
-#endif
-#if defined(LOG_AUTHPRIV)
-	REGISTER_LONG_CONSTANT("LOG_AUTHPRIV", LOG_AUTHPRIV, CONST_PERSISTENT);
-#endif
-#if !defined(PHP_WIN32)
-	REGISTER_LONG_CONSTANT("LOG_LOCAL0", LOG_LOCAL0, CONST_PERSISTENT);
-#endif
-#if !defined(PHP_WIN32)
-	REGISTER_LONG_CONSTANT("LOG_LOCAL1", LOG_LOCAL1, CONST_PERSISTENT);
-#endif
-#if !defined(PHP_WIN32)
-	REGISTER_LONG_CONSTANT("LOG_LOCAL2", LOG_LOCAL2, CONST_PERSISTENT);
-#endif
-#if !defined(PHP_WIN32)
-	REGISTER_LONG_CONSTANT("LOG_LOCAL3", LOG_LOCAL3, CONST_PERSISTENT);
-#endif
-#if !defined(PHP_WIN32)
-	REGISTER_LONG_CONSTANT("LOG_LOCAL4", LOG_LOCAL4, CONST_PERSISTENT);
-#endif
-#if !defined(PHP_WIN32)
-	REGISTER_LONG_CONSTANT("LOG_LOCAL5", LOG_LOCAL5, CONST_PERSISTENT);
-#endif
-#if !defined(PHP_WIN32)
-	REGISTER_LONG_CONSTANT("LOG_LOCAL6", LOG_LOCAL6, CONST_PERSISTENT);
-#endif
-#if !defined(PHP_WIN32)
-	REGISTER_LONG_CONSTANT("LOG_LOCAL7", LOG_LOCAL7, CONST_PERSISTENT);
-#endif
-	REGISTER_LONG_CONSTANT("LOG_PID", LOG_PID, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_CONS", LOG_CONS, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_ODELAY", LOG_ODELAY, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOG_NDELAY", LOG_NDELAY, CONST_PERSISTENT);
-#if defined(LOG_NOWAIT)
-	REGISTER_LONG_CONSTANT("LOG_NOWAIT", LOG_NOWAIT, CONST_PERSISTENT);
-#endif
-#if defined(LOG_PERROR)
-	REGISTER_LONG_CONSTANT("LOG_PERROR", LOG_PERROR, CONST_PERSISTENT);
-#endif
-	REGISTER_LONG_CONSTANT("STR_PAD_LEFT", PHP_STR_PAD_LEFT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STR_PAD_RIGHT", PHP_STR_PAD_RIGHT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STR_PAD_BOTH", PHP_STR_PAD_BOTH, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PATHINFO_DIRNAME", PHP_PATHINFO_DIRNAME, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PATHINFO_BASENAME", PHP_PATHINFO_BASENAME, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PATHINFO_EXTENSION", PHP_PATHINFO_EXTENSION, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PATHINFO_FILENAME", PHP_PATHINFO_FILENAME, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("PATHINFO_ALL", PHP_PATHINFO_ALL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("CHAR_MAX", CHAR_MAX, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LC_CTYPE", LC_CTYPE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LC_NUMERIC", LC_NUMERIC, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LC_TIME", LC_TIME, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LC_COLLATE", LC_COLLATE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LC_MONETARY", LC_MONETARY, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LC_ALL", LC_ALL, CONST_PERSISTENT);
-#if defined(LC_MESSAGES)
-	REGISTER_LONG_CONSTANT("LC_MESSAGES", LC_MESSAGES, CONST_PERSISTENT);
-#endif
-
-
-	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "crypt", sizeof("crypt") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
-
-	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "password_hash", sizeof("password_hash") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
-
-	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "password_verify", sizeof("password_verify") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
-}
-
 static zend_class_entry *register_class___PHP_Incomplete_Class(void)
 {
 	zend_class_entry ce, *class_entry;
@@ -3728,12 +3517,8 @@
 
 	INIT_CLASS_ENTRY(ce, "__PHP_Incomplete_Class", class___PHP_Incomplete_Class_methods);
 	class_entry = zend_register_internal_class_ex(&ce, NULL);
-	class_entry->ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES;
+	class_entry->ce_flags |= ZEND_ACC_FINAL;
 
-	zend_string *attribute_name_AllowDynamicProperties_class___PHP_Incomplete_Class = zend_string_init_interned("AllowDynamicProperties", sizeof("AllowDynamicProperties") - 1, 1);
-	zend_add_class_attribute(class_entry, attribute_name_AllowDynamicProperties_class___PHP_Incomplete_Class, 0);
-	zend_string_release(attribute_name_AllowDynamicProperties_class___PHP_Incomplete_Class);
-
 	return class_entry;
 }
 

Modified: trunk/MgDev/Oem/php/include/ext/standard/credits_ext.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/credits_ext.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/credits_ext.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -55,7 +55,6 @@
 CREDIT_LINE("PostgreSQL driver for PDO", "Edin Kadribasic, Ilia Alshanetsky");
 CREDIT_LINE("PostgreSQL", "Jouni Ahto, Zeev Suraski, Yasuo Ohgaki, Chris Kings-Lynne");
 CREDIT_LINE("Pspell", "Vlad Krupin");
-CREDIT_LINE("random", "Go Kudo, Tim Düsterhus, Guilliam Xavier, Christoph M. Becker, Jakub Zelenka, Bob Weinand, Máté Kocsis, and Original RNG implementators");
 CREDIT_LINE("Readline", "Thies C. Arntzen");
 CREDIT_LINE("Reflection", "Marcus Boerger, Timm Friebe, George Schlossnagle, Andrei Zmievski, Johannes Schlueter");
 CREDIT_LINE("Sessions", "Sascha Schumann, Andrei Zmievski");

Modified: trunk/MgDev/Oem/php/include/ext/standard/crypt_freesec.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/crypt_freesec.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/crypt_freesec.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,8 +1,14 @@
 #ifndef _CRYPT_FREESEC_H
 #define _CRYPT_FREESEC_H
 
-#include <stdint.h>
+#ifdef PHP_WIN32
+# ifndef inline
+# define inline __inline
+# endif
+#endif
 
+#include "php_stdint.h"
+
 #define MD5_HASH_MAX_LEN 120
 
 struct php_crypt_extended_data {

Modified: trunk/MgDev/Oem/php/include/ext/standard/file.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/file.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/file.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -48,17 +48,16 @@
 	zval *wouldblock, zval *return_value);
 
 #define PHP_CSV_NO_ESCAPE EOF
-PHPAPI HashTable *php_bc_fgetcsv_empty_line(void);
-PHPAPI HashTable *php_fgetcsv(php_stream *stream, char delimiter, char enclosure, int escape_char, size_t buf_len, char *buf);
+PHPAPI void php_fgetcsv(php_stream *stream, char delimiter, char enclosure, int escape_char, size_t buf_len, char *buf, zval *return_value);
 PHPAPI ssize_t php_fputcsv(php_stream *stream, zval *fields, char delimiter, char enclosure, int escape_char, zend_string *eol_str);
 
 #define META_DEF_BUFSIZE 8192
 
-#define PHP_FILE_USE_INCLUDE_PATH (1 << 0)
-#define PHP_FILE_IGNORE_NEW_LINES (1 << 1)
-#define PHP_FILE_SKIP_EMPTY_LINES (1 << 2)
-#define PHP_FILE_APPEND (1 << 3)
-#define PHP_FILE_NO_DEFAULT_CONTEXT (1 << 4)
+#define PHP_FILE_USE_INCLUDE_PATH 1
+#define PHP_FILE_IGNORE_NEW_LINES 2
+#define PHP_FILE_SKIP_EMPTY_LINES 4
+#define PHP_FILE_APPEND 8
+#define PHP_FILE_NO_DEFAULT_CONTEXT 16
 
 typedef enum _php_meta_tags_token {
 	TOK_EOF = 0,
@@ -97,7 +96,7 @@
 	HashTable *stream_filters;			/* per-request copy of stream_filters_hash */
 	HashTable *wrapper_errors;			/* key: wrapper address; value: linked list of char* */
 	int pclose_wait;
-#ifdef HAVE_GETHOSTBYNAME_R
+#if defined(HAVE_GETHOSTBYNAME_R)
 	struct hostent tmp_host_info;
 	char *tmp_host_buf;
 	size_t tmp_host_buf_len;

Deleted: trunk/MgDev/Oem/php/include/ext/standard/file_arginfo.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/file_arginfo.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/file_arginfo.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,127 +0,0 @@
-/* This is a generated file, edit the .stub.php file instead.
- * Stub hash: e9a566d5ef96f781074027b1b3ff1824d0208b47 */
-
-
-
-static void register_file_symbols(int module_number)
-{
-	REGISTER_LONG_CONSTANT("SEEK_SET", SEEK_SET, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("SEEK_CUR", SEEK_CUR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("SEEK_END", SEEK_END, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOCK_SH", PHP_LOCK_SH, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOCK_EX", PHP_LOCK_EX, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOCK_UN", PHP_LOCK_UN, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("LOCK_NB", PHP_LOCK_NB, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_CONNECT", PHP_STREAM_NOTIFY_CONNECT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_AUTH_REQUIRED", PHP_STREAM_NOTIFY_AUTH_REQUIRED, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_AUTH_RESULT", PHP_STREAM_NOTIFY_AUTH_RESULT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_MIME_TYPE_IS", PHP_STREAM_NOTIFY_MIME_TYPE_IS, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_FILE_SIZE_IS", PHP_STREAM_NOTIFY_FILE_SIZE_IS, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_REDIRECTED", PHP_STREAM_NOTIFY_REDIRECTED, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_PROGRESS", PHP_STREAM_NOTIFY_PROGRESS, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_FAILURE", PHP_STREAM_NOTIFY_FAILURE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_COMPLETED", PHP_STREAM_NOTIFY_COMPLETED, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_RESOLVE", PHP_STREAM_NOTIFY_RESOLVE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_SEVERITY_INFO", PHP_STREAM_NOTIFY_SEVERITY_INFO, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_SEVERITY_WARN", PHP_STREAM_NOTIFY_SEVERITY_WARN, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_SEVERITY_ERR", PHP_STREAM_NOTIFY_SEVERITY_ERR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_FILTER_READ", PHP_STREAM_FILTER_READ, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_FILTER_WRITE", PHP_STREAM_FILTER_WRITE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_FILTER_ALL", PHP_STREAM_FILTER_ALL, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CLIENT_PERSISTENT", PHP_STREAM_CLIENT_PERSISTENT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CLIENT_ASYNC_CONNECT", PHP_STREAM_CLIENT_ASYNC_CONNECT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CLIENT_CONNECT", PHP_STREAM_CLIENT_CONNECT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_ANY_CLIENT", STREAM_CRYPTO_METHOD_ANY_CLIENT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv2_CLIENT", STREAM_CRYPTO_METHOD_SSLv2_CLIENT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv3_CLIENT", STREAM_CRYPTO_METHOD_SSLv3_CLIENT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv23_CLIENT", STREAM_CRYPTO_METHOD_SSLv23_CLIENT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLS_CLIENT", STREAM_CRYPTO_METHOD_TLS_CLIENT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT", STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT", STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT", STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT", STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_ANY_SERVER", STREAM_CRYPTO_METHOD_ANY_SERVER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv2_SERVER", STREAM_CRYPTO_METHOD_SSLv2_SERVER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv3_SERVER", STREAM_CRYPTO_METHOD_SSLv3_SERVER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv23_SERVER", STREAM_CRYPTO_METHOD_SSLv23_SERVER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLS_SERVER", STREAM_CRYPTO_METHOD_TLS_SERVER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_0_SERVER", STREAM_CRYPTO_METHOD_TLSv1_0_SERVER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_1_SERVER", STREAM_CRYPTO_METHOD_TLSv1_1_SERVER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_2_SERVER", STREAM_CRYPTO_METHOD_TLSv1_2_SERVER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_3_SERVER", STREAM_CRYPTO_METHOD_TLSv1_3_SERVER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_SSLv3", STREAM_CRYPTO_METHOD_SSLv3_SERVER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_TLSv1_0", STREAM_CRYPTO_METHOD_TLSv1_0_SERVER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_TLSv1_1", STREAM_CRYPTO_METHOD_TLSv1_1_SERVER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_TLSv1_2", STREAM_CRYPTO_METHOD_TLSv1_2_SERVER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_TLSv1_3", STREAM_CRYPTO_METHOD_TLSv1_3_SERVER, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_SHUT_RD", STREAM_SHUT_RD, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_SHUT_WR", STREAM_SHUT_WR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_SHUT_RDWR", STREAM_SHUT_RDWR, CONST_PERSISTENT);
-#if defined(PF_INET)
-	REGISTER_LONG_CONSTANT("STREAM_PF_INET", PF_INET, CONST_PERSISTENT);
-#endif
-#if (!defined(PF_INET) && defined(AF_INET))
-	REGISTER_LONG_CONSTANT("STREAM_PF_INET", AF_INET, CONST_PERSISTENT);
-#endif
-#if defined(HAVE_IPV6) && defined(PF_INET6)
-	REGISTER_LONG_CONSTANT("STREAM_PF_INET6", PF_INET6, CONST_PERSISTENT);
-#endif
-#if defined(HAVE_IPV6) && (!defined(PF_INET6) && defined(AF_INET6))
-	REGISTER_LONG_CONSTANT("STREAM_PF_INET6", AF_INET6, CONST_PERSISTENT);
-#endif
-#if defined(PF_UNIX)
-	REGISTER_LONG_CONSTANT("STREAM_PF_UNIX", PF_UNIX, CONST_PERSISTENT);
-#endif
-#if (!defined(PF_UNIX) && defined(AF_UNIX))
-	REGISTER_LONG_CONSTANT("STREAM_PF_UNIX", AF_UNIX, CONST_PERSISTENT);
-#endif
-#if defined(IPPROTO_IP)
-	REGISTER_LONG_CONSTANT("STREAM_IPPROTO_IP", IPPROTO_IP, CONST_PERSISTENT);
-#endif
-#if (defined(IPPROTO_TCP) || defined(PHP_WIN32))
-	REGISTER_LONG_CONSTANT("STREAM_IPPROTO_TCP", IPPROTO_TCP, CONST_PERSISTENT);
-#endif
-#if (defined(IPPROTO_UDP) || defined(PHP_WIN32))
-	REGISTER_LONG_CONSTANT("STREAM_IPPROTO_UDP", IPPROTO_UDP, CONST_PERSISTENT);
-#endif
-#if (defined(IPPROTO_ICMP) || defined(PHP_WIN32))
-	REGISTER_LONG_CONSTANT("STREAM_IPPROTO_ICMP", IPPROTO_ICMP, CONST_PERSISTENT);
-#endif
-#if (defined(IPPROTO_RAW) || defined(PHP_WIN32))
-	REGISTER_LONG_CONSTANT("STREAM_IPPROTO_RAW", IPPROTO_RAW, CONST_PERSISTENT);
-#endif
-	REGISTER_LONG_CONSTANT("STREAM_SOCK_STREAM", SOCK_STREAM, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_SOCK_DGRAM", SOCK_DGRAM, CONST_PERSISTENT);
-#if defined(SOCK_RAW)
-	REGISTER_LONG_CONSTANT("STREAM_SOCK_RAW", SOCK_RAW, CONST_PERSISTENT);
-#endif
-#if defined(SOCK_SEQPACKET)
-	REGISTER_LONG_CONSTANT("STREAM_SOCK_SEQPACKET", SOCK_SEQPACKET, CONST_PERSISTENT);
-#endif
-#if defined(SOCK_RDM)
-	REGISTER_LONG_CONSTANT("STREAM_SOCK_RDM", SOCK_RDM, CONST_PERSISTENT);
-#endif
-	REGISTER_LONG_CONSTANT("STREAM_PEEK", STREAM_PEEK, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_OOB", STREAM_OOB, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_SERVER_BIND", STREAM_XPORT_BIND, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("STREAM_SERVER_LISTEN", STREAM_XPORT_LISTEN, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("FILE_USE_INCLUDE_PATH", PHP_FILE_USE_INCLUDE_PATH, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("FILE_IGNORE_NEW_LINES", PHP_FILE_IGNORE_NEW_LINES, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("FILE_SKIP_EMPTY_LINES", PHP_FILE_SKIP_EMPTY_LINES, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("FILE_APPEND", PHP_FILE_APPEND, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("FILE_NO_DEFAULT_CONTEXT", PHP_FILE_NO_DEFAULT_CONTEXT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("FILE_TEXT", 0, CONST_PERSISTENT | CONST_DEPRECATED);
-	REGISTER_LONG_CONSTANT("FILE_BINARY", 0, CONST_PERSISTENT | CONST_DEPRECATED);
-#if defined(HAVE_FNMATCH)
-	REGISTER_LONG_CONSTANT("FNM_NOESCAPE", FNM_NOESCAPE, CONST_PERSISTENT);
-#endif
-#if defined(HAVE_FNMATCH)
-	REGISTER_LONG_CONSTANT("FNM_PATHNAME", FNM_PATHNAME, CONST_PERSISTENT);
-#endif
-#if defined(HAVE_FNMATCH)
-	REGISTER_LONG_CONSTANT("FNM_PERIOD", FNM_PERIOD, CONST_PERSISTENT);
-#endif
-#if defined(HAVE_FNMATCH) && defined(FNM_CASEFOLD)
-	REGISTER_LONG_CONSTANT("FNM_CASEFOLD", FNM_CASEFOLD, CONST_PERSISTENT);
-#endif
-}

Modified: trunk/MgDev/Oem/php/include/ext/standard/flock_compat.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/flock_compat.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/flock_compat.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -17,7 +17,7 @@
 #ifndef FLOCK_COMPAT_H
 #define FLOCK_COMPAT_H
 
-#ifdef HAVE_STRUCT_FLOCK
+#if HAVE_STRUCT_FLOCK
 #include <unistd.h>
 #include <fcntl.h>
 #include <sys/file.h>
@@ -57,16 +57,17 @@
 # define ftruncate(a, b) chsize(a, b)
 #endif /* defined(PHP_WIN32) */
 
-#ifndef HAVE_INET_ATON
-# ifdef HAVE_NETINET_IN_H
-#  include <netinet/in.h>
-# endif
-# ifdef HAVE_ARPA_INET_H
-#  include <arpa/inet.h>
-# endif
-# ifndef PHP_WIN32
+#if !HAVE_INET_ATON
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+#ifndef PHP_WIN32
 extern int inet_aton(const char *, struct in_addr *);
-# endif
 #endif
+#endif
 
 #endif	/* FLOCK_COMPAT_H */

Modified: trunk/MgDev/Oem/php/include/ext/standard/html.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/html.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/html.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -47,6 +47,6 @@
 PHPAPI zend_string *php_escape_html_entities(const unsigned char *old, size_t oldlen, int all, int flags, const char *hint_charset);
 PHPAPI zend_string *php_escape_html_entities_ex(const unsigned char *old, size_t oldlen, int all, int flags, const char *hint_charset, bool double_encode, bool quiet);
 PHPAPI zend_string *php_unescape_html_entities(zend_string *str, int all, int flags, const char *hint_charset);
-PHPAPI unsigned int php_next_utf8_char(const unsigned char *str, size_t str_len, size_t *cursor, zend_result *status);
+PHPAPI unsigned int php_next_utf8_char(const unsigned char *str, size_t str_len, size_t *cursor, int *status);
 
 #endif /* HTML_H */

Modified: trunk/MgDev/Oem/php/include/ext/standard/php_array.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/php_array.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/php_array.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -20,8 +20,6 @@
 #ifndef PHP_ARRAY_H
 #define PHP_ARRAY_H
 
-# include "ext/random/php_random.h"
-
 PHP_MINIT_FUNCTION(array);
 PHP_MSHUTDOWN_FUNCTION(array);
 
@@ -31,22 +29,6 @@
 PHPAPI int php_multisort_compare(const void *a, const void *b);
 PHPAPI zend_long php_count_recursive(HashTable *ht);
 
-PHPAPI bool php_array_data_shuffle(const php_random_algo *algo, php_random_status *status, zval *array);
-PHPAPI bool php_array_pick_keys(const php_random_algo *algo, php_random_status *status, zval *input, zend_long num_req, zval *retval, bool silent);
-
-#define PHP_EXTR_OVERWRITE			0
-#define PHP_EXTR_SKIP				1
-#define PHP_EXTR_PREFIX_SAME		2
-#define PHP_EXTR_PREFIX_ALL			3
-#define PHP_EXTR_PREFIX_INVALID		4
-#define PHP_EXTR_PREFIX_IF_EXISTS	5
-#define PHP_EXTR_IF_EXISTS			6
-
-#define PHP_EXTR_REFS				0x100
-
-#define PHP_CASE_LOWER				0
-#define PHP_CASE_UPPER				1
-
 #define PHP_SORT_REGULAR            0
 #define PHP_SORT_NUMERIC            1
 #define PHP_SORT_STRING             2
@@ -56,8 +38,8 @@
 #define PHP_SORT_NATURAL            6
 #define PHP_SORT_FLAG_CASE          8
 
-#define PHP_COUNT_NORMAL      0
-#define PHP_COUNT_RECURSIVE   1
+#define COUNT_NORMAL      0
+#define COUNT_RECURSIVE   1
 
 #define ARRAY_FILTER_USE_BOTH	1
 #define ARRAY_FILTER_USE_KEY	2

Modified: trunk/MgDev/Oem/php/include/ext/standard/php_dir.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/php_dir.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/php_dir.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -20,6 +20,9 @@
 /* directory functions */
 PHP_MINIT_FUNCTION(dir);
 PHP_RINIT_FUNCTION(dir);
+PHP_FUNCTION(closedir);
+PHP_FUNCTION(rewinddir);
+PHP_FUNCTION(readdir);
 
 #define PHP_SCANDIR_SORT_ASCENDING 0
 #define PHP_SCANDIR_SORT_DESCENDING 1

Modified: trunk/MgDev/Oem/php/include/ext/standard/php_dns.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/php_dns.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/php_dns.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -29,7 +29,7 @@
 #elif defined(HAVE_RES_NSEARCH)
 #define php_dns_search(res, dname, class, type, answer, anslen) \
 			res_nsearch(res, dname, class, type, answer, anslen);
-#ifdef HAVE_RES_NDESTROY
+#if HAVE_RES_NDESTROY
 #define php_dns_free_handle(res) \
 			res_ndestroy(res); \
 			php_dns_free_res(res)
@@ -52,37 +52,16 @@
 #define HAVE_DNS_SEARCH_FUNC 1
 #endif
 
-#if defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_DN_EXPAND) && defined(HAVE_DN_SKIPNAME)
+#if HAVE_DNS_SEARCH_FUNC && HAVE_DN_EXPAND && HAVE_DN_SKIPNAME
 #define HAVE_FULL_DNS_FUNCS 1
 #endif
 
-#if defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))
-#define PHP_DNS_A      0x00000001
-#define PHP_DNS_NS     0x00000002
-#define PHP_DNS_CNAME  0x00000010
-#define PHP_DNS_SOA    0x00000020
-#define PHP_DNS_PTR    0x00000800
-#define PHP_DNS_HINFO  0x00001000
-#if !defined(PHP_WIN32)
-# define PHP_DNS_CAA    0x00002000
-#endif
-#define PHP_DNS_MX     0x00004000
-#define PHP_DNS_TXT    0x00008000
-#define PHP_DNS_A6     0x01000000
-#define PHP_DNS_SRV    0x02000000
-#define PHP_DNS_NAPTR  0x04000000
-#define PHP_DNS_AAAA   0x08000000
-#define PHP_DNS_ANY    0x10000000
+#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
+# if defined(PHP_WIN32) || HAVE_FULL_DNS_FUNCS
+PHP_MINIT_FUNCTION(dns);
+# endif
+#endif /* defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC */
 
-#if defined(PHP_WIN32)
-# define PHP_DNS_NUM_TYPES	12	/* Number of DNS Types Supported by PHP currently */
-# define PHP_DNS_ALL    (PHP_DNS_A|PHP_DNS_NS|PHP_DNS_CNAME|PHP_DNS_SOA|PHP_DNS_PTR|PHP_DNS_HINFO|PHP_DNS_MX|PHP_DNS_TXT|PHP_DNS_A6|PHP_DNS_SRV|PHP_DNS_NAPTR|PHP_DNS_AAAA)
-#else
-# define PHP_DNS_NUM_TYPES	13	/* Number of DNS Types Supported by PHP currently */
-# define PHP_DNS_ALL   (PHP_DNS_A|PHP_DNS_NS|PHP_DNS_CNAME|PHP_DNS_SOA|PHP_DNS_PTR|PHP_DNS_HINFO|PHP_DNS_CAA|PHP_DNS_MX|PHP_DNS_TXT|PHP_DNS_A6|PHP_DNS_SRV|PHP_DNS_NAPTR|PHP_DNS_AAAA)
-#endif
-#endif
-
 #ifndef INT16SZ
 #define INT16SZ		2
 #endif

Modified: trunk/MgDev/Oem/php/include/ext/standard/php_image.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/php_image.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/php_image.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -44,11 +44,13 @@
   IMAGE_FILETYPE_ICO,
   IMAGE_FILETYPE_WEBP,
   IMAGE_FILETYPE_AVIF,
-/* WHEN EXTENDING: PLEASE ALSO REGISTER IN basic_function.stub.php */
+/* WHEN EXTENDING: PLEASE ALSO REGISTER IN image.c:PHP_MINIT_FUNCTION(imagetypes) */
   IMAGE_FILETYPE_COUNT
 } image_filetype;
 /* }}} */
 
+PHP_MINIT_FUNCTION(imagetypes);
+
 PHPAPI int php_getimagetype(php_stream *stream, const char *input, char *filetype);
 
 PHPAPI char * php_image_type_to_mime_type(int image_type);

Modified: trunk/MgDev/Oem/php/include/ext/standard/php_lcg.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/php_lcg.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/php_lcg.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1 +1,38 @@
-#include "ext/random/php_random.h"
+/*
+   +----------------------------------------------------------------------+
+   | Copyright (c) The PHP Group                                          |
+   +----------------------------------------------------------------------+
+   | This source file is subject to version 3.01 of the PHP license,      |
+   | that is bundled with this package in the file LICENSE, and is        |
+   | available through the world-wide-web at the following url:           |
+   | https://www.php.net/license/3_01.txt                                 |
+   | If you did not receive a copy of the PHP license and are unable to   |
+   | obtain it through the world-wide-web, please send a note to          |
+   | license at php.net so we can mail you a copy immediately.               |
+   +----------------------------------------------------------------------+
+   | Author: Sascha Schumann <sascha at schumann.cx>                         |
+   +----------------------------------------------------------------------+
+*/
+
+#ifndef PHP_LCG_H
+#define PHP_LCG_H
+
+#include "ext/standard/basic_functions.h"
+
+typedef struct {
+	int32_t s1;
+	int32_t s2;
+	int seeded;
+} php_lcg_globals;
+
+PHPAPI double php_combined_lcg(void);
+
+PHP_MINIT_FUNCTION(lcg);
+
+#ifdef ZTS
+#define LCG(v) ZEND_TSRMG(lcg_globals_id, php_lcg_globals *, v)
+#else
+#define LCG(v) (lcg_globals.v)
+#endif
+
+#endif

Modified: trunk/MgDev/Oem/php/include/ext/standard/php_mt_rand.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/php_mt_rand.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/php_mt_rand.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1 +1,40 @@
-#include "ext/random/php_random.h"
+/*
+   +----------------------------------------------------------------------+
+   | Copyright (c) The PHP Group                                          |
+   +----------------------------------------------------------------------+
+   | This source file is subject to version 3.01 of the PHP license,      |
+   | that is bundled with this package in the file LICENSE, and is        |
+   | available through the world-wide-web at the following url:           |
+   | https://www.php.net/license/3_01.txt                                 |
+   | If you did not receive a copy of the PHP license and are unable to   |
+   | obtain it through the world-wide-web, please send a note to          |
+   | license at php.net so we can mail you a copy immediately.               |
+   +----------------------------------------------------------------------+
+   | Authors: Rasmus Lerdorf <rasmus at php.net>                             |
+   |          Zeev Suraski <zeev at php.net>                                 |
+   |          Pedro Melo <melo at ip.pt>                                     |
+   |          Sterling Hughes <sterling at php.net>                          |
+   |                                                                      |
+   | Based on code from: Shawn Cokus <Cokus at math.washington.edu>          |
+   +----------------------------------------------------------------------+
+ */
+
+#ifndef PHP_MT_RAND_H
+#define PHP_MT_RAND_H
+
+#include "php_lcg.h"
+#include "php_rand.h"
+
+#define PHP_MT_RAND_MAX ((zend_long) (0x7FFFFFFF)) /* (1<<31) - 1 */
+
+#define MT_RAND_MT19937 0
+#define MT_RAND_PHP 1
+
+PHPAPI void php_mt_srand(uint32_t seed);
+PHPAPI uint32_t php_mt_rand(void);
+PHPAPI zend_long php_mt_rand_range(zend_long min, zend_long max);
+PHPAPI zend_long php_mt_rand_common(zend_long min, zend_long max);
+
+PHP_MINIT_FUNCTION(mt_rand);
+
+#endif	/* PHP_MT_RAND_H */

Modified: trunk/MgDev/Oem/php/include/ext/standard/php_password.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/php_password.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/php_password.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -24,7 +24,7 @@
 #define PHP_PASSWORD_DEFAULT    PHP_PASSWORD_BCRYPT
 #define PHP_PASSWORD_BCRYPT_COST 10
 
-#ifdef HAVE_ARGON2LIB
+#if HAVE_ARGON2LIB
 /**
  * When updating these values, synchronize ext/sodium/sodium_pwhash.c values.
  * Note that libargon expresses memlimit in KB, while libsoidum uses bytes.
@@ -44,7 +44,7 @@
 } php_password_algo;
 
 extern const php_password_algo php_password_algo_bcrypt;
-#ifdef HAVE_ARGON2LIB
+#if HAVE_ARGON2LIB
 extern const php_password_algo php_password_algo_argon2i;
 extern const php_password_algo php_password_algo_argon2id;
 #endif

Modified: trunk/MgDev/Oem/php/include/ext/standard/php_rand.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/php_rand.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/php_rand.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1 +1,72 @@
-#include "ext/random/php_random.h"
+/*
+   +----------------------------------------------------------------------+
+   | Copyright (c) The PHP Group                                          |
+   +----------------------------------------------------------------------+
+   | This source file is subject to version 3.01 of the PHP license,      |
+   | that is bundled with this package in the file LICENSE, and is        |
+   | available through the world-wide-web at the following url:           |
+   | https://www.php.net/license/3_01.txt                                 |
+   | If you did not receive a copy of the PHP license and are unable to   |
+   | obtain it through the world-wide-web, please send a note to          |
+   | license at php.net so we can mail you a copy immediately.               |
+   +----------------------------------------------------------------------+
+   | Authors: Rasmus Lerdorf <rasmus at php.net>                             |
+   |          Zeev Suraski <zeev at php.net>                                 |
+   |          Pedro Melo <melo at ip.pt>                                     |
+   |          Sterling Hughes <sterling at php.net>                          |
+   |                                                                      |
+   | Based on code from: Shawn Cokus <Cokus at math.washington.edu>          |
+   +----------------------------------------------------------------------+
+ */
+
+#ifndef PHP_RAND_H
+#define	PHP_RAND_H
+
+#include "php_lcg.h"
+#include "php_mt_rand.h"
+
+/* System Rand functions */
+#ifndef RAND_MAX
+#define RAND_MAX PHP_MT_RAND_MAX
+#endif
+
+#define PHP_RAND_MAX PHP_MT_RAND_MAX
+
+/*
+ * A bit of tricky math here.  We want to avoid using a modulus because
+ * that simply tosses the high-order bits and might skew the distribution
+ * of random values over the range.  Instead we map the range directly.
+ *
+ * We need to map the range from 0...M evenly to the range a...b
+ * Let n = the random number and n' = the mapped random number
+ *
+ * Then we have: n' = a + n(b-a)/M
+ *
+ * We have a problem here in that only n==M will get mapped to b which
+ # means the chances of getting b is much much less than getting any of
+ # the other values in the range.  We can fix this by increasing our range
+ # artificially and using:
+ #
+ #               n' = a + n(b-a+1)/M
+ *
+ # Now we only have a problem if n==M which would cause us to produce a
+ # number of b+1 which would be bad.  So we bump M up by one to make sure
+ # this will never happen, and the final algorithm looks like this:
+ #
+ #               n' = a + n(b-a+1)/(M+1)
+ *
+ * -RL
+ */
+#define RAND_RANGE_BADSCALING(__n, __min, __max, __tmax) \
+	(__n) = (__min) + (zend_long) ((double) ( (double) (__max) - (__min) + 1.0) * ((__n) / ((__tmax) + 1.0)))
+
+#ifdef PHP_WIN32
+#define GENERATE_SEED() (((zend_long) (time(0) * GetCurrentProcessId())) ^ ((zend_long) (1000000.0 * php_combined_lcg())))
+#else
+#define GENERATE_SEED() (((zend_long) (time(0) * getpid())) ^ ((zend_long) (1000000.0 * php_combined_lcg())))
+#endif
+
+PHPAPI void php_srand(zend_long seed);
+PHPAPI zend_long php_rand(void);
+
+#endif	/* PHP_RAND_H */

Modified: trunk/MgDev/Oem/php/include/ext/standard/php_random.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/php_random.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/php_random.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1 +1,50 @@
-#include "ext/random/php_random.h"
\ No newline at end of file
+/*
+   +----------------------------------------------------------------------+
+   | Copyright (c) The PHP Group                                          |
+   +----------------------------------------------------------------------+
+   | This source file is subject to version 3.01 of the PHP license,      |
+   | that is bundled with this package in the file LICENSE, and is        |
+   | available through the world-wide-web at the following url:           |
+   | https://www.php.net/license/3_01.txt                                 |
+   | If you did not receive a copy of the PHP license and are unable to   |
+   | obtain it through the world-wide-web, please send a note to          |
+   | license at php.net so we can mail you a copy immediately.               |
+   +----------------------------------------------------------------------+
+   | Authors: Sammy Kaye Powers <me at sammyk.me>                            |
+   +----------------------------------------------------------------------+
+*/
+
+#ifndef PHP_RANDOM_H
+#define PHP_RANDOM_H
+
+BEGIN_EXTERN_C()
+
+PHP_MINIT_FUNCTION(random);
+PHP_MSHUTDOWN_FUNCTION(random);
+
+typedef struct {
+	int fd;
+} php_random_globals;
+
+#define php_random_bytes_throw(b, s) php_random_bytes((b), (s), 1)
+#define php_random_bytes_silent(b, s) php_random_bytes((b), (s), 0)
+
+#define php_random_int_throw(min, max, result) \
+	php_random_int((min), (max), (result), 1)
+#define php_random_int_silent(min, max, result) \
+	php_random_int((min), (max), (result), 0)
+
+PHPAPI int php_random_bytes(void *bytes, size_t size, bool should_throw);
+PHPAPI int php_random_int(zend_long min, zend_long max, zend_long *result, bool should_throw);
+
+#ifdef ZTS
+# define RANDOM_G(v) ZEND_TSRMG(random_globals_id, php_random_globals *, v)
+extern PHPAPI int random_globals_id;
+#else
+# define RANDOM_G(v) random_globals.v
+extern PHPAPI php_random_globals random_globals;
+#endif
+
+END_EXTERN_C()
+
+#endif

Modified: trunk/MgDev/Oem/php/include/ext/standard/php_standard.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/php_standard.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/php_standard.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -42,11 +42,13 @@
 #include "dl.h"
 #include "php_crypt.h"
 #include "head.h"
+#include "php_lcg.h"
 #include "php_output.h"
 #include "php_array.h"
 #include "php_assert.h"
 #include "php_versioning.h"
 #include "php_password.h"
+#include "php_random.h"
 
 #include "php_version.h"
 #define PHP_STANDARD_VERSION PHP_VERSION

Modified: trunk/MgDev/Oem/php/include/ext/standard/php_string.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/standard/php_string.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/standard/php_string.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -18,16 +18,14 @@
 #ifndef PHP_STRING_H
 #define PHP_STRING_H
 
-# include "ext/random/php_random.h"
-
-#ifdef ZTS
+#if defined(ZTS)
 PHP_MINIT_FUNCTION(localeconv);
 PHP_MSHUTDOWN_FUNCTION(localeconv);
 #endif
-#ifdef HAVE_NL_LANGINFO
+#if HAVE_NL_LANGINFO
 PHP_MINIT_FUNCTION(nl_langinfo);
 #endif
-#ifdef ZEND_INTRIN_SSE4_2_FUNC_PTR
+#if ZEND_INTRIN_SSE4_2_FUNC_PTR
 PHP_MINIT_FUNCTION(string_intrin);
 #endif
 
@@ -35,7 +33,7 @@
 	strnatcmp_ex(a, strlen(a), b, strlen(b), 0)
 #define strnatcasecmp(a, b) \
 	strnatcmp_ex(a, strlen(a), b, strlen(b), 1)
-PHPAPI int strnatcmp_ex(char const *a, size_t a_len, char const *b, size_t b_len, bool is_case_insensitive);
+PHPAPI int strnatcmp_ex(char const *a, size_t a_len, char const *b, size_t b_len, int fold_case);
 PHPAPI struct lconv *localeconv_r(struct lconv *out);
 PHPAPI char *php_strtoupper(char *s, size_t len);
 PHPAPI char *php_strtolower(char *s, size_t len);
@@ -65,9 +63,7 @@
 PHPAPI int string_natural_compare_function(zval *result, zval *op1, zval *op2);
 PHPAPI int string_natural_case_compare_function(zval *result, zval *op1, zval *op2);
 
-PHPAPI bool php_binary_string_shuffle(const php_random_algo *algo, php_random_status *status, char *str, zend_long len);
-
-#ifdef _REENTRANT
+#if defined(_REENTRANT)
 # ifdef PHP_WIN32
 #  include <wchar.h>
 # endif
@@ -78,16 +74,6 @@
 # define php_mb_reset() php_ignore_value(mblen(NULL, 0))
 #endif
 
-#define PHP_STR_PAD_LEFT		0
-#define PHP_STR_PAD_RIGHT		1
-#define PHP_STR_PAD_BOTH		2
-#define PHP_PATHINFO_DIRNAME 	1
-#define PHP_PATHINFO_BASENAME 	2
-#define PHP_PATHINFO_EXTENSION 	4
-#define PHP_PATHINFO_FILENAME 	8
-#define PHP_PATHINFO_ALL	(PHP_PATHINFO_DIRNAME | PHP_PATHINFO_BASENAME | PHP_PATHINFO_EXTENSION | PHP_PATHINFO_FILENAME)
+void register_string_constants(INIT_FUNC_ARGS);
 
-#define PHP_STR_STRSPN			0
-#define PHP_STR_STRCSPN			1
-
 #endif /* PHP_STRING_H */

Modified: trunk/MgDev/Oem/php/include/ext/xml/php_xml.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/xml/php_xml.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/xml/php_xml.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -39,11 +39,4 @@
 
 #define phpext_xml_ptr xml_module_ptr
 
-enum php_xml_option {
-	PHP_XML_OPTION_CASE_FOLDING = 1,
-	PHP_XML_OPTION_TARGET_ENCODING,
-	PHP_XML_OPTION_SKIP_TAGSTART,
-	PHP_XML_OPTION_SKIP_WHITE
-};
-
 #endif /* PHP_XML_H */

Modified: trunk/MgDev/Oem/php/include/ext/xml/xml_arginfo.h
===================================================================
--- trunk/MgDev/Oem/php/include/ext/xml/xml_arginfo.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/ext/xml/xml_arginfo.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 97ce33bf2fbe970f7ca1c1845fbf5063dbd118dd */
+ * Stub hash: 19ecc0e3b7a82f8b992a311788919154cdb28a5d */
 
 ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_xml_parser_create, 0, 0, XMLParser, 0)
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, encoding, IS_STRING, 1, "null")
@@ -10,18 +10,18 @@
 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, separator, IS_STRING, 0, "\":\"")
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_xml_set_object, 0, 2, IS_TRUE, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_xml_set_object, 0, 2, _IS_BOOL, 0)
 	ZEND_ARG_OBJ_INFO(0, parser, XMLParser, 0)
 	ZEND_ARG_TYPE_INFO(0, object, IS_OBJECT, 0)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_xml_set_element_handler, 0, 3, IS_TRUE, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_xml_set_element_handler, 0, 3, _IS_BOOL, 0)
 	ZEND_ARG_OBJ_INFO(0, parser, XMLParser, 0)
 	ZEND_ARG_INFO(0, start_handler)
 	ZEND_ARG_INFO(0, end_handler)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_xml_set_character_data_handler, 0, 2, IS_TRUE, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_xml_set_character_data_handler, 0, 2, _IS_BOOL, 0)
 	ZEND_ARG_OBJ_INFO(0, parser, XMLParser, 0)
 	ZEND_ARG_INFO(0, handler)
 ZEND_END_ARG_INFO()
@@ -138,36 +138,6 @@
 	ZEND_FE_END
 };
 
-static void register_xml_symbols(int module_number)
-{
-	REGISTER_LONG_CONSTANT("XML_ERROR_NONE", XML_ERROR_NONE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_NO_MEMORY", XML_ERROR_NO_MEMORY, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_SYNTAX", XML_ERROR_SYNTAX, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_NO_ELEMENTS", XML_ERROR_NO_ELEMENTS, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_INVALID_TOKEN", XML_ERROR_INVALID_TOKEN, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_UNCLOSED_TOKEN", XML_ERROR_UNCLOSED_TOKEN, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_PARTIAL_CHAR", XML_ERROR_PARTIAL_CHAR, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_TAG_MISMATCH", XML_ERROR_TAG_MISMATCH, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_DUPLICATE_ATTRIBUTE", XML_ERROR_DUPLICATE_ATTRIBUTE, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_JUNK_AFTER_DOC_ELEMENT", XML_ERROR_JUNK_AFTER_DOC_ELEMENT, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_PARAM_ENTITY_REF", XML_ERROR_PARAM_ENTITY_REF, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_UNDEFINED_ENTITY", XML_ERROR_UNDEFINED_ENTITY, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_RECURSIVE_ENTITY_REF", XML_ERROR_RECURSIVE_ENTITY_REF, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_ASYNC_ENTITY", XML_ERROR_ASYNC_ENTITY, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_BAD_CHAR_REF", XML_ERROR_BAD_CHAR_REF, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_BINARY_ENTITY_REF", XML_ERROR_BINARY_ENTITY_REF, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF", XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_MISPLACED_XML_PI", XML_ERROR_MISPLACED_XML_PI, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_UNKNOWN_ENCODING", XML_ERROR_UNKNOWN_ENCODING, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_INCORRECT_ENCODING", XML_ERROR_INCORRECT_ENCODING, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_UNCLOSED_CDATA_SECTION", XML_ERROR_UNCLOSED_CDATA_SECTION, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_ERROR_EXTERNAL_ENTITY_HANDLING", XML_ERROR_EXTERNAL_ENTITY_HANDLING, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_OPTION_CASE_FOLDING", PHP_XML_OPTION_CASE_FOLDING, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_OPTION_TARGET_ENCODING", PHP_XML_OPTION_TARGET_ENCODING, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_OPTION_SKIP_TAGSTART", PHP_XML_OPTION_SKIP_TAGSTART, CONST_PERSISTENT);
-	REGISTER_LONG_CONSTANT("XML_OPTION_SKIP_WHITE", PHP_XML_OPTION_SKIP_WHITE, CONST_PERSISTENT);
-}
-
 static zend_class_entry *register_class_XMLParser(void)
 {
 	zend_class_entry ce, *class_entry;

Modified: trunk/MgDev/Oem/php/include/main/SAPI.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/SAPI.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/main/SAPI.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -238,7 +238,7 @@
 
 	void (*register_server_variables)(zval *track_vars_array);
 	void (*log_message)(const char *message, int syslog_type_int);
-	zend_result (*get_request_time)(double *request_time);
+	double (*get_request_time)(void);
 	void (*terminate_process)(void);
 
 	char *php_ini_path_override;

Modified: trunk/MgDev/Oem/php/include/main/config.w32.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/config.w32.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/main/config.w32.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -27,10 +27,6 @@
 #define DEFAULT_SHORT_OPEN_TAG "1"
 
 /* Platform-Specific Configuration. Should not be changed. */
-/* Alignment for Zend memory allocator */
-#define ZEND_MM_ALIGNMENT (size_t)8
-#define ZEND_MM_ALIGNMENT_LOG2 (size_t)3
-#define ZEND_MM_NEED_EIGHT_BYTE_REALIGNMENT 0
 #define PHP_SIGCHILD 0
 #define HAVE_GETSERVBYNAME 1
 #define HAVE_GETSERVBYPORT 1
@@ -449,6 +445,12 @@
 #define HAVE_EXIF 1
 
 /* Using MySQL native driver */
+#define MYSQLI_USE_MYSQLND 1
+
+/* Have MySQLi library */
+#define HAVE_MYSQLILIB 1
+
+/* Using MySQL native driver */
 #define PDO_USE_MYSQLND 1
 
 /* Have PostgreSQL library */

Modified: trunk/MgDev/Oem/php/include/main/php.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/php.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/main/php.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -22,7 +22,7 @@
 #include <dmalloc.h>
 #endif
 
-#define PHP_API_VERSION 20220829
+#define PHP_API_VERSION 20210902
 #define PHP_HAVE_STREAMS
 #define YYDEBUG 0
 #define PHP_DEFAULT_CHARSET "UTF-8"
@@ -183,10 +183,6 @@
 #define explicit_bzero php_explicit_bzero
 #endif
 
-BEGIN_EXTERN_C()
-PHPAPI int php_safe_bcmp(const zend_string *a, const zend_string *b);
-END_EXTERN_C()
-
 #ifndef HAVE_STRTOK_R
 BEGIN_EXTERN_C()
 char *strtok_r(char *s, const char *delim, char **last);
@@ -219,6 +215,8 @@
 
 #include <stdarg.h>
 
+#include "php_stdint.h"
+
 #include "zend_hash.h"
 #include "zend_alloc.h"
 #include "zend_stack.h"
@@ -303,9 +301,9 @@
 PHPAPI size_t php_write(void *buf, size_t size);
 PHPAPI size_t php_printf(const char *format, ...) PHP_ATTRIBUTE_FORMAT(printf, 1, 2);
 PHPAPI size_t php_printf_unchecked(const char *format, ...);
-PHPAPI bool php_during_module_startup(void);
-PHPAPI bool php_during_module_shutdown(void);
-PHPAPI bool php_get_module_initialized(void);
+PHPAPI int php_during_module_startup(void);
+PHPAPI int php_during_module_shutdown(void);
+PHPAPI int php_get_module_initialized(void);
 #ifdef HAVE_SYSLOG_H
 #include "php_syslog.h"
 #define php_log_err(msg) php_log_err_with_severity(msg, LOG_NOTICE)
@@ -350,7 +348,6 @@
 #define phpin zendin
 
 #define php_memnstr zend_memnstr
-#define php_memnistr zend_memnistr
 
 /* functions */
 BEGIN_EXTERN_C()

Modified: trunk/MgDev/Oem/php/include/main/php_globals.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/php_globals.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/main/php_globals.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -153,7 +153,6 @@
 	char *request_order;
 
 	bool mail_x_header;
-	bool mail_mixed_lf_and_crlf;
 	char *mail_log;
 
 	bool in_error_log;
@@ -166,7 +165,6 @@
 	char *syslog_ident;
 	bool have_called_openlog;
 	zend_long syslog_filter;
-	zend_long error_log_mode;
 };
 
 

Deleted: trunk/MgDev/Oem/php/include/main/php_ini_builder.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/php_ini_builder.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/main/php_ini_builder.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,95 +0,0 @@
-/*
-   +----------------------------------------------------------------------+
-   | Copyright (c) The PHP Group                                          |
-   +----------------------------------------------------------------------+
-   | This source file is subject to version 3.01 of the PHP license,      |
-   | that is bundled with this package in the file LICENSE, and is        |
-   | available through the world-wide-web at the following url:           |
-   | https://www.php.net/license/3_01.txt                                 |
-   | If you did not receive a copy of the PHP license and are unable to   |
-   | obtain it through the world-wide-web, please send a note to          |
-   | license at php.net so we can mail you a copy immediately.               |
-   +----------------------------------------------------------------------+
-   | Authors: Max Kellermann <max.kellermann at ionos.com>                   |
-   +----------------------------------------------------------------------+
-*/
-
-#ifndef PHP_INI_BUILDER_H
-#define PHP_INI_BUILDER_H
-
-#include "php.h"
-
-/**
- * A class which helps with constructing INI entries from the command
- * line.
- */
-struct php_ini_builder {
-	char *value;
-	size_t length;
-};
-
-BEGIN_EXTERN_C()
-
-static inline void php_ini_builder_init(struct php_ini_builder *b)
-{
-	b->value = NULL;
-	b->length = 0;
-}
-
-static inline void php_ini_builder_deinit(struct php_ini_builder *b)
-{
-	free(b->value);
-}
-
-/**
- * Null-terminate the buffer and return it.
- */
-static inline char *php_ini_builder_finish(struct php_ini_builder *b)
-{
-	if (b->value != NULL) {
-		/* null-terminate the string */
-		b->value[b->length] = '\0';
-	}
-
-	return b->value;
-}
-
-/**
- * Make room for more data.
- *
- * @param delta the number of bytes to be appended
- */
-static inline void php_ini_builder_realloc(struct php_ini_builder *b, size_t delta)
-{
-	/* reserve enough space for the null terminator */
-	b->value = realloc(b->value, b->length + delta + 1);
-}
-
-/**
- * Prepend a string.
- *
- * @param src the source string
- * @param length the size of the source string
- */
-PHPAPI void php_ini_builder_prepend(struct php_ini_builder *b, const char *src, size_t length);
-
-#define php_ini_builder_prepend_literal(b, l) php_ini_builder_prepend(b, l, strlen(l))
-
-/**
- * Append an unquoted name/value pair.
- */
-PHPAPI void php_ini_builder_unquoted(struct php_ini_builder *b, const char *name, size_t name_length, const char *value, size_t value_length);
-
-/**
- * Append a quoted name/value pair.
- */
-PHPAPI void php_ini_builder_quoted(struct php_ini_builder *b, const char *name, size_t name_length, const char *value, size_t value_length);
-
-/**
- * Parse an INI entry from the command-line option "--define".
- */
-PHPAPI void php_ini_builder_define(struct php_ini_builder *b, const char *arg);
-
-END_EXTERN_C()
-
-#endif

Modified: trunk/MgDev/Oem/php/include/main/php_main.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/php_main.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/main/php_main.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -23,23 +23,24 @@
 #include "SAPI.h"
 
 BEGIN_EXTERN_C()
-PHPAPI zend_result php_request_startup(void);
+PHPAPI int php_request_startup(void);
 PHPAPI void php_request_shutdown(void *dummy);
-PHPAPI zend_result php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_module);
+PHPAPI int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_modules, uint32_t num_additional_modules);
 PHPAPI void php_module_shutdown(void);
 PHPAPI int php_module_shutdown_wrapper(sapi_module_struct *sapi_globals);
 
-PHPAPI zend_result php_register_extensions(zend_module_entry * const * ptr, int count);
+PHPAPI int php_register_extensions(zend_module_entry * const * ptr, int count);
 
-PHPAPI bool php_execute_script(zend_file_handle *primary_file);
+PHPAPI int php_execute_script(zend_file_handle *primary_file);
 PHPAPI int php_execute_simple_script(zend_file_handle *primary_file, zval *ret);
-PHPAPI zend_result php_lint_script(zend_file_handle *file);
+PHPAPI int php_handle_special_queries(void);
+PHPAPI int php_lint_script(zend_file_handle *file);
 
 PHPAPI void php_handle_aborted_connection(void);
 PHPAPI int php_handle_auth_data(const char *auth);
 
 PHPAPI void php_html_puts(const char *str, size_t siz);
-PHPAPI zend_result php_stream_open_for_zend_ex(zend_file_handle *handle, int mode);
+PHPAPI int php_stream_open_for_zend_ex(zend_file_handle *handle, int mode);
 
 /* environment module */
 extern int php_init_environ(void);
@@ -47,7 +48,7 @@
 
 #ifdef ZTS
 PHPAPI void php_reserve_tsrm_memory(void);
-PHPAPI bool php_tsrm_startup(void);
+PHPAPI int php_tsrm_startup(void);
 #endif
 
 END_EXTERN_C()

Deleted: trunk/MgDev/Oem/php/include/main/php_odbc_utils.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/php_odbc_utils.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/main/php_odbc_utils.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,22 +0,0 @@
-/*
-   +----------------------------------------------------------------------+
-   | Copyright (c) The PHP Group                                          |
-   +----------------------------------------------------------------------+
-   | This source file is subject to version 3.01 of the PHP license,      |
-   | that is bundled with this package in the file LICENSE, and is        |
-   | available through the world-wide-web at the following url:           |
-   | https://www.php.net/license/3_01.txt                                 |
-   | If you did not receive a copy of the PHP license and are unable to   |
-   | obtain it through the world-wide-web, please send a note to          |
-   | license at php.net so we can mail you a copy immediately.               |
-   +----------------------------------------------------------------------+
-   | Authors: Calvin Buckley <calvin at cmpct.info>                          |
-   +----------------------------------------------------------------------+
-*/
-
-#include "php.h"
-
-PHPAPI bool php_odbc_connstr_is_quoted(const char *str);
-PHPAPI bool php_odbc_connstr_should_quote(const char *str);
-PHPAPI size_t php_odbc_connstr_estimate_quote_length(const char *in_str);
-PHPAPI size_t php_odbc_connstr_quote(char *out_str, const char *in_str, size_t out_str_size);

Modified: trunk/MgDev/Oem/php/include/main/php_output.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/php_output.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/main/php_output.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -241,4 +241,22 @@
 
 END_EXTERN_C()
 
+
+PHP_FUNCTION(ob_start);
+PHP_FUNCTION(ob_flush);
+PHP_FUNCTION(ob_clean);
+PHP_FUNCTION(ob_end_flush);
+PHP_FUNCTION(ob_end_clean);
+PHP_FUNCTION(ob_get_flush);
+PHP_FUNCTION(ob_get_clean);
+PHP_FUNCTION(ob_get_contents);
+PHP_FUNCTION(ob_get_length);
+PHP_FUNCTION(ob_get_level);
+PHP_FUNCTION(ob_get_status);
+PHP_FUNCTION(ob_implicit_flush);
+PHP_FUNCTION(ob_list_handlers);
+
+PHP_FUNCTION(output_add_rewrite_var);
+PHP_FUNCTION(output_reset_rewrite_vars);
+
 #endif

Added: trunk/MgDev/Oem/php/include/main/php_stdint.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/php_stdint.h	                        (rev 0)
+++ trunk/MgDev/Oem/php/include/main/php_stdint.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -0,0 +1,51 @@
+/*
+   +----------------------------------------------------------------------+
+   | Copyright (c) The PHP Group                                          |
+   +----------------------------------------------------------------------+
+   | This source file is subject to version 3.01 of the PHP license,      |
+   | that is bundled with this package in the file LICENSE, and is        |
+   | available through the world-wide-web at the following url:           |
+   | https://www.php.net/license/3_01.txt                                 |
+   | If you did not receive a copy of the PHP license and are unable to   |
+   | obtain it through the world-wide-web, please send a note to          |
+   | license at php.net so we can mail you a copy immediately.               |
+   +----------------------------------------------------------------------+
+   | Author: Michael Wallner <mike at php.net>                               |
+   +----------------------------------------------------------------------+
+*/
+
+#ifndef PHP_STDINT_H
+#define PHP_STDINT_H
+
+/* C99 requires these for C++ to get the definitions
+ * of INT64_MAX and other macros used by Zend/zend_long.h
+ * C11 drops this requirement, so these effectively
+ * just backport that piece of behavior.
+ *
+ * These defines are placed here instead of
+ * with the include below, because sys/types
+ * and inttypes may include stdint themselves.
+ * And these definitions MUST come first.
+ */
+#ifdef __cplusplus
+# ifndef __STDC_LIMIT_MACROS
+#  define __STDC_LIMIT_MACROS
+# endif
+# ifndef __STDC_CONSTANT_MACROS
+#  define __STDC_CONSTANT_MACROS
+# endif
+# ifndef __STDC_FORMAT_MACROS
+#  define __STDC_FORMAT_MACROS
+# endif
+#endif
+
+#include <inttypes.h>
+#include <stdint.h>
+
+#if defined(_MSC_VER)
+# ifndef u_char
+typedef unsigned __int8   u_char;
+# endif
+#endif /* !_MSC_VER */
+
+#endif /* PHP_STDINT_H */

Modified: trunk/MgDev/Oem/php/include/main/php_streams.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/php_streams.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/main/php_streams.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -65,7 +65,7 @@
 
 #define php_stream_fopen_with_path_rel(filename, mode, path, opened, options) _php_stream_fopen_with_path((filename), (mode), (path), (opened), (options) STREAMS_REL_CC)
 
-#define php_stream_fopen_from_fd_rel(fd, mode, persistent_id, zero_position)	 _php_stream_fopen_from_fd((fd), (mode), (persistent_id), (zero_position) STREAMS_REL_CC)
+#define php_stream_fopen_from_fd_rel(fd, mode, persistent_id)	 _php_stream_fopen_from_fd((fd), (mode), (persistent_id) STREAMS_REL_CC)
 #define php_stream_fopen_from_file_rel(file, mode)	 _php_stream_fopen_from_file((file), (mode) STREAMS_REL_CC)
 
 #define php_stream_fopen_from_pipe_rel(file, mode)	 _php_stream_fopen_from_pipe((file), (mode) STREAMS_REL_CC)
@@ -185,9 +185,6 @@
  * Currently for internal use only. */
 #define PHP_STREAM_FLAG_SUPPRESS_ERRORS				0x100
 
-/* Do not close handle except it is explicitly closed by user (e.g. fclose) */
-#define PHP_STREAM_FLAG_NO_RSCR_DTOR_CLOSE			0x200
-
 #define PHP_STREAM_FLAG_WAS_WRITTEN					0x80000000
 
 struct _php_stream  {
@@ -317,7 +314,7 @@
 #define php_stream_write_string(stream, str)	_php_stream_write(stream, str, strlen(str))
 #define php_stream_write(stream, buf, count)	_php_stream_write(stream, (buf), (count))
 
-PHPAPI zend_result _php_stream_fill_read_buffer(php_stream *stream, size_t size);
+PHPAPI int _php_stream_fill_read_buffer(php_stream *stream, size_t size);
 #define php_stream_fill_read_buffer(stream, size)	_php_stream_fill_read_buffer((stream), (size))
 
 PHPAPI ssize_t _php_stream_printf(php_stream *stream, const char *fmt, ...) PHP_ATTRIBUTE_FORMAT(printf, 2, 3);
@@ -325,7 +322,7 @@
 /* php_stream_printf macro & function require */
 #define php_stream_printf _php_stream_printf
 
-PHPAPI bool _php_stream_eof(php_stream *stream);
+PHPAPI int _php_stream_eof(php_stream *stream);
 #define php_stream_eof(stream)	_php_stream_eof((stream))
 
 PHPAPI int _php_stream_getc(php_stream *stream);
@@ -346,8 +343,8 @@
 #define php_stream_get_line(stream, buf, maxlen, retlen) _php_stream_get_line((stream), (buf), (maxlen), (retlen))
 PHPAPI zend_string *php_stream_get_record(php_stream *stream, size_t maxlen, const char *delim, size_t delim_len);
 
-/* Returns true if buffer has been appended, false on error */
-PHPAPI bool _php_stream_puts(php_stream *stream, const char *buf);
+/* CAREFUL! this is equivalent to puts NOT fputs! */
+PHPAPI int _php_stream_puts(php_stream *stream, const char *buf);
 #define php_stream_puts(stream, buf)	_php_stream_puts((stream), (buf))
 
 PHPAPI int _php_stream_stat(php_stream *stream, php_stream_statbuf *ssb);
@@ -469,7 +466,7 @@
 ZEND_ATTRIBUTE_DEPRECATED
 PHPAPI size_t _php_stream_copy_to_stream(php_stream *src, php_stream *dest, size_t maxlen STREAMS_DC);
 #define php_stream_copy_to_stream(src, dest, maxlen)	_php_stream_copy_to_stream((src), (dest), (maxlen) STREAMS_CC)
-PHPAPI zend_result _php_stream_copy_to_stream_ex(php_stream *src, php_stream *dest, size_t maxlen, size_t *len STREAMS_DC);
+PHPAPI int _php_stream_copy_to_stream_ex(php_stream *src, php_stream *dest, size_t maxlen, size_t *len STREAMS_DC);
 #define php_stream_copy_to_stream_ex(src, dest, maxlen, len)	_php_stream_copy_to_stream_ex((src), (dest), (maxlen), (len) STREAMS_CC)
 
 
@@ -571,15 +568,15 @@
 #define STREAM_OPEN_FOR_ZEND_STREAM     0x00010000
 
 int php_init_stream_wrappers(int module_number);
-void php_shutdown_stream_wrappers(int module_number);
+int php_shutdown_stream_wrappers(int module_number);
 void php_shutdown_stream_hashes(void);
 PHP_RSHUTDOWN_FUNCTION(streams);
 
 BEGIN_EXTERN_C()
-PHPAPI zend_result php_register_url_stream_wrapper(const char *protocol, const php_stream_wrapper *wrapper);
-PHPAPI zend_result php_unregister_url_stream_wrapper(const char *protocol);
-PHPAPI zend_result php_register_url_stream_wrapper_volatile(zend_string *protocol, php_stream_wrapper *wrapper);
-PHPAPI zend_result php_unregister_url_stream_wrapper_volatile(zend_string *protocol);
+PHPAPI int php_register_url_stream_wrapper(const char *protocol, const php_stream_wrapper *wrapper);
+PHPAPI int php_unregister_url_stream_wrapper(const char *protocol);
+PHPAPI int php_register_url_stream_wrapper_volatile(zend_string *protocol, php_stream_wrapper *wrapper);
+PHPAPI int php_unregister_url_stream_wrapper_volatile(zend_string *protocol);
 PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC);
 PHPAPI php_stream_wrapper *php_stream_locate_url_wrapper(const char *path, const char **path_for_open, int options);
 PHPAPI const char *php_stream_locate_eol(php_stream *stream, zend_string *buf);

Modified: trunk/MgDev/Oem/php/include/main/php_variables.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/php_variables.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/main/php_variables.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -36,7 +36,6 @@
 /* binary-safe version */
 PHPAPI void php_register_variable_safe(const char *var, const char *val, size_t val_len, zval *track_vars_array);
 PHPAPI void php_register_variable_ex(const char *var, zval *val, zval *track_vars_array);
-PHPAPI void php_register_known_variable(const char *var, size_t var_len, zval *value, zval *track_vars_array);
 
 PHPAPI void php_build_argv(const char *s, zval *track_vars_array);
 PHPAPI int php_hash_environment(void);

Modified: trunk/MgDev/Oem/php/include/main/php_version.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/php_version.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/main/php_version.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -1,8 +1,8 @@
 /* automatically generated by configure */
 /* edit configure.ac to change version number */
 #define PHP_MAJOR_VERSION 8
-#define PHP_MINOR_VERSION 2
-#define PHP_RELEASE_VERSION 4
+#define PHP_MINOR_VERSION 1
+#define PHP_RELEASE_VERSION 17
 #define PHP_EXTRA_VERSION ""
-#define PHP_VERSION "8.2.4"
-#define PHP_VERSION_ID 80204
+#define PHP_VERSION "8.1.17"
+#define PHP_VERSION_ID 80117

Modified: trunk/MgDev/Oem/php/include/main/streams/php_stream_context.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/streams/php_stream_context.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/main/streams/php_stream_context.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -57,7 +57,7 @@
 PHPAPI php_stream_context *php_stream_context_alloc(void);
 PHPAPI zval *php_stream_context_get_option(php_stream_context *context,
 		const char *wrappername, const char *optionname);
-PHPAPI void php_stream_context_set_option(php_stream_context *context,
+PHPAPI int php_stream_context_set_option(php_stream_context *context,
 		const char *wrappername, const char *optionname, zval *optionvalue);
 
 PHPAPI php_stream_notifier *php_stream_notification_alloc(void);

Modified: trunk/MgDev/Oem/php/include/main/streams/php_stream_plain_wrapper.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/streams/php_stream_plain_wrapper.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/main/streams/php_stream_plain_wrapper.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -32,8 +32,8 @@
 PHPAPI php_stream *_php_stream_fopen_from_file(FILE *file, const char *mode STREAMS_DC);
 #define php_stream_fopen_from_file(file, mode)	_php_stream_fopen_from_file((file), (mode) STREAMS_CC)
 
-PHPAPI php_stream *_php_stream_fopen_from_fd(int fd, const char *mode, const char *persistent_id, bool zero_position STREAMS_DC);
-#define php_stream_fopen_from_fd(fd, mode, persistent_id)	_php_stream_fopen_from_fd((fd), (mode), (persistent_id), false STREAMS_CC)
+PHPAPI php_stream *_php_stream_fopen_from_fd(int fd, const char *mode, const char *persistent_id STREAMS_DC);
+#define php_stream_fopen_from_fd(fd, mode, persistent_id)	_php_stream_fopen_from_fd((fd), (mode), (persistent_id) STREAMS_CC)
 
 PHPAPI php_stream *_php_stream_fopen_from_pipe(FILE *file, const char *mode STREAMS_DC);
 #define php_stream_fopen_from_pipe(file, mode)	_php_stream_fopen_from_pipe((file), (mode) STREAMS_CC)

Modified: trunk/MgDev/Oem/php/include/main/streams/php_streams_int.h
===================================================================
--- trunk/MgDev/Oem/php/include/main/streams/php_streams_int.h	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/include/main/streams/php_streams_int.h	2023-03-28 14:50:37 UTC (rev 10039)
@@ -60,3 +60,6 @@
  * any other function that expects standard modes and you allow non-standard
  * ones. result should be a char[5]. */
 void php_stream_mode_sanitize_fdopen_fopencookie(php_stream *stream, char *result);
+
+void php_stream_tidy_wrapper_error_log(php_stream_wrapper *wrapper);
+void php_stream_display_wrapper_errors(php_stream_wrapper *wrapper, const char *path, const char *caption);

Modified: trunk/MgDev/Oem/php/lib/php8.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_bz2.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_com_dotnet.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_curl.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_dba.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_dl_test.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_enchant.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_exif.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_ffi.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_fileinfo.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_ftp.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_gd.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_gettext.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_gmp.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_imap.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_intl.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_ldap.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_mbstring.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_mysqli.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_oci8_19.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_odbc.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_opcache.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_openssl.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_pdo_firebird.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_pdo_mysql.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_pdo_oci.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_pdo_odbc.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_pdo_pgsql.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_pdo_sqlite.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_pgsql.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_shmop.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_snmp.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_soap.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_sockets.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_sodium.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_sqlite3.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_sysvshm.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_tidy.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_xsl.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/lib/php_zend_test.lib
===================================================================
(Binary files differ)

Deleted: trunk/MgDev/Oem/php/lib/php_zip.lib
===================================================================
(Binary files differ)

Modified: trunk/MgDev/Oem/php/script/Makefile.phpize
===================================================================
--- trunk/MgDev/Oem/php/script/Makefile.phpize	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/script/Makefile.phpize	2023-03-28 14:50:37 UTC (rev 10039)
@@ -42,20 +42,12 @@
 _EXTENSION_DLL=$(EXT_TARGETS)
 !endif
 
-!if $(PHP_TEST_INI_PATH) == ""
 test: set-tmp-env
-	$(DEBUGGER_CMD) $(DEBUGGER_ARGS) "$(PHP_PREFIX)\php.exe" -d open_basedir= -d output_buffering=0 run-tests.php -p "$(PHP_PREFIX)\php.exe" -d extension=$(BUILD_DIR)\$(_EXTENSION_DLL) $(TESTS)
+	$(DEBUGGER_CMD) $(DEBUGGER_ARGS) "$(PHP_PREFIX)\php.exe" -d open_basedir= -d output_buffering=0 run-tests.php $(TESTS) -p "$(PHP_PREFIX)\php.exe" -d extension=$(BUILD_DIR)\$(_EXTENSION_DLL)
 
 run: set-tmp-env
 	$(DEBUGGER_CMD) $(DEBUGGER_ARGS) "$(PHP_PREFIX)\php.exe" -n -d extension=$(BUILD_DIR)\\$(_EXTENSION_DLL) $(ARGS)
-!else
-test: set-tmp-env
-	$(DEBUGGER_CMD) $(DEBUGGER_ARGS) "$(PHP_PREFIX)\php.exe" -n -d open_basedir= -d output_buffering=0 -d memory_limit=-1 run-tests.php -p "$(PHP_PREFIX)\php.exe" -n -c $(PHP_TEST_INI_PATH) $(TESTS)
 
-run: set-tmp-env
-	$(DEBUGGER_CMD) $(DEBUGGER_ARGS) "$(PHP_PREFIX)\php.exe" -n -c $(PHP_TEST_INI_PATH) $(ARGS)
-!endif
-
 !if $(MT) == ""
 _VC_MANIFEST_EMBED_EXE=
 _VC_MANIFEST_EMBED_DLL=

Modified: trunk/MgDev/Oem/php/script/config.w32.phpize.in
===================================================================
--- trunk/MgDev/Oem/php/script/config.w32.phpize.in	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/script/config.w32.phpize.in	2023-03-28 14:50:37 UTC (rev 10039)
@@ -14,10 +14,8 @@
 
 toolset_setup_compiler();
 
-HOST_ARCH = toolset_host_arch();
-TARGET_ARCH = toolset_target_arch();
-// for compatible only
-X64 = TARGET_ARCH != 'x86';
+// do we use x64 or 80x86 version of compiler?
+X64 = toolset_is_64();
 toolset_setup_arch();
 
 toolset_setup_linker();
@@ -130,12 +128,6 @@
 ARG_WITH("codegen-arch", "Architecture for code generation", "no");
 toolset_setup_codegen_arch();
 
-ARG_ENABLE("test-ini", "Enable automatic php.ini generation. The test.ini will be put \
-		into the build dir and used to automatically load the shared extensions.", "no");
-
-ARG_WITH("test-ini-ext-exclude", "Comma separated list of shared extensions to \
-		be excluded from the test.ini", "no");
-
 ARG_ENABLE("native-intrinsics", "Comma separated list of intrinsic optimizations to enable. \
 	Available optimization names are sse, sse2, sse3, ssse3, sse4.1, sse4.2, avx, avx2. \
 	SSE and SSE2 are enabled by default. The best optimization specified will \

Modified: trunk/MgDev/Oem/php/script/confutils.js
===================================================================
--- trunk/MgDev/Oem/php/script/confutils.js	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/script/confutils.js	2023-03-28 14:50:37 UTC (rev 10039)
@@ -95,10 +95,10 @@
 if (!MODE_PHPIZE) {
 	/* defaults; we pick up the precise versions from configure.ac */
 	var PHP_VERSION = 8;
-	var PHP_MINOR_VERSION = 2;
+	var PHP_MINOR_VERSION = 1;
 	var PHP_RELEASE_VERSION = 0;
 	var PHP_EXTRA_VERSION = "";
-	var PHP_VERSION_STRING = "8.2.0";
+	var PHP_VERSION_STRING = "8.1.0";
 }
 
 /* Get version numbers and DEFINE as a string */
@@ -168,13 +168,9 @@
 	}
 	var version = execute(command + '" 2>&1"');
 
-	if (what == "arch") {
-		if (version.match(/x86/)) {
-			return "x86";
-		} else if (version.match(/x64/)) {
-			return "x64";
-		} else if (version.match(/ARM64/)) {
-			return "arm64";
+	if (what == "64") {
+		if (version.match(/x64/)) {
+			return 1;
 		}
 	} else {
 		if (version.match(/(\d+\.\d+(\.\d+)?(\.\d+)?)/)) {
@@ -454,9 +450,14 @@
 	}
 
 	var snapshot_build_exclusions = new Array(
-		'debug', 'lzf-better-compression', 'php-build', 'snapshot-template', 'zts',
-		'ipv6', 'fd-setsize', 'pgi', 'pgo', 'all-shared', 'config-profile', 'sanitizer'
-	);
+		'debug', 'lzf-better-compression',
+		 'php-build', 'snapshot-template', 'ereg',
+		 'pcre-regex', 'fastcgi', 'force-cgi-redirect',
+		 'path-info-check', 'zts', 'ipv6', 'memory-limit',
+		 'zend-multibyte', 'fd-setsize', 'memory-manager',
+		 'pgi', 'pgo', 'all-shared', 'config-profile',
+		 'sanitizer'
+		);
 	var force;
 
 	// Now set any defaults we might have missed out earlier
@@ -1076,7 +1077,7 @@
 	var thanks = "";
 	var logo = "";
 	var debug = "";
-	var project_url = "https://www.php.net";
+	var project_url = "http://www.php.net";
 	var project_header = creditspath + "/php_" + basename + ".h";
 	var versioning = "";
 
@@ -1097,7 +1098,7 @@
 		if (thanks == null) {
 			thanks = "";
 		} else {
-			thanks = "Thanks to " + thanks.replace(/([<>&|%])/g, "^$1").replace(/"/g, '\\"\\"');
+			thanks = "Thanks to " + thanks;
 		}
 		credits.Close();
 	}
@@ -1104,7 +1105,7 @@
 
 	if (creditspath.match(new RegExp("pecl"))) {
 		/* PECL project url - this will eventually work correctly for all */
-		project_url = "https://pecl.php.net/" + basename;
+		project_url = "http://pecl.php.net/" + basename;
 
 		/* keep independent versioning PECL-specific for now */
 		if (FSO.FileExists(project_header)) {
@@ -1669,7 +1670,7 @@
 		}
 
 		if (PHP_ANALYZER == "clang") {
-			var analyzer_base_args = TARGET_ARCH == 'x86' ? "-m32" : "-m64";
+			var analyzer_base_args = X64 ? "-m64" : "-m32";
 			var analyzer_base_flags = "";
 
 			analyzer_base_args += " --analyze";
@@ -1692,14 +1693,10 @@
 				analyzer_base_flags += " -D _MSC_VER=" + probe_binary(PATH_PROG('cl', null));
 			}
 
-			if (TARGET_ARCH == 'x64') {
+			if (X64) {
 				analyzer_base_flags += " -D _M_X64 -D _WIN64";
-			} else if (TARGET_ARCH == 'ARM64') {
-				analyzer_base_flags += " -D _M_ARM64 -D _WIN64";
-			} else if (TARGET_ARCH == 'x86') {
+			} else {
 				analyzer_base_flags += " -D _M_IX86 ";
-			} else {
-				ERROR("analyzer is not supported at arch " + TARGET_ARCH);
 			}
 			analyzer_base_flags += " -D _WIN32 -D WIN32 -D _WINDOWS";
 
@@ -1711,8 +1708,8 @@
 				analyzer_base_flags += " -I " + "\"" + vc_incs[i] + "\"";
 			}
 
-			var cppcheck_platform = TARGET_ARCH == 'x86' ? "win32A" : "win64";
-			var cppcheck_lib = "win32\\build\\cppcheck_" + (TARGET_ARCH == 'x86' ? "x86" : "x64") + ".cfg"; // use x64 for arm64 yet
+			var cppcheck_platform = X64 ? "win64" : "win32A";
+			var cppcheck_lib = "win32\\build\\cppcheck_" + (X64 ? "x64" : "x86") + ".cfg";
 			analyzer_base_args += "--enable=warning,performance,portability,information,missingInclude " +
 						"--platform=" + cppcheck_platform + " " +
 						"--library=windows.cfg --library=microsoft_sal.cfg " +
@@ -1963,8 +1960,7 @@
 	ar[k++] = ['Build type', PHP_DEBUG == "yes" ? "Debug" : "Release"];
 	ar[k++] = ['Thread Safety', PHP_ZTS == "yes" ? "Yes" : "No"];
 	ar[k++] = ['Compiler', COMPILER_NAME_LONG];
-	ar[k++] = ['Target Architecture', TARGET_ARCH];
-	ar[k++] = ['Host Architecture', HOST_ARCH];
+	ar[k++] = ['Architecture', X64 ? 'x64' : 'x86'];
 	if (PHP_PGO == "yes") {
 		ar[k++] = ['Optimization', "PGO"];
 	} else if (PHP_PGI == "yes") {
@@ -2087,7 +2083,9 @@
 	}
 
 	STDOUT.WriteLine("Generating files...");
-	generate_tmp_php_ini();
+	if (!MODE_PHPIZE) {
+		generate_tmp_php_ini();
+	}
 	generate_makefile();
 	if (!MODE_PHPIZE) {
 		generate_internal_functions();
@@ -2530,9 +2528,11 @@
 		handle_analyzer_makefile_flags(MF, keys[i], val);
 	}
 
-	var val = "yes" == PHP_TEST_INI ? PHP_TEST_INI_PATH : "";
-	/* Be sure it's done after generate_tmp_php_ini(). */
-	MF.WriteLine("PHP_TEST_INI_PATH=\"" + val + "\"");
+	if (!MODE_PHPIZE) {
+		var val = "yes" == PHP_TEST_INI ? PHP_TEST_INI_PATH : "";
+		/* Be sure it's done after generate_tmp_php_ini(). */
+		MF.WriteLine("PHP_TEST_INI_PATH=\"" + val + "\"");
+	}
 
 	MF.WriteBlankLines(1);
 	if (MODE_PHPIZE) {
@@ -3101,11 +3101,9 @@
 
 		version = probe_binary(PHP_CL).substr(0, 5).replace('.', '');
 
-		if (version >= 1940) {
+		if (version >= 1930) {
 			return name;
-		} else if (version >= 1930) {
-			name = short ? "VS17" : "Visual C++ 2022";
-		} else if (version >= 1920) {
+		} if (version >= 1920) {
 			/* NOTE - VS is intentional. Due to changes in recent Visual Studio
 						versioning scheme referring to the exact VC++ version is
 						hardly predictable. From this version on, it refers to
@@ -3133,32 +3131,10 @@
 }
 
 
-function toolset_host_arch()
+function toolset_is_64()
 {
-	var command = 'cmd /c "where cl.exe"';
-	var clpath = execute(command).split(/\n/)[0].replace(/\s$/, '');
-
-	var command = 'cmd /c "dumpbin "' + clpath + '" /nologo /headers"';
-	var full = execute(command);
-
-	/*
-	output is something like
-	FILE HEADER VALUES
-		8664 machine (x64)
-	*/
-	var matches = full.match(/FILE HEADER VALUES\s+[A-F0-9]{3,4}\smachine \((x64|x86|ARM64)\)/);
-
-	if(!matches){
-		ERROR("Unsupported toolset host");
-	}
-
-	return matches[1].toLowerCase();
-}
-
-function toolset_target_arch()
-{
 	if (VS_TOOLSET) {
-		return probe_binary(PHP_CL, 'arch');
+		return probe_binary(PHP_CL, 64);
 	} else if (CLANG_TOOLSET) {
 		/*var command = 'cmd /c ""' + PHP_CL + '" -v"';
 		var full = execute(command + '" 2>&1"');
@@ -3168,22 +3144,26 @@
 		/* Even executed within an environment setup with vcvars32.bat,
 		clang-cl doesn't recognize the arch toolset. But as it needs
 		the VS environment, checking the arch of cl.exe is correct. */
-		return probe_binary(PATH_PROG('cl', null), 'arch');
+		return probe_binary(PATH_PROG('cl', null), 64);
 	} else if (ICC_TOOLSET) {
-		var command = 'cmd /c "where cl"';
+		var command = 'cmd /c ""' + PHP_CL + '" -v"';
 		var full = execute(command + '" 2>&1"');
 
 		return null != full.match(/Intel\(R\) 64/);
 	}
 
-	ERROR("Unsupported toolset target");
+	ERROR("Unsupported toolset");
 }
 
 function toolset_setup_arch()
 {
-	STDOUT.WriteLine("  Detected " + TARGET_ARCH + " compiler" + (TARGET_ARCH == HOST_ARCH ? "" : " (cross compile from " + HOST_ARCH + ")"));
-	AC_DEFINE('PHP_BUILD_ARCH', TARGET_ARCH, "Detected compiler architecture");
-	DEFINE("PHP_ARCHITECTURE", TARGET_ARCH);
+	if (X64) {
+		STDOUT.WriteLine("  Detected 64-bit compiler");
+	} else {
+		STDOUT.WriteLine("  Detected 32-bit compiler");
+	}
+	AC_DEFINE('PHP_BUILD_ARCH', X64 ? 'x64' : 'x86', "Detected compiler architecture");
+	DEFINE("PHP_ARCHITECTURE", X64 ? 'x64' : 'x86');
 }
 
 function toolset_setup_codegen_arch()
@@ -3197,7 +3177,7 @@
 
 		if ("IA32" != arc) {
 			ERROR("Only IA32 arch is supported by --with-codegen-arch, got '" + arc + "'");
-		} else if (TARGET_ARCH != 'x86') {
+		} else if (X64) {
 			ERROR("IA32 arch is only supported with 32-bit build");
 		}
 		ADD_FLAG("CFLAGS", "/arch:" + arc);
@@ -3257,10 +3237,10 @@
 		// fun stuff: MS deprecated ANSI stdio and similar functions
 		// disable annoying warnings.  In addition, time_t defaults
 		// to 64-bit.  Ask for 32-bit.
-		if (TARGET_ARCH == 'x86') {
+		if (X64) {
+			ADD_FLAG('CFLAGS', ' /wd4996 ');
+		} else {
 			ADD_FLAG('CFLAGS', ' /wd4996 /D_USE_32BIT_TIME_T=1 ');
-		} else {
-			ADD_FLAG('CFLAGS', ' /wd4996 ');
 		}
 
 		if (PHP_DEBUG == "yes") {
@@ -3312,10 +3292,10 @@
 
 		ADD_FLAG("CFLAGS", "/Zc:wchar_t");
 	} else if (CLANG_TOOLSET) {
-		if (TARGET_ARCH == 'x86') {
+		if (X64) {
+			ADD_FLAG('CFLAGS', '-m64');
+		} else {
 			ADD_FLAG('CFLAGS', '-m32');
-		} else {
-			ADD_FLAG('CFLAGS', '-m64');
 		}
 		ADD_FLAG("CFLAGS", " /fallback ");
 		ADD_FLAG("CFLAGS", "-Xclang -fmodules");
@@ -3345,14 +3325,6 @@
 			ERROR("Can't enable intrinsics, --with-codegen-arch passed with an incompatible option. ")
 		}
 
-		if (TARGET_ARCH == 'arm64') {
-			/* arm64 supports neon */
-			configure_subst.Add("PHP_SIMD_SCALE", 'NEON');
-			/* all offically supported arm64 cpu supports crc32 (TODO: to be confirmed) */
-			AC_DEFINE('HAVE_ARCH64_CRC32', 1);
-			return;
-		}
-
 		if ("no" == PHP_NATIVE_INTRINSICS || "yes" == PHP_NATIVE_INTRINSICS) {
 			PHP_NATIVE_INTRINSICS = default_enabled;
 		}
@@ -3380,7 +3352,7 @@
 					}
 				}
 			}
-			if (TARGET_ARCH == 'x86') {
+			if (!X64) {
 				/* SSE2 is currently the default on 32-bit. It could change later,
 					for now no need to pass it. But, if SSE only was chosen,
 					/arch:SSE is required. */
@@ -3451,7 +3423,7 @@
 {
 	if (PHP_DEBUG == "yes") {
 		ADD_FLAG("CFLAGS", "/LDd /MDd /Od /D _DEBUG /D ZEND_DEBUG=1 " +
-			(TARGET_ARCH == 'x86'?"/ZI":"/Zi"));
+			(X64?"/Zi":"/ZI"));
 		ADD_FLAG("LDFLAGS", "/debug");
 		// Avoid problems when linking to release libraries that use the release
 		// version of the libc
@@ -3486,16 +3458,11 @@
 	} else {
 		PHP_OBJECT_OUT_DIR = FSO.GetAbsolutePathName(".") + '\\';
 
-		if (TARGET_ARCH == 'x64') {
+		if (X64) {
 			PHP_OBJECT_OUT_DIR += 'x64\\';
 			if (!FSO.FolderExists(PHP_OBJECT_OUT_DIR)) {
 				FSO.CreateFolder(PHP_OBJECT_OUT_DIR);
 			}
-		} else if (TARGET_ARCH == 'arm64') {
-			PHP_OBJECT_OUT_DIR += 'arm64\\';
-			if (!FSO.FolderExists(PHP_OBJECT_OUT_DIR)) {
-				FSO.CreateFolder(PHP_OBJECT_OUT_DIR);
-			}
 		}
 	}
 }
@@ -3552,7 +3519,7 @@
 			if (FSO.FolderExists("..\\php_build")) {
 				PHP_PHP_BUILD = "..\\php_build";
 			} else {
-				if (TARGET_ARCH != 'x86') {
+				if (X64) {
 					if (FSO.FolderExists("..\\win64build")) {
 						PHP_PHP_BUILD = "..\\win64build";
 					} else if (FSO.FolderExists("..\\php-win64-dev\\php_build")) {
@@ -3714,7 +3681,7 @@
 		ERROR("Failed to determine clang lib path");
 	}
 
-	if (TARGET_ARCH != 'x86') {
+	if (X64) {
 		ret = PROGRAM_FILES + "\\LLVM\\lib\\clang\\" + ver + "\\lib";
 		if (!FSO.FolderExists(ret)) {
 			ret = null;
@@ -3751,13 +3718,10 @@
 		ADD_FLAG(cflags_name, "-fsanitize=address,undefined");
 	}
 	if (!!libs_name) {
-		if (TARGET_ARCH == 'x64') {
+		if (X64) {
 			ADD_FLAG(libs_name, "clang_rt.asan_dynamic-x86_64.lib clang_rt.asan_dynamic_runtime_thunk-x86_64.lib");
-		} else if (TARGET_ARCH == 'x86') {
+		} else {
 			ADD_FLAG(libs_name, "clang_rt.asan_dynamic-i386.lib clang_rt.asan_dynamic_runtime_thunk-i386.lib");
-		} else {
-			// TODO: support arm64?
-			ERROR("Failed to determine clang lib path");
 		}
 	}
 

Modified: trunk/MgDev/Oem/php/script/ext_deps.js
===================================================================
--- trunk/MgDev/Oem/php/script/ext_deps.js	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/script/ext_deps.js	2023-03-28 14:50:37 UTC (rev 10039)
@@ -60,8 +60,6 @@
 PHP_PCRE_SHARED=false;
 PHP_PGSQL=true;
 PHP_PGSQL_SHARED=true;
-PHP_RANDOM=true;
-PHP_RANDOM_SHARED=false;
 PHP_READLINE=true;
 PHP_READLINE_SHARED=false;
 PHP_REFLECTION=true;
@@ -91,7 +89,7 @@
 PHP_ZEND_TEST=true;
 PHP_ZEND_TEST_SHARED=true;
 PHP_ZIP=true;
-PHP_ZIP_SHARED=true;
+PHP_ZIP_SHARED=false;
 PHP_ZLIB=true;
 PHP_ZLIB_SHARED=false;
 PHP_LIBXML=true;

Modified: trunk/MgDev/Oem/php/script/phpize.js
===================================================================
--- trunk/MgDev/Oem/php/script/phpize.js	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/script/phpize.js	2023-03-28 14:50:37 UTC (rev 10039)
@@ -2,10 +2,10 @@
 var PHP_ZTS="No"
 var VC_VERSION=1929
 var PHP_VERSION=8
-var PHP_MINOR_VERSION=2
-var PHP_RELEASE_VERSION=4
+var PHP_MINOR_VERSION=1
+var PHP_RELEASE_VERSION=17
 var PHP_EXTRA_VERSION=""
-var PHP_VERSION_STRING="8.2.4"
+var PHP_VERSION_STRING="8.1.17"
 
 /* Generated extensions list with mode (static/shared) */
 PHP_BCMATH_SHARED=false;
@@ -39,7 +39,6 @@
 PHP_OPENSSL_SHARED=true;
 PHP_PCRE_SHARED=false;
 PHP_PGSQL_SHARED=true;
-PHP_RANDOM_SHARED=false;
 PHP_READLINE_SHARED=false;
 PHP_REFLECTION_SHARED=false;
 PHP_SESSION_SHARED=false;
@@ -54,7 +53,7 @@
 PHP_TIDY_SHARED=true;
 PHP_TOKENIZER_SHARED=false;
 PHP_ZEND_TEST_SHARED=true;
-PHP_ZIP_SHARED=true;
+PHP_ZIP_SHARED=false;
 PHP_ZLIB_SHARED=false;
 PHP_LIBXML_SHARED=false;
 PHP_DOM_SHARED=false;

Modified: trunk/MgDev/Oem/php/script/run-tests.php
===================================================================
--- trunk/MgDev/Oem/php/script/run-tests.php	2023-03-25 11:02:18 UTC (rev 10038)
+++ trunk/MgDev/Oem/php/script/run-tests.php	2023-03-28 14:50:37 UTC (rev 10039)
@@ -23,7 +23,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: e7cc6a7f28c525cc1ab5a3191e2438b4fbd1e478 $ */
+/* $Id: edfab1f57adcd4ed819df5076d7ffb5a15c40bc1 $ */
 
 /* Temporary variables while this file is being refactored. */
 /** @var ?JUnit */
@@ -127,9 +127,6 @@
     --color
     --no-color  Do/Don't colorize the result type in the test result.
 
-    --progress
-    --no-progress  Do/Don't show the current progress.
-
     --repeat [n]
                 Run the tests multiple times in the same process and check the
                 output of the last execution (CLI SAPI only).
@@ -155,14 +152,14 @@
            $cfgfiles, $cfgtypes, $conf_passed, $end_time, $environment,
            $exts_skipped, $exts_tested, $exts_to_test, $failed_tests_file,
            $ignored_by_ext, $ini_overwrites, $is_switch, $colorize,
-           $log_format, $matches, $no_clean, $no_file_cache,
-           $optionals, $pass_option_n, $pass_options,
+           $just_save_results, $log_format, $matches, $no_clean, $no_file_cache,
+           $optionals, $output_file, $pass_option_n, $pass_options,
            $pattern_match, $php, $php_cgi, $phpdbg, $preload, $redir_tests,
            $repeat, $result_tests_file, $slow_min_ms, $start_time, $switch,
            $temp_source, $temp_target, $test_cnt, $test_dirs,
            $test_files, $test_idx, $test_list, $test_results, $testfile,
            $user_tests, $valgrind, $sum_results, $shuffle, $file_cache, $num_repeats,
-           $bless, $show_progress;
+           $bless;
     // Parallel testing
     global $workers, $workerID;
     global $context_line_count;
@@ -231,14 +228,14 @@
             // fail to reattach to the OpCache because it will be using the
             // wrong path.
             die("TEMP environment is NOT set");
+        } else {
+            if (count($environment) == 1) {
+                // Not having other environment variables, only having TEMP, is
+                // probably ok, but strange and may make a difference in the
+                // test pass rate, so warn the user.
+                echo "WARNING: Only 1 environment variable will be available to tests(TEMP environment variable)" . PHP_EOL;
+            }
         }
-
-        if (count($environment) == 1) {
-            // Not having other environment variables, only having TEMP, is
-            // probably ok, but strange and may make a difference in the
-            // test pass rate, so warn the user.
-            echo "WARNING: Only 1 environment variable will be available to tests(TEMP environment variable)" , PHP_EOL;
-        }
     }
 
     if (IS_WINDOWS && empty($environment["SystemRoot"])) {
@@ -316,6 +313,9 @@
 
     $no_file_cache = '-d opcache.file_cache= -d opcache.file_cache_only=0';
 
+    define('PHP_QA_EMAIL', 'qa-reports at lists.php.net');
+    define('QA_SUBMISSION_PAGE', 'http://qa.php.net/buildtest-process.php');
+    define('QA_REPORTS_PAGE', 'http://qa.php.net/reports');
     define('TRAVIS_CI', (bool) getenv('TRAVIS'));
 
     // Determine the tests to be run.
@@ -363,7 +363,6 @@
     $workers = null;
     $context_line_count = 3;
     $num_repeats = 1;
-    $show_progress = true;
 
     $cfgtypes = ['show', 'keep'];
     $cfgfiles = ['skip', 'php', 'clean', 'out', 'diff', 'exp', 'mem'];
@@ -423,7 +422,7 @@
             switch ($switch) {
                 case 'j':
                     $workers = substr($argv[$i], 2);
-                    if ($workers == 0 || !preg_match('/^\d+$/', $workers)) {
+                    if (!preg_match('/^\d+$/', $workers) || $workers == 0) {
                         error("'$workers' is not a valid number of workers, try e.g. -j16 for 16 workers");
                     }
                     $workers = intval($workers, 10);
@@ -440,8 +439,10 @@
                             $matches = [];
                             if (preg_match('/^#.*\[(.*)\]\:\s+(.*)$/', $test, $matches)) {
                                 $redir_tests[] = [$matches[1], $matches[2]];
-                            } elseif (strlen($test)) {
-                                $test_files[] = trim($test);
+                            } else {
+                                if (strlen($test)) {
+                                    $test_files[] = trim($test);
+                                }
                             }
                         }
                     }
@@ -604,14 +605,8 @@
                         $repeat = true;
                     }
                     break;
-                case '--progress':
-                    $show_progress = true;
-                    break;
-                case '--no-progress':
-                    $show_progress = false;
-                    break;
                 case '--version':
-                    echo '$Id: e7cc6a7f28c525cc1ab5a3191e2438b4fbd1e478 $' . "\n";
+                    echo '$Id: edfab1f57adcd4ed819df5076d7ffb5a15c40bc1 $' . "\n";
                     exit(1);
 
                 default:
@@ -632,21 +627,27 @@
             if (!$testfile && strpos($argv[$i], '*') !== false && function_exists('glob')) {
                 if (substr($argv[$i], -5) == '.phpt') {
                     $pattern_match = glob($argv[$i]);
-                } elseif (preg_match("/\*$/", $argv[$i])) {
-                    $pattern_match = glob($argv[$i] . '.phpt');
                 } else {
-                    die('Cannot find test file "' . $argv[$i] . '".' . PHP_EOL);
+                    if (preg_match("/\*$/", $argv[$i])) {
+                        $pattern_match = glob($argv[$i] . '.phpt');
+                    } else {
+                        die('Cannot find test file "' . $argv[$i] . '".' . PHP_EOL);
+                    }
                 }
 
                 if (is_array($pattern_match)) {
                     $test_files = array_merge($test_files, $pattern_match);
                 }
-            } elseif (is_dir($testfile)) {
-                find_files($testfile);
-            } elseif (substr($testfile, -5) == '.phpt') {
-                $test_files[] = $testfile;
             } else {
-                die('Cannot find test file "' . $argv[$i] . '".' . PHP_EOL);
+                if (is_dir($testfile)) {
+                    find_files($testfile);
+                } else {
+                    if (substr($testfile, -5) == '.phpt') {
+                        $test_files[] = $testfile;
+                    } else {
+                        die('Cannot find test file "' . $argv[$i] . '".' . PHP_EOL);
+                    }
+                }
             }
         }
     }
@@ -730,7 +731,7 @@
         echo get_summary(false);
 
         if ($output_file != '' && $just_save_results) {
-            save_results($output_file, /* prompt_to_save_results: */ false);
+            save_or_mail_results();
         }
     } else {
         // Compile a list of all test files (*.phpt).
@@ -792,7 +793,7 @@
         show_end($end_time);
         show_summary();
 
-        save_results($output_file, /* prompt_to_save_results: */ true);
+        save_or_mail_results();
     }
 
     $junit->saveXML();
@@ -853,11 +854,11 @@
     $info_params = [];
     settings2array($ini_overwrites, $info_params);
     $info_params = settings2params($info_params);
-    $php_info = shell_exec("$php $pass_options $info_params $no_file_cache \"$info_file\"");
-    define('TESTED_PHP_VERSION', shell_exec("$php -n -r \"echo PHP_VERSION;\""));
+    $php_info = `$php $pass_options $info_params $no_file_cache "$info_file"`;
+    define('TESTED_PHP_VERSION', `$php -n -r "echo PHP_VERSION;"`);
 
     if ($php_cgi && $php != $php_cgi) {
-        $php_info_cgi = shell_exec("$php_cgi $pass_options $info_params $no_file_cache -q \"$info_file\"");
+        $php_info_cgi = `$php_cgi $pass_options $info_params $no_file_cache -q "$info_file"`;
         $php_info_sep = "\n---------------------------------------------------------------------";
         $php_cgi_info = "$php_info_sep\nPHP         : $php_cgi $php_info_cgi$php_info_sep";
     } else {
@@ -865,7 +866,7 @@
     }
 
     if ($phpdbg) {
-        $phpdbg_info = shell_exec("$phpdbg $pass_options $info_params $no_file_cache -qrr \"$info_file\"");
+        $phpdbg_info = `$phpdbg $pass_options $info_params $no_file_cache -qrr "$info_file"`;
         $php_info_sep = "\n---------------------------------------------------------------------";
         $phpdbg_info = "$php_info_sep\nPHP         : $phpdbg $phpdbg_info$php_info_sep";
     } else {
@@ -893,7 +894,7 @@
         }
         ?>
     PHP);
-    $exts_to_test = explode(',', shell_exec("$php $pass_options $info_params $no_file_cache \"$info_file\""));
+    $exts_to_test = explode(',', `$php $pass_options $info_params $no_file_cache "$info_file"`);
     // check for extensions that need special handling and regenerate
     $info_params_ex = [
         'session' => ['session.auto_start=0'],
@@ -928,101 +929,134 @@
 ";
 }
 
-function save_results(string $output_file, bool $prompt_to_save_results): void
+function save_or_mail_results(): void
 {
-    global $sum_results, $failed_test_summary,
-           $PHP_FAILED_TESTS, $php;
+    global $sum_results, $just_save_results, $failed_test_summary,
+           $PHP_FAILED_TESTS, $php, $output_file;
 
-    if (getenv('NO_INTERACTION') || TRAVIS_CI) {
-        return;
-    }
-
-    if ($prompt_to_save_results) {
-        /* We got failed Tests, offer the user to save a QA report */
+    /* We got failed Tests, offer the user to send an e-mail to QA team, unless NO_INTERACTION is set */
+    if (!getenv('NO_INTERACTION') && !TRAVIS_CI) {
         $fp = fopen("php://stdin", "r+");
         if ($sum_results['FAILED'] || $sum_results['BORKED'] || $sum_results['WARNED'] || $sum_results['LEAKED']) {
             echo "\nYou may have found a problem in PHP.";
         }
-        echo "\nThis report can be saved and used to open an issue on the bug tracker at\n";
-        echo "https://github.com/php/php-src/issues\n";
+        echo "\nThis report can be automatically sent to the PHP QA team at\n";
+        echo QA_REPORTS_PAGE . " and http://news.php.net/php.qa.reports\n";
         echo "This gives us a better understanding of PHP's behavior.\n";
-        echo "Do you want to save this report in a file? [Yn]: ";
+        echo "If you don't want to send the report immediately you can choose\n";
+        echo "option \"s\" to save it.	You can then email it to " . PHP_QA_EMAIL . " later.\n";
+        echo "Do you want to send this report now? [Yns]: ";
         flush();
 
         $user_input = fgets($fp, 10);
-        fclose($fp);
-        if (!(strlen(trim($user_input)) == 0 || strtolower($user_input[0]) == 'y')) {
-            return;
-        }
+        $just_save_results = (!empty($user_input) && strtolower($user_input[0]) === 's');
     }
-    /**
-     * Collect information about the host system for our report
-     * Fetch phpinfo() output so that we can see the PHP environment
-     * Make an archive of all the failed tests
-     */
-    $failed_tests_data = '';
-    $sep = "\n" . str_repeat('=', 80) . "\n";
-    $failed_tests_data .= $failed_test_summary . "\n";
-    $failed_tests_data .= get_summary(true) . "\n";
 
-    if ($sum_results['FAILED']) {
-        foreach ($PHP_FAILED_TESTS['FAILED'] as $test_info) {
-            $failed_tests_data .= $sep . $test_info['name'] . $test_info['info'];
-            $failed_tests_data .= $sep . file_get_contents(realpath($test_info['output']));
-            $failed_tests_data .= $sep . file_get_contents(realpath($test_info['diff']));
-            $failed_tests_data .= $sep . "\n\n";
-        }
-    }
+    if ($just_save_results || !getenv('NO_INTERACTION') || TRAVIS_CI) {
+        if ($just_save_results || TRAVIS_CI || strlen(trim($user_input)) == 0 || strtolower($user_input[0]) == 'y') {
+            /*
+             * Collect information about the host system for our report
+             * Fetch phpinfo() output so that we can see the PHP environment
+             * Make an archive of all the failed tests
+             * Send an email
+             */
+            if ($just_save_results) {
+                $user_input = 's';
+            }
 
-    $failed_tests_data .= "\n" . $sep . 'BUILD ENVIRONMENT' . $sep;
-    $failed_tests_data .= "OS:\n" . PHP_OS . " - " . php_uname() . "\n\n";
-    $ldd = $autoconf = $sys_libtool = $libtool = $compiler = 'N/A';
+            /* Ask the user to provide an email address, so that QA team can contact the user */
+            if (TRAVIS_CI) {
+                $user_email = 'travis at php dot net';
+            } elseif (!strncasecmp($user_input, 'y', 1) || strlen(trim($user_input)) == 0) {
+                echo "\nPlease enter your email address.\n(Your address will be mangled so that it will not go out on any\nmailinglist in plain text): ";
+                flush();
+                $user_email = trim(fgets($fp, 1024));
+                $user_email = str_replace("@", " at ", str_replace(".", " dot ", $user_email));
+            }
 
-    if (!IS_WINDOWS) {
-        /* If PHP_AUTOCONF is set, use it; otherwise, use 'autoconf'. */
-        if (getenv('PHP_AUTOCONF')) {
-            $autoconf = shell_exec(getenv('PHP_AUTOCONF') . ' --version');
-        } else {
-            $autoconf = shell_exec('autoconf --version');
-        }
+            $failed_tests_data = '';
+            $sep = "\n" . str_repeat('=', 80) . "\n";
+            $failed_tests_data .= $failed_test_summary . "\n";
+            $failed_tests_data .= get_summary(true) . "\n";
 
-        /* Always use the generated libtool - Mac OSX uses 'glibtool' */
-        $libtool = shell_exec(INIT_DIR . '/libtool --version');
+            if ($sum_results['FAILED']) {
+                foreach ($PHP_FAILED_TESTS['FAILED'] as $test_info) {
+                    $failed_tests_data .= $sep . $test_info['name'] . $test_info['info'];
+                    $failed_tests_data .= $sep . file_get_contents(realpath($test_info['output']));
+                    $failed_tests_data .= $sep . file_get_contents(realpath($test_info['diff']));
+                    $failed_tests_data .= $sep . "\n\n";
+                }
+                $status = "failed";
+            } else {
+                $status = "success";
+            }
 
-        /* Use shtool to find out if there is glibtool present (MacOSX) */
-        $sys_libtool_path = shell_exec(__DIR__ . '/build/shtool path glibtool libtool');
+            $failed_tests_data .= "\n" . $sep . 'BUILD ENVIRONMENT' . $sep;
+            $failed_tests_data .= "OS:\n" . PHP_OS . " - " . php_uname() . "\n\n";
+            $ldd = $autoconf = $sys_libtool = $libtool = $compiler = 'N/A';
 
-        if ($sys_libtool_path) {
-            $sys_libtool = shell_exec(str_replace("\n", "", $sys_libtool_path) . ' --version');
-        }
+            if (!IS_WINDOWS) {
+                /* If PHP_AUTOCONF is set, use it; otherwise, use 'autoconf'. */
+                if (getenv('PHP_AUTOCONF')) {
+                    $autoconf = shell_exec(getenv('PHP_AUTOCONF') . ' --version');
+                } else {
+                    $autoconf = shell_exec('autoconf --version');
+                }
 
-        /* Try the most common flags for 'version' */
-        $flags = ['-v', '-V', '--version'];
-        $cc_status = 0;
+                /* Always use the generated libtool - Mac OSX uses 'glibtool' */
+                $libtool = shell_exec(INIT_DIR . '/libtool --version');
 
-        foreach ($flags as $flag) {
-            system(getenv('CC') . " $flag >/dev/null 2>&1", $cc_status);
-            if ($cc_status == 0) {
-                $compiler = shell_exec(getenv('CC') . " $flag 2>&1");
-                break;
+                /* Use shtool to find out if there is glibtool present (MacOSX) */
+                $sys_libtool_path = shell_exec(__DIR__ . '/build/shtool path glibtool libtool');
+
+                if ($sys_libtool_path) {
+                    $sys_libtool = shell_exec(str_replace("\n", "", $sys_libtool_path) . ' --version');
+                }
+
+                /* Try the most common flags for 'version' */
+                $flags = ['-v', '-V', '--version'];
+                $cc_status = 0;
+
+                foreach ($flags as $flag) {
+                    system(getenv('CC') . " $flag >/dev/null 2>&1", $cc_status);
+                    if ($cc_status == 0) {
+                        $compiler = shell_exec(getenv('CC') . " $flag 2>&1");
+                        break;
+                    }
+                }
+
+                $ldd = shell_exec("ldd $php 2>/dev/null");
             }
-        }
 
-        $ldd = shell_exec("ldd $php 2>/dev/null");
-    }
+            $failed_tests_data .= "Autoconf:\n$autoconf\n";
+            $failed_tests_data .= "Bundled Libtool:\n$libtool\n";
+            $failed_tests_data .= "System Libtool:\n$sys_libtool\n";
+            $failed_tests_data .= "Compiler:\n$compiler\n";
+            $failed_tests_data .= "Bison:\n" . shell_exec('bison --version 2>/dev/null') . "\n";
+            $failed_tests_data .= "Libraries:\n$ldd\n";
+            $failed_tests_data .= "\n";
 
-    $failed_tests_data .= "Autoconf:\n$autoconf\n";
-    $failed_tests_data .= "Bundled Libtool:\n$libtool\n";
-    $failed_tests_data .= "System Libtool:\n$sys_libtool\n";
-    $failed_tests_data .= "Compiler:\n$compiler\n";
-    $failed_tests_data .= "Bison:\n" . shell_exec('bison --version 2>/dev/null') . "\n";
-    $failed_tests_data .= "Libraries:\n$ldd\n";
-    $failed_tests_data .= "\n";
-    $failed_tests_data .= $sep . "PHPINFO" . $sep;
-    $failed_tests_data .= shell_exec($php . ' -ddisplay_errors=stderr -dhtml_errors=0 -i 2> /dev/null');
+            if (isset($user_email)) {
+                $failed_tests_data .= "User's E-mail: " . $user_email . "\n\n";
+            }
 
-    file_put_contents($output_file, $failed_tests_data);
-    echo "Report saved to: ", $output_file, "\n";
+            $failed_tests_data .= $sep . "PHPINFO" . $sep;
+            $failed_tests_data .= shell_exec($php . ' -ddisplay_errors=stderr -dhtml_errors=0 -i 2> /dev/null');
+
+            if (($just_save_results || !mail_qa_team($failed_tests_data, $status)) && !TRAVIS_CI) {
+                file_put_contents($output_file, $failed_tests_data);
+
+                if (!$just_save_results) {
+                    echo "\nThe test script was unable to automatically send the report to PHP's QA Team\n";
+                }
+
+                echo "Please send " . $output_file . " to " . PHP_QA_EMAIL . " manually, thank you.\n";
+            } elseif (!getenv('NO_INTERACTION') && !TRAVIS_CI) {
+                fwrite($fp, "\nThank you for helping to make PHP better.\n");
+                fclose($fp);
+            }
+        }
+    }
 }
 
 function get_binary(string $php, string $sapi, string $sapi_path): ?string
@@ -1065,9 +1099,7 @@
         }
 
         // Otherwise we're only interested in *.phpt files.
-        // (but not those starting with a dot, which are hidden on
-        // many platforms)
-        if (substr($name, -5) == '.phpt' && substr($name, 0, 1) !== '.') {
+        if (substr($name, -5) == '.phpt') {
             if ($ignore) {
                 $ignored_by_ext++;
             } else {
@@ -1087,9 +1119,9 @@
 {
     if (is_array($name)) {
         return $name[0] . ':' . $name[1];
+    } else {
+        return $name;
     }
-
-    return $name;
 }
 /**
  * @param array|string $a
@@ -1107,9 +1139,55 @@
 
     if ($ta == $tb) {
         return strcmp($a, $b);
+    } else {
+        return $tb - $ta;
     }
+}
 
-    return $tb - $ta;
+//
+// Send Email to QA Team
+//
+
+function mail_qa_team(string $data, bool $status = false): bool
+{
+    $url_bits = parse_url(QA_SUBMISSION_PAGE);
+
+    if ($proxy = getenv('http_proxy')) {
+        $proxy = parse_url($proxy);
+        $path = $url_bits['host'] . $url_bits['path'];
+        $host = $proxy['host'];
+        if (empty($proxy['port'])) {
+            $proxy['port'] = 80;
+        }
+        $port = $proxy['port'];
+    } else {
+        $path = $url_bits['path'];
+        $host = $url_bits['host'];
+        $port = empty($url_bits['port']) ? 80 : $port = $url_bits['port'];
+    }
+
+    $data = "php_test_data=" . urlencode(base64_encode(str_replace("\00", '[0x0]', $data)));
+    $data_length = strlen($data);
+
+    $fs = fsockopen($host, $port, $errno, $errstr, 10);
+
+    if (!$fs) {
+        return false;
+    }
+
+    $php_version = urlencode(TESTED_PHP_VERSION);
+
+    echo "\nPosting to " . QA_SUBMISSION_PAGE . "\n";
+    fwrite($fs, "POST " . $path . "?status=$status&version=$php_version HTTP/1.1\r\n");
+    fwrite($fs, "Host: " . $host . "\r\n");
+    fwrite($fs, "User-Agent: QA Browser 0.1\r\n");
+    fwrite($fs, "Content-Type: application/x-www-form-urlencoded\r\n");
+    fwrite($fs, "Content-Length: " . $data_length . "\r\n\r\n");
+    fwrite($fs, $data);
+    fwrite($fs, "\r\n\r\n");
+    fclose($fs);
+
+    return true;
 }
 
 //
@@ -1120,8 +1198,10 @@
 {
     global $DETAILED;
 
-    if ($filename_copy && $filename_copy != $filename && file_put_contents($filename_copy, $text) === false) {
-        error("Cannot open file '" . $filename_copy . "' (save_text)");
+    if ($filename_copy && $filename_copy != $filename) {
+        if (file_put_contents($filename_copy, $text) === false) {
+            error("Cannot open file '" . $filename_copy . "' (save_text)");
+        }
     }
 
     if (file_put_contents($filename, $text) === false) {
@@ -1214,16 +1294,12 @@
 
         if ($n === false) {
             break;
-        }
-
-        if ($n === 0) {
+        } elseif ($n === 0) {
             /* timed out */
             $data .= "\n ** ERROR: process timed out **\n";
             proc_terminate($proc, 9);
             return $data;
-        }
-
-        if ($n > 0) {
+        } elseif ($n > 0) {
             if ($captureStdOut) {
                 $line = fread($pipes[1], 8192);
             } elseif ($captureStdErr) {
@@ -1341,7 +1417,7 @@
  */
 function run_all_tests_parallel(array $test_files, array $env, $redir_tested): void
 {
-    global $workers, $test_idx, $test_cnt, $test_results, $failed_tests_file, $result_tests_file, $PHP_FAILED_TESTS, $shuffle, $SHOW_ONLY_GROUPS, $valgrind, $show_progress;
+    global $workers, $test_idx, $test_cnt, $test_results, $failed_tests_file, $result_tests_file, $PHP_FAILED_TESTS, $shuffle, $SHOW_ONLY_GROUPS, $valgrind;
 
     global $junit;
 
@@ -1452,6 +1528,9 @@
             "constants" => [
                 "INIT_DIR" => INIT_DIR,
                 "TEST_PHP_SRCDIR" => TEST_PHP_SRCDIR,
+                "PHP_QA_EMAIL" => PHP_QA_EMAIL,
+                "QA_SUBMISSION_PAGE" => QA_SUBMISSION_PAGE,
+                "QA_REPORTS_PAGE" => QA_REPORTS_PAGE,
                 "TRAVIS_CI" => TRAVIS_CI
             ]
         ])) . "\n";
@@ -1581,7 +1660,8 @@
                                 ]);
                             } else {
                                 proc_terminate($workerProcs[$i]);
-                                unset($workerProcs[$i], $workerSocks[$i]);
+                                unset($workerProcs[$i]);
+                                unset($workerSocks[$i]);
                                 goto escape;
                             }
                             break;
@@ -1592,13 +1672,13 @@
                             }
                             $test_idx++;
 
-                            if ($show_progress) {
+                            if (!$SHOW_ONLY_GROUPS) {
                                 clear_show_test();
                             }
 
                             echo $resultText;
 
-                            if ($show_progress) {
+                            if (!$SHOW_ONLY_GROUPS) {
                                 show_test($test_idx, count($workerProcs) . "/$workers concurrent test workers running");
                             }
 
@@ -1648,7 +1728,7 @@
         }
     }
 
-    if ($show_progress) {
+    if (!$SHOW_ONLY_GROUPS) {
         clear_show_test();
     }
 
@@ -1794,7 +1874,6 @@
     global $num_repeats;
     // Parallel testing
     global $workerID;
-    global $show_progress;
 
     // Temporary
     /** @var JUnit */
@@ -1810,9 +1889,14 @@
     $org_file = $file;
     $orig_php = $php;
 
-    $php_cgi = $env['TEST_PHP_CGI_EXECUTABLE'] ?? null;
-    $phpdbg = $env['TEST_PHPDBG_EXECUTABLE'] ?? null;
+    if (isset($env['TEST_PHP_CGI_EXECUTABLE'])) {
+        $php_cgi = $env['TEST_PHP_CGI_EXECUTABLE'];
+    }
 
+    if (isset($env['TEST_PHPDBG_EXECUTABLE'])) {
+        $phpdbg = $env['TEST_PHPDBG_EXECUTABLE'];
+    }
+
     if (is_array($file)) {
         $file = $file[0];
     }
@@ -1906,7 +1990,7 @@
         }
     }
 
-    if ($show_progress && !$workerID) {
+    if (!$SHOW_ONLY_GROUPS && !$workerID) {
         show_test($test_idx, $shortname);
     }
 
@@ -2071,9 +2155,6 @@
         // Make sure warnings still show up on the second run.
         $ini_settings['opcache.record_warnings'] = '1';
     }
-    if (extension_loaded('posix') && posix_getuid() === 0) {
-        $ini_settings['opcache.preload_user'] = 'root';
-    }
 
     // Any special ini settings
     // these may overwrite the test defaults...
@@ -2212,17 +2293,17 @@
 
             $junit->markTestAs('PASS', $shortname, $tested);
             return 'REDIR';
+        } else {
+            $bork_info = "Redirect info must contain exactly one TEST string to be used as redirect directory.";
+            show_result("BORK", $bork_info, '', '', $temp_filenames);
+            $PHP_FAILED_TESTS['BORKED'][] = [
+                'name' => $file,
+                'test_name' => '',
+                'output' => '',
+                'diff' => '',
+                'info' => "$bork_info [$file]",
+            ];
         }
-
-        $bork_info = "Redirect info must contain exactly one TEST string to be used as redirect directory.";
-        show_result("BORK", $bork_info, '', '', $temp_filenames);
-        $PHP_FAILED_TESTS['BORKED'][] = [
-            'name' => $file,
-            'test_name' => '',
-            'output' => '',
-            'diff' => '',
-            'info' => "$bork_info [$file]",
-        ];
     }
 
     if (is_array($org_file) || $test->hasSection('REDIRECTTEST')) {
@@ -2439,9 +2520,7 @@
         ];
     }
 
-    // Remember CLEAN output to report borked test if it otherwise passes.
-    $clean_output = null;
-    if ((!$no_clean || $cfg['keep']['clean']) && $test->sectionNotEmpty('CLEAN')) {
+    if ($test->sectionNotEmpty('CLEAN') && (!$no_clean || $cfg['keep']['clean'])) {
         show_file_block('clean', $test->getSection('CLEAN'));
         save_text($test_clean, trim($test->getSection('CLEAN')), $temp_clean);
 
@@ -2448,7 +2527,7 @@
         if (!$no_clean) {
             $extra = !IS_WINDOWS ?
                 "unset REQUEST_METHOD; unset QUERY_STRING; unset PATH_TRANSLATED; unset SCRIPT_FILENAME; unset REQUEST_METHOD;" : "";
-            $clean_output = system_with_timeout("$extra $orig_php $pass_options -q $orig_ini_settings $no_file_cache \"$test_clean\"", $env);
+            system_with_timeout("$extra $php $pass_options $extra_options -q $orig_ini_settings $no_file_cache \"$test_clean\"", $env);
         }
 
         if (!$cfg['keep']['clean']) {
@@ -2504,8 +2583,6 @@
         }
     }
 
-    $wanted_headers = null;
-    $output_headers = null;
     $failed_headers = false;
 
     if ($test->hasSection('EXPECTHEADERS')) {
@@ -2585,24 +2662,42 @@
             $wanted_re = $temp;
 
             // Stick to basics
-            $wanted_re = strtr($wanted_re, [
-                '%e' => preg_quote(DIRECTORY_SEPARATOR, '/'),
-                '%s' => '[^\r\n]+',
-                '%S' => '[^\r\n]*',
-                '%a' => '.+',
-                '%A' => '.*',
-                '%w' => '\s*',
-                '%i' => '[+-]?\d+',
-                '%d' => '\d+',
-                '%x' => '[0-9a-fA-F]+',
-                '%f' => '[+-]?(?:\d+|(?=\.\d))(?:\.\d+)?(?:[Ee][+-]?\d+)?',
-                '%c' => '.',
-                '%0' => '\x00',
-            ]);
+            $wanted_re = str_replace('%e', '\\' . DIRECTORY_SEPARATOR, $wanted_re);
+            $wanted_re = str_replace('%s', '[^\r\n]+', $wanted_re);
+            $wanted_re = str_replace('%S', '[^\r\n]*', $wanted_re);
+            $wanted_re = str_replace('%a', '.+', $wanted_re);
+            $wanted_re = str_replace('%A', '.*', $wanted_re);
+            $wanted_re = str_replace('%w', '\s*', $wanted_re);
+            $wanted_re = str_replace('%i', '[+-]?\d+', $wanted_re);
+            $wanted_re = str_replace('%d', '\d+', $wanted_re);
+            $wanted_re = str_replace('%x', '[0-9a-fA-F]+', $wanted_re);
+            $wanted_re = str_replace('%f', '[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?', $wanted_re);
+            $wanted_re = str_replace('%c', '.', $wanted_re);
+            $wanted_re = str_replace('%0', '\x00', $wanted_re);
+            // %f allows two points "-.0.0" but that is the best *simple* expression
         }
 
-        if (preg_match('/^' . $wanted_re . '$/s', $output)) {
+        if (preg_match("/^$wanted_re\$/s", $output)) {
             $passed = true;
+            if (!$cfg['keep']['php'] && !$leaked) {
+                @unlink($test_file);
+                @unlink($preload_filename);
+            }
+            @unlink($tmp_post);
+
+            if (!$leaked && !$failed_headers) {
+                if ($test->hasSection('XFAIL')) {
+                    $warn = true;
+                    $info = " (warn: XFAIL section but test passes)";
+                } elseif ($test->hasSection('XLEAK')) {
+                    $warn = true;
+                    $info = " (warn: XLEAK section but test passes)";
+                } else {
+                    show_result("PASS", $tested, $tested_file, '', $temp_filenames);
+                    $junit->markTestAs('PASS', $shortname, $tested);
+                    return 'PASSED';
+                }
+            }
         }
     } else {
         $wanted = trim($test->getSection('EXPECT'));
@@ -2612,46 +2707,29 @@
         // compare and leave on success
         if (!strcmp($output, $wanted)) {
             $passed = true;
-        }
 
-        $wanted_re = null;
-    }
-
-    if ($passed) {
-        if (!$cfg['keep']['php'] && !$leaked) {
-            @unlink($test_file);
-            @unlink($preload_filename);
-        }
-        @unlink($tmp_post);
-
-        if (!$leaked && !$failed_headers) {
-            // If the test passed and CLEAN produced output, report test as borked.
-            if ($clean_output) {
-                show_result("BORK", $output, $tested_file, 'reason: invalid output from CLEAN', $temp_filenames);
-                    $PHP_FAILED_TESTS['BORKED'][] = [
-                    'name' => $file,
-                    'test_name' => '',
-                    'output' => '',
-                    'diff' => '',
-                    'info' => "$clean_output [$file]",
-                ];
-
-                $junit->markTestAs('BORK', $shortname, $tested, null, $clean_output);
-                return 'BORKED';
+            if (!$cfg['keep']['php'] && !$leaked) {
+                @unlink($test_file);
+                @unlink($preload_filename);
             }
+            @unlink($tmp_post);
 
-            if ($test->hasSection('XFAIL')) {
-                $warn = true;
-                $info = " (warn: XFAIL section but test passes)";
-            } elseif ($test->hasSection('XLEAK')) {
-                $warn = true;
-                $info = " (warn: XLEAK section but test passes)";
-            } else {
-                show_result("PASS", $tested, $tested_file, '', $temp_filenames);
-                $junit->markTestAs('PASS', $shortname, $tested);
-                return 'PASSED';
+            if (!$leaked && !$failed_headers) {
+                if ($test->hasSection('XFAIL')) {
+                    $warn = true;
+                    $info = " (warn: XFAIL section but test passes)";
+                } elseif ($test->hasSection('XLEAK')) {
+                    $warn = true;
+                    $info = " (warn: XLEAK section but test passes)";
+                } else {
+                    show_result("PASS", $tested, $tested_file, '', $temp_filenames);
+                    $junit->markTestAs('PASS', $shortname, $tested);
+                    return 'PASSED';
+                }
             }
         }
+
+        $wanted_re = null;
     }
 
     // Test failed so we need to report details.
@@ -2665,8 +2743,6 @@
         }
     }
 
-    $restype = [];
-
     if ($leaked) {
         $restype[] = $test->hasSection('XLEAK') ?
                         'XLEAK' : 'LEAK';
@@ -2700,19 +2776,12 @@
         }
 
         // write .diff
-        if (!empty($environment['TEST_PHP_DIFF_CMD'])) {
-            $diff = generate_diff_external($environment['TEST_PHP_DIFF_CMD'], $exp_filename, $output_filename);
-        } else {
-            $diff = generate_diff($wanted, $wanted_re, $output);
-        }
-
+        $diff = generate_diff($wanted, $wanted_re, $output);
         if (is_array($IN_REDIRECT)) {
             $orig_shortname = str_replace(TEST_PHP_SRCDIR . '/', '', $file);
             $diff = "# original source file: $orig_shortname\n" . $diff;
         }
-        if (!$SHOW_ONLY_GROUPS || array_intersect($restype, $SHOW_ONLY_GROUPS)) {
-            show_file_block('diff', $diff);
-        }
+        show_file_block('diff', $diff);
         if (strpos($log_format, 'D') !== false && file_put_contents($diff_filename, $diff) === false) {
             error("Cannot create test diff - $diff_filename");
         }
@@ -2745,14 +2814,11 @@
 "gdb")
     gdb --args {$orig_cmd}
     ;;
-"lldb")
-    lldb -- {$orig_cmd}
-    ;;
 "valgrind")
-    USE_ZEND_ALLOC=0 valgrind $2 {$orig_cmd}
+    USE_ZEND_ALLOC=0 valgrind $2 ${orig_cmd}
     ;;
 "rr")
-    rr record $2 {$orig_cmd}
+    rr record $2 ${orig_cmd}
     ;;
 *)
     {$orig_cmd}
@@ -2796,9 +2862,9 @@
 {
     if ($is_reg) {
         return preg_match('/^' . $l1 . '$/s', $l2);
+    } else {
+        return !strcmp($l1, $l2);
     }
-
-    return !strcmp($l1, $l2);
 }
 
 function count_array_diff(
@@ -2874,20 +2940,20 @@
             $idx1++;
             $idx2++;
             continue;
-        }
+        } else {
+            $c1 = @count_array_diff($ar1, $ar2, $is_reg, $w, $idx1 + 1, $idx2, $cnt1, $cnt2, 10);
+            $c2 = @count_array_diff($ar1, $ar2, $is_reg, $w, $idx1, $idx2 + 1, $cnt1, $cnt2, 10);
 
-        $c1 = @count_array_diff($ar1, $ar2, $is_reg, $w, $idx1 + 1, $idx2, $cnt1, $cnt2, 10);
-        $c2 = @count_array_diff($ar1, $ar2, $is_reg, $w, $idx1, $idx2 + 1, $cnt1, $cnt2, 10);
-
-        if ($c1 > $c2) {
-            $old1[$idx1] = sprintf("{$line_number_spec}- ", $idx1 + 1) . $w[$idx1++];
-        } elseif ($c2 > 0) {
-            $old2[$idx2] = sprintf("{$line_number_spec}+ ", $idx2 + 1) . $ar2[$idx2++];
-        } else {
-            $old1[$idx1] = sprintf("{$line_number_spec}- ", $idx1 + 1) . $w[$idx1++];
-            $old2[$idx2] = sprintf("{$line_number_spec}+ ", $idx2 + 1) . $ar2[$idx2++];
+            if ($c1 > $c2) {
+                $old1[$idx1] = sprintf("{$line_number_spec}- ", $idx1 + 1) . $w[$idx1++];
+            } elseif ($c2 > 0) {
+                $old2[$idx2] = sprintf("{$line_number_spec}+ ", $idx2 + 1) . $ar2[$idx2++];
+            } else {
+                $old1[$idx1] = sprintf("{$line_number_spec}- ", $idx1 + 1) . $w[$idx1++];
+                $old2[$idx2] = sprintf("{$line_number_spec}+ ", $idx2 + 1) . $ar2[$idx2++];
+            }
+            $last_printed_context_line = $idx1;
         }
-        $last_printed_context_line = $idx1;
     }
     $mapping[$idx2] = $idx1;
 
@@ -2968,13 +3034,6 @@
     return $diff;
 }
 
-function generate_diff_external(string $diff_cmd, string $exp_file, string $output_file): string
-{
-    $retval = shell_exec("{$diff_cmd} {$exp_file} {$output_file}");
-
-    return is_string($retval) ? $retval : 'Could not run external diff tool set through PHP_TEST_DIFF_CMD environment variable';
-}
-
 function generate_diff(string $wanted, ?string $wanted_re, string $output): string
 {
     $w = explode("\n", $wanted);
@@ -3250,11 +3309,11 @@
 
 function show_redirect_start(string $tests, string $tested, string $tested_file): void
 {
-    global $SHOW_ONLY_GROUPS, $show_progress;
+    global $SHOW_ONLY_GROUPS;
 
     if (!$SHOW_ONLY_GROUPS || in_array('REDIRECT', $SHOW_ONLY_GROUPS)) {
         echo "REDIRECT $tests ($tested [$tested_file]) begin\n";
-    } elseif ($show_progress) {
+    } else {
         clear_show_test();
     }
 }
@@ -3261,11 +3320,11 @@
 
 function show_redirect_ends(string $tests, string $tested, string $tested_file): void
 {
-    global $SHOW_ONLY_GROUPS, $show_progress;
+    global $SHOW_ONLY_GROUPS;
 
     if (!$SHOW_ONLY_GROUPS || in_array('REDIRECT', $SHOW_ONLY_GROUPS)) {
         echo "REDIRECT $tests ($tested [$tested_file]) done\n";
-    } elseif ($show_progress) {
+    } else {
         clear_show_test();
     }
 }
@@ -3307,7 +3366,7 @@
     string $extra = '',
     ?array $temp_filenames = null
 ): void {
-    global $SHOW_ONLY_GROUPS, $colorize, $show_progress;
+    global $SHOW_ONLY_GROUPS, $colorize;
 
     if (!$SHOW_ONLY_GROUPS || in_array($result, $SHOW_ONLY_GROUPS)) {
         if ($colorize) {
@@ -3329,9 +3388,10 @@
         } else {
             echo "$result $tested [$tested_file] $extra\n";
         }
-    } elseif ($show_progress) {
+    } elseif (!$SHOW_ONLY_GROUPS) {
         clear_show_test();
     }
+
 }
 
 class BorkageException extends Exception
@@ -3685,8 +3745,8 @@
             return $this->extensions[$php];
         }
 
-        $extDir = shell_exec("$php -d display_errors=0 -r \"echo ini_get('extension_dir');\"");
-        $extensions = explode(",", shell_exec("$php -d display_errors=0 -r \"echo implode(',', get_loaded_extensions());\""));
+        $extDir = `$php -d display_errors=0 -r "echo ini_get('extension_dir');"`;
+        $extensions = explode(",", `$php -d display_errors=0 -r "echo implode(',', get_loaded_extensions());"`);
         $extensions = array_map('strtolower', $extensions);
         if (in_array('zend opcache', $extensions)) {
             $extensions[] = 'opcache';



More information about the mapguide-commits mailing list