[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