mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
[RFC] Add support for attributes on compile-time constants
https://wiki.php.net/rfc/attributes-on-constants
This commit is contained in:
parent
2fea4efa8f
commit
3f03f7ed3d
66 changed files with 1859 additions and 581 deletions
|
@ -133,6 +133,10 @@ PHP 8.5 UPGRADE NOTES
|
|||
. Added asymmetric visibility support for static properties.
|
||||
RFC: https://wiki.php.net/rfc/static-aviz
|
||||
. Added support for casts in constant expressions.
|
||||
. Added support for attributes on compile-time non-class constants.
|
||||
RFC: https://wiki.php.net/rfc/attributes-on-constants
|
||||
. The #[\Deprecated] attribute can now be used on constants.
|
||||
RFC: https://wiki.php.net/rfc/attributes-on-constants
|
||||
|
||||
- Curl:
|
||||
. Added support for share handles that are persisted across multiple PHP
|
||||
|
@ -337,6 +341,8 @@ PHP 8.5 UPGRADE NOTES
|
|||
. ReflectionConstant::getFileName() was introduced.
|
||||
. ReflectionConstant::getExtension() and
|
||||
ReflectionConstant::getExtensionName() were introduced.
|
||||
. ReflectionConstant::getAttributes() was introduced.
|
||||
RFC: https://wiki.php.net/rfc/attributes-on-constants
|
||||
|
||||
========================================
|
||||
7. New Classes and Interfaces
|
||||
|
|
|
@ -25,6 +25,9 @@ $f2 = #[A1(9)] function () { };
|
|||
|
||||
$f3 = #[A1(10)] fn () => 1;
|
||||
|
||||
#[A1(11)]
|
||||
const CT_CONSTANT = 'Demo';
|
||||
|
||||
$ref = new \ReflectionClass(Foo::class);
|
||||
|
||||
$sources = [
|
||||
|
@ -37,7 +40,8 @@ $sources = [
|
|||
new \ReflectionObject($object),
|
||||
new \ReflectionFunction('f1'),
|
||||
new \ReflectionFunction($f2),
|
||||
new \ReflectionFunction($f3)
|
||||
new \ReflectionFunction($f3),
|
||||
new \ReflectionConstant('CT_CONSTANT'),
|
||||
];
|
||||
|
||||
foreach ($sources as $r) {
|
||||
|
@ -132,3 +136,11 @@ array(1) {
|
|||
[0]=>
|
||||
int(10)
|
||||
}
|
||||
|
||||
string(18) "ReflectionConstant"
|
||||
int(1)
|
||||
string(2) "A1"
|
||||
array(1) {
|
||||
[0]=>
|
||||
int(11)
|
||||
}
|
||||
|
|
|
@ -18,6 +18,9 @@ var_dump($rcc->getAttributes());
|
|||
$rp = new ReflectionProperty('Exception', 'message');
|
||||
var_dump($rp->getAttributes());
|
||||
|
||||
$rct = new ReflectionConstant('PHP_VERSION');
|
||||
var_dump($rct->getAttributes());
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
array(0) {
|
||||
|
@ -30,3 +33,5 @@ array(0) {
|
|||
}
|
||||
array(0) {
|
||||
}
|
||||
array(0) {
|
||||
}
|
||||
|
|
39
Zend/tests/attributes/034_target_values.phpt
Normal file
39
Zend/tests/attributes/034_target_values.phpt
Normal file
|
@ -0,0 +1,39 @@
|
|||
--TEST--
|
||||
Attribute flags are all different, TARGET_ALL includes all targets
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
function showFlag(string $name, int $value) {
|
||||
$all = Attribute::TARGET_ALL;
|
||||
$and = $all & $value;
|
||||
echo "Attribute::$name = $value ($all & $value === $and)\n";
|
||||
}
|
||||
|
||||
showFlag("TARGET_CLASS", Attribute::TARGET_CLASS);
|
||||
showFlag("TARGET_FUNCTION", Attribute::TARGET_FUNCTION);
|
||||
showFlag("TARGET_METHOD", Attribute::TARGET_METHOD);
|
||||
showFlag("TARGET_PROPERTY", Attribute::TARGET_PROPERTY);
|
||||
showFlag("TARGET_CLASS_CONSTANT", Attribute::TARGET_CLASS_CONSTANT);
|
||||
showFlag("TARGET_PARAMETER", Attribute::TARGET_PARAMETER);
|
||||
showFlag("TARGET_CONSTANT", Attribute::TARGET_CONSTANT);
|
||||
showFlag("IS_REPEATABLE", Attribute::IS_REPEATABLE);
|
||||
|
||||
$all = Attribute::TARGET_CLASS | Attribute::TARGET_FUNCTION
|
||||
| Attribute::TARGET_METHOD | Attribute::TARGET_PROPERTY
|
||||
| Attribute::TARGET_CLASS_CONSTANT | Attribute::TARGET_PARAMETER
|
||||
| Attribute::TARGET_CONSTANT;
|
||||
var_dump($all, Attribute::TARGET_ALL, $all === Attribute::TARGET_ALL);
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
Attribute::TARGET_CLASS = 1 (127 & 1 === 1)
|
||||
Attribute::TARGET_FUNCTION = 2 (127 & 2 === 2)
|
||||
Attribute::TARGET_METHOD = 4 (127 & 4 === 4)
|
||||
Attribute::TARGET_PROPERTY = 8 (127 & 8 === 8)
|
||||
Attribute::TARGET_CLASS_CONSTANT = 16 (127 & 16 === 16)
|
||||
Attribute::TARGET_PARAMETER = 32 (127 & 32 === 32)
|
||||
Attribute::TARGET_CONSTANT = 64 (127 & 64 === 64)
|
||||
Attribute::IS_REPEATABLE = 128 (127 & 128 === 0)
|
||||
int(127)
|
||||
int(127)
|
||||
bool(true)
|
39
Zend/tests/attributes/constants/allow_named_parameters.phpt
Normal file
39
Zend/tests/attributes/constants/allow_named_parameters.phpt
Normal file
|
@ -0,0 +1,39 @@
|
|||
--TEST--
|
||||
Verify that named parameters can be passed to attributes on constants
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[Attribute]
|
||||
class MyAttribute {
|
||||
public function __construct($first, $second) {
|
||||
echo "first: $first\n";
|
||||
echo "second: $second\n";
|
||||
}
|
||||
}
|
||||
|
||||
#[MyAttribute(second: "bar", first: "foo")]
|
||||
const EXAMPLE = 'ignored';
|
||||
|
||||
$ref = new ReflectionConstant('EXAMPLE');
|
||||
$attribs = $ref->getAttributes();
|
||||
var_dump($attribs);
|
||||
var_dump($attribs[0]->getArguments());
|
||||
$attribs[0]->newInstance();
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(11) "MyAttribute"
|
||||
}
|
||||
}
|
||||
array(2) {
|
||||
["second"]=>
|
||||
string(3) "bar"
|
||||
["first"]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
first: foo
|
||||
second: bar
|
34
Zend/tests/attributes/constants/ast_export.phpt
Normal file
34
Zend/tests/attributes/constants/ast_export.phpt
Normal file
|
@ -0,0 +1,34 @@
|
|||
--TEST--
|
||||
AST can be recreated when constants have attributes
|
||||
--EXTENSIONS--
|
||||
zend_test
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[MyAttrib]
|
||||
const WITH_ATTRIBUTE = true;
|
||||
|
||||
#[First]
|
||||
#[Second]
|
||||
const WITH_UNGROUPED = true;
|
||||
|
||||
#[First, Second]
|
||||
const WITH_GROUPED = true;
|
||||
|
||||
#[MyAttrib(5, param: "example")]
|
||||
const WITH_PARAMETERS = true;
|
||||
|
||||
echo zend_test_compile_to_ast(file_get_contents(__FILE__));
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
#[MyAttrib]
|
||||
const WITH_ATTRIBUTE = true;
|
||||
#[First]
|
||||
#[Second]
|
||||
const WITH_UNGROUPED = true;
|
||||
#[First, Second]
|
||||
const WITH_GROUPED = true;
|
||||
#[MyAttrib(5, param: 'example')]
|
||||
const WITH_PARAMETERS = true;
|
||||
echo zend_test_compile_to_ast(file_get_contents(__FILE__));
|
|
@ -0,0 +1,11 @@
|
|||
--TEST--
|
||||
Constants listed in valid targets when used wrong (internal attribute)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[Deprecated]
|
||||
class Example {}
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Fatal error: Attribute "Deprecated" cannot target class (allowed targets: function, method, class constant, constant) in %s on line %d
|
|
@ -0,0 +1,31 @@
|
|||
--TEST--
|
||||
Constants listed in valid targets when used wrong (userland attribute)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[Attribute(Attribute::TARGET_CONSTANT)]
|
||||
class MyConstantAttribute {}
|
||||
|
||||
#[MyConstantAttribute]
|
||||
class Example {}
|
||||
|
||||
$ref = new ReflectionClass(Example::class);
|
||||
$attribs = $ref->getAttributes();
|
||||
var_dump($attribs);
|
||||
$attribs[0]->newInstance();
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(19) "MyConstantAttribute"
|
||||
}
|
||||
}
|
||||
|
||||
Fatal error: Uncaught Error: Attribute "MyConstantAttribute" cannot target class (allowed targets: constant) in %s:%d
|
||||
Stack trace:
|
||||
#0 %s(%d): ReflectionAttribute->newInstance()
|
||||
#1 {main}
|
||||
thrown in %s on line %d
|
|
@ -0,0 +1,21 @@
|
|||
--TEST--
|
||||
If a constant is redefined, attributes remain unchanged (no attributes)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
const MY_CONST = "No attributes";
|
||||
|
||||
#[\MyAttribute]
|
||||
const MY_CONST = "Has attributes";
|
||||
|
||||
echo MY_CONST . "\n";
|
||||
|
||||
$reflection = new ReflectionConstant('MY_CONST');
|
||||
var_dump($reflection->getAttributes())
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Warning: Constant MY_CONST already defined in %s on line %d
|
||||
No attributes
|
||||
array(0) {
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
--TEST--
|
||||
If a constant is redefined, attributes remain unchanged (different attributes)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[\MyAttribute]
|
||||
const MY_CONST = "Has attributes (1)";
|
||||
|
||||
#[\MyOtherAttribute]
|
||||
const MY_CONST = "Has attributes (2)";
|
||||
|
||||
echo MY_CONST . "\n";
|
||||
|
||||
$reflection = new ReflectionConstant('MY_CONST');
|
||||
var_dump($reflection->getAttributes())
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Warning: Constant MY_CONST already defined in %s on line %d
|
||||
Has attributes (1)
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(11) "MyAttribute"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
--TEST--
|
||||
If a constant is redefined, attributes remain unchanged (had attributes)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[\MyAttribute]
|
||||
const MY_CONST = "Has attributes";
|
||||
|
||||
const MY_CONST = "No attributes";
|
||||
|
||||
echo MY_CONST . "\n";
|
||||
|
||||
$reflection = new ReflectionConstant('MY_CONST');
|
||||
var_dump($reflection->getAttributes())
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Warning: Constant MY_CONST already defined in %s on line %d
|
||||
Has attributes
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(11) "MyAttribute"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
--TEST--
|
||||
Multiple attributes in a group are allowed
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[\Foo, \Bar]
|
||||
const CONSTANT = 1;
|
||||
|
||||
$ref = new ReflectionConstant('CONSTANT');
|
||||
var_dump($ref->getAttributes());
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(3) "Foo"
|
||||
}
|
||||
[1]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(3) "Bar"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
--TEST--
|
||||
Multiple attributes in separate groups are allowed
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[\Foo]
|
||||
#[\Bar]
|
||||
const CONSTANT = 1;
|
||||
|
||||
$ref = new ReflectionConstant('CONSTANT');
|
||||
var_dump($ref->getAttributes());
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(3) "Foo"
|
||||
}
|
||||
[1]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(3) "Bar"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
--TEST--
|
||||
Error trying to add attributes to multiple constants at once
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[\Foo]
|
||||
const First = 1,
|
||||
Second = 2;
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Fatal error: Cannot apply attributes to multiple constants at once in %s on line %d
|
|
@ -0,0 +1,11 @@
|
|||
--TEST--
|
||||
Error when attribute does not target constants (internal attribute)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[Attribute]
|
||||
const EXAMPLE = 'Foo';
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Fatal error: Attribute "Attribute" cannot target constant (allowed targets: class) in %s on line %d
|
|
@ -0,0 +1,31 @@
|
|||
--TEST--
|
||||
Error when attribute does not target constants (useland attribute)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[Attribute(Attribute::TARGET_FUNCTION)]
|
||||
class MyFunctionAttribute {}
|
||||
|
||||
#[MyFunctionAttribute]
|
||||
const EXAMPLE = 'Foo';
|
||||
|
||||
$ref = new ReflectionConstant('EXAMPLE');
|
||||
$attribs = $ref->getAttributes();
|
||||
var_dump($attribs);
|
||||
$attribs[0]->newInstance();
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(19) "MyFunctionAttribute"
|
||||
}
|
||||
}
|
||||
|
||||
Fatal error: Uncaught Error: Attribute "MyFunctionAttribute" cannot target constant (allowed targets: function) in %s:%d
|
||||
Stack trace:
|
||||
#0 %s(%d): ReflectionAttribute->newInstance()
|
||||
#1 {main}
|
||||
thrown in %s on line %d
|
12
Zend/tests/attributes/constants/not_repeatable-internal.phpt
Normal file
12
Zend/tests/attributes/constants/not_repeatable-internal.phpt
Normal file
|
@ -0,0 +1,12 @@
|
|||
--TEST--
|
||||
Validation of attribute repetition (not allowed; internal attribute)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[Deprecated]
|
||||
#[Deprecated]
|
||||
const MY_CONST = true;
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Fatal error: Attribute "Deprecated" must not be repeated in %s on line %d
|
36
Zend/tests/attributes/constants/not_repeatable-userland.phpt
Normal file
36
Zend/tests/attributes/constants/not_repeatable-userland.phpt
Normal file
|
@ -0,0 +1,36 @@
|
|||
--TEST--
|
||||
Validation of attribute repetition (not allowed; userland attribute)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[Attribute]
|
||||
class MyAttribute {}
|
||||
|
||||
#[MyAttribute]
|
||||
#[MyAttribute]
|
||||
const MY_CONST = true;
|
||||
|
||||
$attributes = new ReflectionConstant('MY_CONST')->getAttributes();
|
||||
var_dump($attributes);
|
||||
$attributes[0]->newInstance();
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(11) "MyAttribute"
|
||||
}
|
||||
[1]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(11) "MyAttribute"
|
||||
}
|
||||
}
|
||||
|
||||
Fatal error: Uncaught Error: Attribute "MyAttribute" must not be repeated in %s:%d
|
||||
Stack trace:
|
||||
#0 %s(%d): ReflectionAttribute->newInstance()
|
||||
#1 {main}
|
||||
thrown in %s on line %d
|
16
Zend/tests/attributes/constants/repeatable-internal.phpt
Normal file
16
Zend/tests/attributes/constants/repeatable-internal.phpt
Normal file
|
@ -0,0 +1,16 @@
|
|||
--TEST--
|
||||
Validation of attribute repetition (is allowed; internal attribute)
|
||||
--EXTENSIONS--
|
||||
zend_test
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[ZendTestRepeatableAttribute]
|
||||
#[ZendTestRepeatableAttribute]
|
||||
const MY_CONST = true;
|
||||
|
||||
echo "Done\n";
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
Done
|
30
Zend/tests/attributes/constants/repeatable-userland.phpt
Normal file
30
Zend/tests/attributes/constants/repeatable-userland.phpt
Normal file
|
@ -0,0 +1,30 @@
|
|||
--TEST--
|
||||
Validation of attribute repetition (is allowed; userland attribute)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[Attribute(Attribute::TARGET_ALL|Attribute::IS_REPEATABLE)]
|
||||
class MyAttribute {}
|
||||
|
||||
#[MyAttribute]
|
||||
#[MyAttribute]
|
||||
const MY_CONST = true;
|
||||
|
||||
$attributes = new ReflectionConstant('MY_CONST')->getAttributes();
|
||||
var_dump($attributes);
|
||||
$attributes[0]->newInstance();
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(11) "MyAttribute"
|
||||
}
|
||||
[1]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(11) "MyAttribute"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
--TEST--
|
||||
Attributes with TARGET_ALL (from the default) can target constants
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[Attribute]
|
||||
class MyAttribute {}
|
||||
|
||||
#[MyAttribute]
|
||||
const EXAMPLE = 'Foo';
|
||||
|
||||
$ref = new ReflectionConstant('EXAMPLE');
|
||||
$attribs = $ref->getAttributes();
|
||||
var_dump($attribs);
|
||||
$attribs[0]->newInstance();
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(11) "MyAttribute"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
--TEST--
|
||||
Attributes with TARGET_ALL (from an explicit parameter) can target constants
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[Attribute(Attribute::TARGET_ALL)]
|
||||
class MyAttribute {}
|
||||
|
||||
#[MyAttribute]
|
||||
const EXAMPLE = 'Foo';
|
||||
|
||||
$ref = new ReflectionConstant('EXAMPLE');
|
||||
$attribs = $ref->getAttributes();
|
||||
var_dump($attribs);
|
||||
$attribs[0]->newInstance();
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(11) "MyAttribute"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
--TEST--
|
||||
#[\Deprecated]: Messages on compile time constants.
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[\Deprecated]
|
||||
const DeprecatedConst1 = 1;
|
||||
|
||||
#[\Deprecated("use DEPRECATED_CONST_2")]
|
||||
const DeprecatedConst2 = 2;
|
||||
|
||||
#[\Deprecated(message: "use DEPRECATED_CONST_3")]
|
||||
const DeprecatedConst3 = 3;
|
||||
|
||||
#[\Deprecated(message: "use DEPRECATED_CONST_4", since: "1.0")]
|
||||
const DeprecatedConst4 = 4;
|
||||
|
||||
#[\Deprecated("use DEPRECATED_CONST_5", "1.0")]
|
||||
const DeprecatedConst5 = 5;
|
||||
|
||||
#[\Deprecated(since: "1.0")]
|
||||
const DeprecatedConst6 = 6;
|
||||
|
||||
echo DeprecatedConst1 . "\n";
|
||||
echo DeprecatedConst2 . "\n";
|
||||
echo DeprecatedConst3 . "\n";
|
||||
echo DeprecatedConst4 . "\n";
|
||||
echo DeprecatedConst5 . "\n";
|
||||
echo DeprecatedConst6 . "\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Deprecated: Constant DeprecatedConst1 is deprecated in %s on line %d
|
||||
1
|
||||
|
||||
Deprecated: Constant DeprecatedConst2 is deprecated, use DEPRECATED_CONST_2 in %s on line %d
|
||||
2
|
||||
|
||||
Deprecated: Constant DeprecatedConst3 is deprecated, use DEPRECATED_CONST_3 in %s on line %d
|
||||
3
|
||||
|
||||
Deprecated: Constant DeprecatedConst4 is deprecated since 1.0, use DEPRECATED_CONST_4 in %s on line %d
|
||||
4
|
||||
|
||||
Deprecated: Constant DeprecatedConst5 is deprecated since 1.0, use DEPRECATED_CONST_5 in %s on line %d
|
||||
5
|
||||
|
||||
Deprecated: Constant DeprecatedConst6 is deprecated since 1.0 in %s on line %d
|
||||
6
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
--TEST--
|
||||
#[\Deprecated]: Using the value of a deprecated constant as the deprecation message.
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[\Deprecated(TEST)]
|
||||
const TEST = "from itself";
|
||||
|
||||
#[\Deprecated]
|
||||
const TEST2 = "from another";
|
||||
|
||||
#[\Deprecated(TEST2)]
|
||||
const TEST3 = 1;
|
||||
|
||||
TEST;
|
||||
TEST3;
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Deprecated: Constant TEST is deprecated, from itself in %s on line %d
|
||||
|
||||
Deprecated: Constant TEST2 is deprecated in %s on line %d
|
||||
|
||||
Deprecated: Constant TEST3 is deprecated, from another in %s on line %d
|
|
@ -0,0 +1,34 @@
|
|||
--TEST--
|
||||
#[\Deprecated]: Using the value of a deprecated constant as the deprecation message with a throwing error handler.
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
set_error_handler(function (int $errno, string $errstr, ?string $errfile = null, ?int $errline = null) {
|
||||
throw new \ErrorException($errstr, 0, $errno, $errfile, $errline);
|
||||
});
|
||||
|
||||
#[\Deprecated(TEST)]
|
||||
const TEST = "from itself";
|
||||
|
||||
#[\Deprecated]
|
||||
const TEST2 = "from another";
|
||||
|
||||
#[\Deprecated(TEST2)]
|
||||
const TEST3 = 1;
|
||||
|
||||
try {
|
||||
TEST;
|
||||
} catch (ErrorException $e) {
|
||||
echo "Caught: ", $e->getMessage(), PHP_EOL;
|
||||
}
|
||||
|
||||
try {
|
||||
TEST3;
|
||||
} catch (ErrorException $e) {
|
||||
echo "Caught: ", $e->getMessage(), PHP_EOL;
|
||||
}
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
Caught: Constant TEST is deprecated, from itself
|
||||
Caught: Constant TEST2 is deprecated
|
|
@ -0,0 +1,21 @@
|
|||
--TEST--
|
||||
#[\Deprecated]: Using the value of a deprecated constant in a constant expression.
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[\Deprecated("prefix")]
|
||||
const PREFIX = "prefix";
|
||||
|
||||
#[\Deprecated("suffix")]
|
||||
const SUFFIX = "suffix";
|
||||
|
||||
const CONSTANT = PREFIX . SUFFIX;
|
||||
|
||||
var_dump(CONSTANT);
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Deprecated: Constant PREFIX is deprecated, prefix in %s on line %d
|
||||
|
||||
Deprecated: Constant SUFFIX is deprecated, suffix in %s on line %d
|
||||
string(12) "prefixsuffix"
|
19
Zend/tests/attributes/deprecated/constants/error_code.phpt
Normal file
19
Zend/tests/attributes/deprecated/constants/error_code.phpt
Normal file
|
@ -0,0 +1,19 @@
|
|||
--TEST--
|
||||
#[\Deprecated]: Code is E_USER_DEPRECATED for constants.
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
set_error_handler(function (int $errno, string $errstr, ?string $errfile = null, ?int $errline = null) {
|
||||
var_dump($errno, E_USER_DEPRECATED, $errno === E_USER_DEPRECATED);
|
||||
});
|
||||
|
||||
#[\Deprecated]
|
||||
const EXAMPLE = 5;
|
||||
|
||||
EXAMPLE;
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
int(16384)
|
||||
int(16384)
|
||||
bool(true)
|
|
@ -0,0 +1,19 @@
|
|||
--TEST--
|
||||
#[\Deprecated]: Constant with value unknown at compile time.
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
define('SUFFIX', random_int(1, 2) == 1 ? 'a' : 'b');
|
||||
|
||||
#[\Deprecated]
|
||||
const CONSTANT = 'Prefix-' . SUFFIX;
|
||||
|
||||
$value = CONSTANT;
|
||||
var_dump($value);
|
||||
var_dump($value === 'Prefix-' . SUFFIX);
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Deprecated: Constant CONSTANT is deprecated in %s on line %d
|
||||
string(8) "Prefix-%c"
|
||||
bool(true)
|
|
@ -1631,11 +1631,14 @@ static ZEND_COLD void zend_ast_export_var(smart_str *str, zend_ast *ast, int pri
|
|||
smart_str_appendc(str, '}');
|
||||
}
|
||||
|
||||
static ZEND_COLD void zend_ast_export_list(smart_str *str, zend_ast_list *list, bool separator, int priority, int indent)
|
||||
/* Use zend_ast_export_list() unless fewer than `list->children` children should
|
||||
* be exported. */
|
||||
static ZEND_COLD void zend_ast_export_list_ex(smart_str *str, zend_ast_list *list, bool separator, int priority, int indent, int children)
|
||||
{
|
||||
ZEND_ASSERT(children <= list->children);
|
||||
uint32_t i = 0;
|
||||
|
||||
while (i < list->children) {
|
||||
while (i < children) {
|
||||
if (i != 0 && separator) {
|
||||
smart_str_appends(str, ", ");
|
||||
}
|
||||
|
@ -1644,6 +1647,11 @@ static ZEND_COLD void zend_ast_export_list(smart_str *str, zend_ast_list *list,
|
|||
}
|
||||
}
|
||||
|
||||
static ZEND_COLD void zend_ast_export_list(smart_str *str, zend_ast_list *list, bool separator, int priority, int indent)
|
||||
{
|
||||
zend_ast_export_list_ex(str, list, separator, priority, indent, list->children);
|
||||
}
|
||||
|
||||
static ZEND_COLD void zend_ast_export_encaps_list(smart_str *str, char quote, zend_ast_list *list, int indent)
|
||||
{
|
||||
uint32_t i = 0;
|
||||
|
@ -2216,9 +2224,26 @@ simple_list:
|
|||
goto simple_list;
|
||||
}
|
||||
|
||||
case ZEND_AST_CONST_DECL:
|
||||
case ZEND_AST_CONST_DECL: {
|
||||
zend_ast_list *ast_list = zend_ast_get_list(ast);
|
||||
/* Attributes are stored at the end of the list if present. */
|
||||
if (ast_list->child[ast_list->children - 1]->kind == ZEND_AST_ATTRIBUTE_LIST) {
|
||||
zend_ast_export_attributes(
|
||||
str,
|
||||
ast_list->child[ast_list->children - 1],
|
||||
indent,
|
||||
1
|
||||
);
|
||||
/* So that the list printing doesn't try to print the attributes,
|
||||
* use zend_ast_export_list_ex() to override the number of children
|
||||
* to print. */
|
||||
smart_str_appends(str, "const ");
|
||||
zend_ast_export_list_ex(str, ast_list, 1, 20, indent, ast_list->children - 1);
|
||||
break;
|
||||
}
|
||||
smart_str_appends(str, "const ");
|
||||
goto simple_list;
|
||||
}
|
||||
case ZEND_AST_CLASS_CONST_GROUP:
|
||||
if (ast->child[1]) {
|
||||
zend_ast_export_attributes(str, ast->child[1], indent, 1);
|
||||
|
@ -2916,6 +2941,12 @@ zend_ast * ZEND_FASTCALL zend_ast_with_attributes(zend_ast *ast, zend_ast *attr)
|
|||
case ZEND_AST_CLASS_CONST_GROUP:
|
||||
ast->child[1] = attr;
|
||||
break;
|
||||
case ZEND_AST_CONST_DECL:
|
||||
/* Since constants are already stored in a list, just add the attributes
|
||||
* to that list instead of storing them elsewhere;
|
||||
* zend_compile_const_decl() checks the kind of the list elements. */
|
||||
zend_ast_list_add(ast, attr);
|
||||
break;
|
||||
EMPTY_SWITCH_DEFAULT_CASE()
|
||||
}
|
||||
|
||||
|
|
|
@ -378,7 +378,8 @@ static const char *target_names[] = {
|
|||
"method",
|
||||
"property",
|
||||
"class constant",
|
||||
"parameter"
|
||||
"parameter",
|
||||
"constant"
|
||||
};
|
||||
|
||||
ZEND_API zend_string *zend_get_attribute_target_names(uint32_t flags)
|
||||
|
|
|
@ -28,9 +28,10 @@
|
|||
#define ZEND_ATTRIBUTE_TARGET_PROPERTY (1<<3)
|
||||
#define ZEND_ATTRIBUTE_TARGET_CLASS_CONST (1<<4)
|
||||
#define ZEND_ATTRIBUTE_TARGET_PARAMETER (1<<5)
|
||||
#define ZEND_ATTRIBUTE_TARGET_ALL ((1<<6) - 1)
|
||||
#define ZEND_ATTRIBUTE_IS_REPEATABLE (1<<6)
|
||||
#define ZEND_ATTRIBUTE_FLAGS ((1<<7) - 1)
|
||||
#define ZEND_ATTRIBUTE_TARGET_CONST (1<<6)
|
||||
#define ZEND_ATTRIBUTE_TARGET_ALL ((1<<7) - 1)
|
||||
#define ZEND_ATTRIBUTE_IS_REPEATABLE (1<<7)
|
||||
#define ZEND_ATTRIBUTE_FLAGS ((1<<8) - 1)
|
||||
|
||||
/* Flags for zend_attribute.flags */
|
||||
#define ZEND_ATTRIBUTE_PERSISTENT (1<<0)
|
||||
|
|
|
@ -17,6 +17,8 @@ final class Attribute
|
|||
const int TARGET_CLASS_CONSTANT = UNKNOWN;
|
||||
/** @cvalue ZEND_ATTRIBUTE_TARGET_PARAMETER */
|
||||
const int TARGET_PARAMETER = UNKNOWN;
|
||||
/** @cvalue ZEND_ATTRIBUTE_TARGET_CONST */
|
||||
const int TARGET_CONSTANT = UNKNOWN;
|
||||
/** @cvalue ZEND_ATTRIBUTE_TARGET_ALL */
|
||||
const int TARGET_ALL = UNKNOWN;
|
||||
/** @cvalue ZEND_ATTRIBUTE_IS_REPEATABLE */
|
||||
|
@ -75,7 +77,7 @@ final class Override
|
|||
/**
|
||||
* @strict-properties
|
||||
*/
|
||||
#[Attribute(Attribute::TARGET_METHOD|Attribute::TARGET_FUNCTION|Attribute::TARGET_CLASS_CONSTANT)]
|
||||
#[Attribute(Attribute::TARGET_METHOD|Attribute::TARGET_FUNCTION|Attribute::TARGET_CLASS_CONSTANT|Attribute::TARGET_CONSTANT)]
|
||||
final class Deprecated
|
||||
{
|
||||
public readonly ?string $message;
|
||||
|
|
10
Zend/zend_attributes_arginfo.h
generated
10
Zend/zend_attributes_arginfo.h
generated
|
@ -1,5 +1,5 @@
|
|||
/* This is a generated file, edit the .stub.php file instead.
|
||||
* Stub hash: 6b54bc195be211caabb395b621380681953c1f5a */
|
||||
* Stub hash: 9aee3d8f2ced376f5929048444eaa2529ff90311 */
|
||||
|
||||
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")
|
||||
|
@ -129,6 +129,12 @@ static zend_class_entry *register_class_Attribute(void)
|
|||
zend_declare_typed_class_constant(class_entry, const_TARGET_PARAMETER_name, &const_TARGET_PARAMETER_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
|
||||
zend_string_release(const_TARGET_PARAMETER_name);
|
||||
|
||||
zval const_TARGET_CONSTANT_value;
|
||||
ZVAL_LONG(&const_TARGET_CONSTANT_value, ZEND_ATTRIBUTE_TARGET_CONST);
|
||||
zend_string *const_TARGET_CONSTANT_name = zend_string_init_interned("TARGET_CONSTANT", sizeof("TARGET_CONSTANT") - 1, 1);
|
||||
zend_declare_typed_class_constant(class_entry, const_TARGET_CONSTANT_name, &const_TARGET_CONSTANT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
|
||||
zend_string_release(const_TARGET_CONSTANT_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);
|
||||
|
@ -258,7 +264,7 @@ static zend_class_entry *register_class_Deprecated(void)
|
|||
zend_attribute *attribute_Attribute_class_Deprecated_0 = zend_add_class_attribute(class_entry, attribute_name_Attribute_class_Deprecated_0, 1);
|
||||
zend_string_release(attribute_name_Attribute_class_Deprecated_0);
|
||||
zval attribute_Attribute_class_Deprecated_0_arg0;
|
||||
ZVAL_LONG(&attribute_Attribute_class_Deprecated_0_arg0, ZEND_ATTRIBUTE_TARGET_METHOD | ZEND_ATTRIBUTE_TARGET_FUNCTION | ZEND_ATTRIBUTE_TARGET_CLASS_CONST);
|
||||
ZVAL_LONG(&attribute_Attribute_class_Deprecated_0_arg0, ZEND_ATTRIBUTE_TARGET_METHOD | ZEND_ATTRIBUTE_TARGET_FUNCTION | ZEND_ATTRIBUTE_TARGET_CLASS_CONST | ZEND_ATTRIBUTE_TARGET_CONST);
|
||||
ZVAL_COPY_VALUE(&attribute_Attribute_class_Deprecated_0->args[0].value, &attribute_Attribute_class_Deprecated_0_arg0);
|
||||
|
||||
return class_entry;
|
||||
|
|
|
@ -9502,8 +9502,16 @@ static void zend_compile_const_decl(zend_ast *ast) /* {{{ */
|
|||
{
|
||||
zend_ast_list *list = zend_ast_get_list(ast);
|
||||
uint32_t i;
|
||||
zend_ast *attributes_ast = NULL;
|
||||
zend_op *last_op = NULL;
|
||||
for (i = 0; i < list->children; ++i) {
|
||||
zend_ast *const_ast = list->child[i];
|
||||
if (const_ast->kind == ZEND_AST_ATTRIBUTE_LIST) {
|
||||
ZEND_ASSERT(i == list->children - 1);
|
||||
attributes_ast = const_ast;
|
||||
continue;
|
||||
}
|
||||
ZEND_ASSERT(const_ast->kind == ZEND_AST_CONST_ELEM);
|
||||
zend_ast *name_ast = const_ast->child[0];
|
||||
zend_ast **value_ast_ptr = &const_ast->child[1];
|
||||
zend_string *unqualified_name = zend_ast_get_str(name_ast);
|
||||
|
@ -9534,10 +9542,33 @@ static void zend_compile_const_decl(zend_ast *ast) /* {{{ */
|
|||
name_node.op_type = IS_CONST;
|
||||
ZVAL_STR(&name_node.u.constant, name);
|
||||
|
||||
zend_emit_op(NULL, ZEND_DECLARE_CONST, &name_node, &value_node);
|
||||
last_op = zend_emit_op(NULL, ZEND_DECLARE_CONST, &name_node, &value_node);
|
||||
|
||||
zend_register_seen_symbol(name, ZEND_SYMBOL_CONST);
|
||||
}
|
||||
if (attributes_ast == NULL) {
|
||||
return;
|
||||
}
|
||||
/* Validate: attributes can only be applied to one constant at a time
|
||||
* Since we store the AST for the attributes in the list of children,
|
||||
* there should be exactly 2 children. */
|
||||
if (list->children > 2) {
|
||||
zend_error_noreturn(
|
||||
E_COMPILE_ERROR,
|
||||
"Cannot apply attributes to multiple constants at once"
|
||||
);
|
||||
}
|
||||
|
||||
HashTable *attributes = NULL;
|
||||
zend_compile_attributes(&attributes, list->child[1], 0, ZEND_ATTRIBUTE_TARGET_CONST, 0);
|
||||
|
||||
ZEND_ASSERT(last_op != NULL);
|
||||
last_op->opcode = ZEND_DECLARE_ATTRIBUTED_CONST;
|
||||
znode attribs_node;
|
||||
attribs_node.op_type = IS_CONST;
|
||||
ZVAL_PTR(&attribs_node.u.constant, attributes);
|
||||
zend_emit_op_data(&attribs_node);
|
||||
CG(active_op_array)->fn_flags |= ZEND_ACC_PTR_OPS;
|
||||
}
|
||||
/* }}}*/
|
||||
|
||||
|
|
|
@ -395,6 +395,11 @@ typedef struct _zend_oparray_context {
|
|||
/* has #[\Override] attribute | | | */
|
||||
#define ZEND_ACC_OVERRIDE (1 << 28) /* | X | | */
|
||||
/* | | | */
|
||||
/* Has IS_PTR operands that needs special cleaning; same | | | */
|
||||
/* value as ZEND_ACC_OVERRIDE but override is for class | | | */
|
||||
/* methods and this is for the top level op array | | | */
|
||||
#define ZEND_ACC_PTR_OPS (1 << 28) /* | X | | */
|
||||
/* | | | */
|
||||
/* has #[\NoDiscard] attribute | | | */
|
||||
#define ZEND_ACC_NODISCARD (1 << 29) /* | X | | */
|
||||
/* | | | */
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
|
||||
#include "zend.h"
|
||||
#include "zend_attributes.h"
|
||||
#include "zend_constants.h"
|
||||
#include "zend_exceptions.h"
|
||||
#include "zend_execute.h"
|
||||
|
@ -49,6 +50,9 @@ void free_zend_constant(zval *zv)
|
|||
if (c->filename) {
|
||||
zend_string_release_ex(c->filename, 0);
|
||||
}
|
||||
if (c->attributes) {
|
||||
zend_hash_release(c->attributes);
|
||||
}
|
||||
efree(c);
|
||||
} else {
|
||||
zval_internal_ptr_dtor(&c->value);
|
||||
|
@ -58,6 +62,9 @@ void free_zend_constant(zval *zv)
|
|||
if (c->filename) {
|
||||
zend_string_release_ex(c->filename, 1);
|
||||
}
|
||||
if (c->attributes) {
|
||||
zend_hash_release(c->attributes);
|
||||
}
|
||||
free(c);
|
||||
}
|
||||
}
|
||||
|
@ -77,6 +84,9 @@ static void copy_zend_constant(zval *zv)
|
|||
if (c->filename != NULL) {
|
||||
c->filename = zend_string_copy(c->filename);
|
||||
}
|
||||
if (c->attributes != NULL) {
|
||||
c->attributes = zend_array_dup(c->attributes);
|
||||
}
|
||||
if (Z_TYPE(c->value) == IS_STRING) {
|
||||
Z_STR(c->value) = zend_string_dup(Z_STR(c->value), 1);
|
||||
}
|
||||
|
@ -467,7 +477,11 @@ ZEND_API zval *zend_get_constant_ex(zend_string *cname, zend_class_entry *scope,
|
|||
}
|
||||
|
||||
if (!(flags & ZEND_FETCH_CLASS_SILENT) && (ZEND_CONSTANT_FLAGS(c) & CONST_DEPRECATED)) {
|
||||
zend_error(E_DEPRECATED, "Constant %s is deprecated", name);
|
||||
if (!CONST_IS_RECURSIVE(c)) {
|
||||
CONST_PROTECT_RECURSION(c);
|
||||
zend_deprecated_constant(c, c->name);
|
||||
CONST_UNPROTECT_RECURSION(c);
|
||||
}
|
||||
}
|
||||
return &c->value;
|
||||
}
|
||||
|
@ -514,6 +528,8 @@ ZEND_API zend_result zend_register_constant(zend_constant *c)
|
|||
}
|
||||
}
|
||||
|
||||
c->attributes = NULL;
|
||||
|
||||
/* Check if the user is trying to define any special constant */
|
||||
if (zend_string_equals_literal(name, "__COMPILER_HALT_OFFSET__")
|
||||
|| (!persistent && zend_get_special_const(ZSTR_VAL(name), ZSTR_LEN(name)))
|
||||
|
@ -535,3 +551,22 @@ ZEND_API zend_result zend_register_constant(zend_constant *c)
|
|||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void zend_constant_add_attributes(zend_constant *c, HashTable *attributes) {
|
||||
GC_TRY_ADDREF(attributes);
|
||||
c->attributes = attributes;
|
||||
|
||||
zend_attribute *deprecated_attribute = zend_get_attribute_str(
|
||||
c->attributes,
|
||||
"deprecated",
|
||||
strlen("deprecated")
|
||||
);
|
||||
|
||||
if (deprecated_attribute) {
|
||||
ZEND_CONSTANT_SET_FLAGS(
|
||||
c,
|
||||
ZEND_CONSTANT_FLAGS(c) | CONST_DEPRECATED,
|
||||
ZEND_CONSTANT_MODULE_NUMBER(c)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,6 +45,7 @@ typedef struct _zend_constant {
|
|||
zval value;
|
||||
zend_string *name;
|
||||
zend_string *filename;
|
||||
HashTable *attributes;
|
||||
} zend_constant;
|
||||
|
||||
#define ZEND_CONSTANT_FLAGS(c) \
|
||||
|
@ -97,6 +98,7 @@ ZEND_API void zend_register_double_constant(const char *name, size_t name_len, d
|
|||
ZEND_API void zend_register_string_constant(const char *name, size_t name_len, const char *strval, int flags, int module_number);
|
||||
ZEND_API void zend_register_stringl_constant(const char *name, size_t name_len, const char *strval, size_t strlen, int flags, int module_number);
|
||||
ZEND_API zend_result zend_register_constant(zend_constant *c);
|
||||
void zend_constant_add_attributes(zend_constant *c, HashTable *attributes);
|
||||
#ifdef ZTS
|
||||
void zend_copy_constants(HashTable *target, HashTable *source);
|
||||
#endif
|
||||
|
|
|
@ -1979,6 +1979,24 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_deprecated_class_constant(const zend_
|
|||
zend_string_release(message_suffix);
|
||||
}
|
||||
|
||||
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_deprecated_constant(const zend_constant *c, const zend_string *constant_name)
|
||||
{
|
||||
zend_string *message_suffix = ZSTR_EMPTY_ALLOC();
|
||||
|
||||
if (get_deprecation_suffix_from_attribute(c->attributes, NULL, &message_suffix) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
int code = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? E_USER_DEPRECATED : E_DEPRECATED;
|
||||
|
||||
zend_error_unchecked(code, "Constant %s is deprecated%S",
|
||||
ZSTR_VAL(constant_name),
|
||||
message_suffix
|
||||
);
|
||||
|
||||
zend_string_release(message_suffix);
|
||||
}
|
||||
|
||||
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_false_to_array_deprecated(void)
|
||||
{
|
||||
zend_error(E_DEPRECATED, "Automatic conversion of false to array is deprecated");
|
||||
|
@ -5322,7 +5340,11 @@ static zend_always_inline zend_result _zend_quick_get_constant(
|
|||
if (!check_defined_only) {
|
||||
ZVAL_COPY_OR_DUP(EX_VAR(opline->result.var), &c->value);
|
||||
if (ZEND_CONSTANT_FLAGS(c) & CONST_DEPRECATED) {
|
||||
zend_error(E_DEPRECATED, "Constant %s is deprecated", ZSTR_VAL(c->name));
|
||||
if (!CONST_IS_RECURSIVE(c)) {
|
||||
CONST_PROTECT_RECURSION(c);
|
||||
zend_deprecated_constant(c, c->name);
|
||||
CONST_UNPROTECT_RECURSION(c);
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "zend_hash.h"
|
||||
#include "zend_operators.h"
|
||||
#include "zend_variables.h"
|
||||
#include "zend_constants.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
|
@ -64,6 +65,7 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_missing_arg_error(const zend_execute_
|
|||
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_deprecated_function(const zend_function *fbc);
|
||||
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_nodiscard_function(const zend_function *fbc);
|
||||
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_deprecated_class_constant(const zend_class_constant *c, const zend_string *constant_name);
|
||||
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_deprecated_constant(const zend_constant *c, const zend_string *constant_name);
|
||||
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_false_to_array_deprecated(void);
|
||||
ZEND_COLD void ZEND_FASTCALL zend_param_must_be_ref(const zend_function *func, uint32_t arg_num);
|
||||
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_use_resource_as_offset(const zval *dim);
|
||||
|
|
|
@ -300,6 +300,9 @@ ZEND_API void zend_shutdown_executor_values(bool fast_shutdown)
|
|||
if (c->filename) {
|
||||
zend_string_release_ex(c->filename, 0);
|
||||
}
|
||||
if (c->attributes) {
|
||||
zend_hash_release(c->attributes);
|
||||
}
|
||||
efree(c);
|
||||
zend_string_release_ex(key, 0);
|
||||
} ZEND_HASH_MAP_FOREACH_END_DEL();
|
||||
|
|
|
@ -391,6 +391,7 @@ attributed_statement:
|
|||
| trait_declaration_statement { $$ = $1; }
|
||||
| interface_declaration_statement { $$ = $1; }
|
||||
| enum_declaration_statement { $$ = $1; }
|
||||
| T_CONST const_list ';' { $$ = $2; }
|
||||
;
|
||||
|
||||
top_statement:
|
||||
|
@ -414,7 +415,6 @@ top_statement:
|
|||
| T_USE use_type group_use_declaration ';' { $$ = $3; $$->attr = $2; }
|
||||
| T_USE use_declarations ';' { $$ = $2; $$->attr = ZEND_SYMBOL_CLASS; }
|
||||
| T_USE use_type use_declarations ';' { $$ = $3; $$->attr = $2; }
|
||||
| T_CONST const_list ';' { $$ = $2; }
|
||||
;
|
||||
|
||||
use_type:
|
||||
|
|
|
@ -580,6 +580,18 @@ ZEND_API void destroy_op_array(zend_op_array *op_array)
|
|||
efree(op_array->vars);
|
||||
}
|
||||
|
||||
/* ZEND_ACC_PTR_OPS and ZEND_ACC_OVERRIDE use the same value */
|
||||
if ((op_array->fn_flags & ZEND_ACC_PTR_OPS) && !op_array->function_name) {
|
||||
zend_op *op = op_array->opcodes;
|
||||
zend_op *end = op + op_array->last;
|
||||
while (op < end) {
|
||||
if (op->opcode == ZEND_DECLARE_ATTRIBUTED_CONST) {
|
||||
HashTable *attributes = Z_PTR_P(RT_CONSTANT(op+1, (op+1)->op1));
|
||||
zend_hash_release(attributes);
|
||||
}
|
||||
op++;
|
||||
}
|
||||
}
|
||||
if (op_array->literals) {
|
||||
zval *literal = op_array->literals;
|
||||
zval *end = literal + op_array->last_literal;
|
||||
|
|
|
@ -8261,6 +8261,49 @@ ZEND_VM_HANDLER(143, ZEND_DECLARE_CONST, CONST, CONST)
|
|||
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
||||
}
|
||||
|
||||
ZEND_VM_HANDLER(210, ZEND_DECLARE_ATTRIBUTED_CONST, CONST, CONST)
|
||||
{
|
||||
USE_OPLINE
|
||||
zval *name;
|
||||
zval *val;
|
||||
zend_constant c;
|
||||
|
||||
SAVE_OPLINE();
|
||||
name = GET_OP1_ZVAL_PTR(BP_VAR_R);
|
||||
val = GET_OP2_ZVAL_PTR(BP_VAR_R);
|
||||
|
||||
ZVAL_COPY(&c.value, val);
|
||||
if (Z_OPT_CONSTANT(c.value)) {
|
||||
if (UNEXPECTED(zval_update_constant_ex(&c.value, EX(func)->op_array.scope) != SUCCESS)) {
|
||||
zval_ptr_dtor_nogc(&c.value);
|
||||
FREE_OP1();
|
||||
FREE_OP2();
|
||||
HANDLE_EXCEPTION();
|
||||
}
|
||||
}
|
||||
/* non persistent, case sensitive */
|
||||
ZEND_CONSTANT_SET_FLAGS(&c, 0, PHP_USER_CONSTANT);
|
||||
c.name = zend_string_copy(Z_STR_P(name));
|
||||
|
||||
if (zend_register_constant(&c) == FAILURE) {
|
||||
FREE_OP1();
|
||||
FREE_OP2();
|
||||
/* two opcodes used, second one is the data with attributes */
|
||||
ZEND_VM_NEXT_OPCODE_EX(1, 2);
|
||||
}
|
||||
|
||||
HashTable *attributes = Z_PTR_P(GET_OP_DATA_ZVAL_PTR(BP_VAR_R));
|
||||
zend_constant *registered = zend_get_constant_ptr(c.name);
|
||||
ZEND_ASSERT(attributes != NULL);
|
||||
ZEND_ASSERT(registered != NULL);
|
||||
zend_constant_add_attributes(registered, attributes);
|
||||
|
||||
FREE_OP1();
|
||||
FREE_OP2();
|
||||
/* two opcodes used, second one is the data with attributes */
|
||||
ZEND_VM_NEXT_OPCODE_EX(1, 2);
|
||||
}
|
||||
|
||||
ZEND_VM_HANDLER(142, ZEND_DECLARE_LAMBDA_FUNCTION, CONST, NUM)
|
||||
{
|
||||
USE_OPLINE
|
||||
|
|
233
Zend/zend_vm_execute.h
generated
233
Zend/zend_vm_execute.h
generated
|
@ -8042,6 +8042,48 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_CONST_SPEC_CONST_CONST
|
|||
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
||||
}
|
||||
|
||||
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
{
|
||||
USE_OPLINE
|
||||
zval *name;
|
||||
zval *val;
|
||||
zend_constant c;
|
||||
|
||||
SAVE_OPLINE();
|
||||
name = RT_CONSTANT(opline, opline->op1);
|
||||
val = RT_CONSTANT(opline, opline->op2);
|
||||
|
||||
ZVAL_COPY(&c.value, val);
|
||||
if (Z_OPT_CONSTANT(c.value)) {
|
||||
if (UNEXPECTED(zval_update_constant_ex(&c.value, EX(func)->op_array.scope) != SUCCESS)) {
|
||||
zval_ptr_dtor_nogc(&c.value);
|
||||
|
||||
|
||||
HANDLE_EXCEPTION();
|
||||
}
|
||||
}
|
||||
/* non persistent, case sensitive */
|
||||
ZEND_CONSTANT_SET_FLAGS(&c, 0, PHP_USER_CONSTANT);
|
||||
c.name = zend_string_copy(Z_STR_P(name));
|
||||
|
||||
if (zend_register_constant(&c) == FAILURE) {
|
||||
|
||||
|
||||
/* two opcodes used, second one is the data with attributes */
|
||||
ZEND_VM_NEXT_OPCODE_EX(1, 2);
|
||||
}
|
||||
|
||||
HashTable *attributes = Z_PTR_P(get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1));
|
||||
zend_constant *registered = zend_get_constant_ptr(c.name);
|
||||
ZEND_ASSERT(attributes != NULL);
|
||||
ZEND_ASSERT(registered != NULL);
|
||||
zend_constant_add_attributes(registered, attributes);
|
||||
|
||||
|
||||
/* two opcodes used, second one is the data with attributes */
|
||||
ZEND_VM_NEXT_OPCODE_EX(1, 2);
|
||||
}
|
||||
|
||||
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||
{
|
||||
USE_OPLINE
|
||||
|
@ -57569,6 +57611,7 @@ ZEND_API void execute_ex(zend_execute_data *ex)
|
|||
(void*)&&ZEND_FRAMELESS_ICALL_3_SPEC_OBSERVER_LABEL,
|
||||
(void*)&&ZEND_JMP_FRAMELESS_SPEC_CONST_LABEL,
|
||||
(void*)&&ZEND_INIT_PARENT_PROPERTY_HOOK_CALL_SPEC_CONST_UNUSED_LABEL,
|
||||
(void*)&&ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST_LABEL,
|
||||
(void*)&&ZEND_INIT_FCALL_OFFSET_SPEC_CONST_LABEL,
|
||||
(void*)&&ZEND_RECV_NOTYPE_SPEC_LABEL,
|
||||
(void*)&&ZEND_NULL_LABEL,
|
||||
|
@ -59543,6 +59586,11 @@ zend_leave_helper_SPEC_LABEL:
|
|||
ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
||||
VM_TRACE_OP_END(ZEND_DECLARE_CONST_SPEC_CONST_CONST)
|
||||
HYBRID_BREAK();
|
||||
HYBRID_CASE(ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST):
|
||||
VM_TRACE(ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST)
|
||||
ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
||||
VM_TRACE_OP_END(ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST)
|
||||
HYBRID_BREAK();
|
||||
HYBRID_CASE(ZEND_YIELD_SPEC_CONST_CONST):
|
||||
VM_TRACE(ZEND_YIELD_SPEC_CONST_CONST)
|
||||
ZEND_YIELD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
||||
|
@ -66755,6 +66803,7 @@ void zend_vm_init(void)
|
|||
ZEND_FRAMELESS_ICALL_3_SPEC_OBSERVER_HANDLER,
|
||||
ZEND_JMP_FRAMELESS_SPEC_CONST_HANDLER,
|
||||
ZEND_INIT_PARENT_PROPERTY_HOOK_CALL_SPEC_CONST_UNUSED_HANDLER,
|
||||
ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST_HANDLER,
|
||||
ZEND_INIT_FCALL_OFFSET_SPEC_CONST_HANDLER,
|
||||
ZEND_RECV_NOTYPE_SPEC_HANDLER,
|
||||
ZEND_NULL_HANDLER,
|
||||
|
@ -67712,7 +67761,7 @@ void zend_vm_init(void)
|
|||
1255,
|
||||
1256 | SPEC_RULE_OP1,
|
||||
1261 | SPEC_RULE_OP1,
|
||||
3486,
|
||||
3487,
|
||||
1266 | SPEC_RULE_OP1,
|
||||
1271 | SPEC_RULE_OP1,
|
||||
1276 | SPEC_RULE_OP2,
|
||||
|
@ -67746,7 +67795,7 @@ void zend_vm_init(void)
|
|||
1559 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
||||
1584 | SPEC_RULE_OP1,
|
||||
1589,
|
||||
3486,
|
||||
3487,
|
||||
1590 | SPEC_RULE_OP1,
|
||||
1595 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
||||
1620 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
||||
|
@ -67877,52 +67926,52 @@ void zend_vm_init(void)
|
|||
2573 | SPEC_RULE_OBSERVER,
|
||||
2575,
|
||||
2576,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
3486,
|
||||
2577,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
3487,
|
||||
};
|
||||
#if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
|
||||
zend_opcode_handler_funcs = labels;
|
||||
|
@ -68095,7 +68144,7 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t
|
|||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||
break;
|
||||
}
|
||||
spec = 2585 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 2586 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||
if (op->op1_type < op->op2_type) {
|
||||
zend_swap_operands(op);
|
||||
}
|
||||
|
@ -68103,7 +68152,7 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t
|
|||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||
break;
|
||||
}
|
||||
spec = 2610 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 2611 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||
if (op->op1_type < op->op2_type) {
|
||||
zend_swap_operands(op);
|
||||
}
|
||||
|
@ -68111,7 +68160,7 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t
|
|||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||
break;
|
||||
}
|
||||
spec = 2635 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 2636 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||
if (op->op1_type < op->op2_type) {
|
||||
zend_swap_operands(op);
|
||||
}
|
||||
|
@ -68122,17 +68171,17 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t
|
|||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||
break;
|
||||
}
|
||||
spec = 2660 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
||||
spec = 2661 | 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 = 2685 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
||||
spec = 2686 | 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 = 2710 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
||||
spec = 2711 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
||||
}
|
||||
break;
|
||||
case ZEND_MUL:
|
||||
|
@ -68143,17 +68192,17 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t
|
|||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||
break;
|
||||
}
|
||||
spec = 2735 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 2736 | 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 = 2760 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 2761 | 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 = 2785 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 2786 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||
}
|
||||
break;
|
||||
case ZEND_IS_IDENTICAL:
|
||||
|
@ -68164,14 +68213,14 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t
|
|||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||
break;
|
||||
}
|
||||
spec = 2810 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 2811 | 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 = 2885 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 2886 | 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 = 3110 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 3111 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||
}
|
||||
break;
|
||||
case ZEND_IS_NOT_IDENTICAL:
|
||||
|
@ -68182,14 +68231,14 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t
|
|||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||
break;
|
||||
}
|
||||
spec = 2960 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 2961 | 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 = 3035 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 3036 | 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 = 3115 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 3116 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||
}
|
||||
break;
|
||||
case ZEND_IS_EQUAL:
|
||||
|
@ -68200,12 +68249,12 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t
|
|||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||
break;
|
||||
}
|
||||
spec = 2810 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 2811 | 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 = 2885 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 2886 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
|
||||
}
|
||||
break;
|
||||
case ZEND_IS_NOT_EQUAL:
|
||||
|
@ -68216,12 +68265,12 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t
|
|||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||
break;
|
||||
}
|
||||
spec = 2960 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 2961 | 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 = 3035 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
|
||||
spec = 3036 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
|
||||
}
|
||||
break;
|
||||
case ZEND_IS_SMALLER:
|
||||
|
@ -68229,12 +68278,12 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t
|
|||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||
break;
|
||||
}
|
||||
spec = 3120 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
||||
spec = 3121 | 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 = 3195 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
||||
spec = 3196 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
||||
}
|
||||
break;
|
||||
case ZEND_IS_SMALLER_OR_EQUAL:
|
||||
|
@ -68242,79 +68291,79 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t
|
|||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||
break;
|
||||
}
|
||||
spec = 3270 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
||||
spec = 3271 | 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 = 3345 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
||||
spec = 3346 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
||||
}
|
||||
break;
|
||||
case ZEND_QM_ASSIGN:
|
||||
if (op1_info == MAY_BE_LONG) {
|
||||
spec = 3432 | SPEC_RULE_OP1;
|
||||
spec = 3433 | SPEC_RULE_OP1;
|
||||
} else if (op1_info == MAY_BE_DOUBLE) {
|
||||
spec = 3437 | SPEC_RULE_OP1;
|
||||
spec = 3438 | 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 = 3442 | SPEC_RULE_OP1;
|
||||
spec = 3443 | SPEC_RULE_OP1;
|
||||
}
|
||||
break;
|
||||
case ZEND_PRE_INC:
|
||||
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
|
||||
spec = 3420 | SPEC_RULE_RETVAL;
|
||||
spec = 3421 | SPEC_RULE_RETVAL;
|
||||
} else if (op1_info == MAY_BE_LONG) {
|
||||
spec = 3422 | SPEC_RULE_RETVAL;
|
||||
spec = 3423 | SPEC_RULE_RETVAL;
|
||||
}
|
||||
break;
|
||||
case ZEND_PRE_DEC:
|
||||
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
|
||||
spec = 3424 | SPEC_RULE_RETVAL;
|
||||
spec = 3425 | SPEC_RULE_RETVAL;
|
||||
} else if (op1_info == MAY_BE_LONG) {
|
||||
spec = 3426 | SPEC_RULE_RETVAL;
|
||||
spec = 3427 | SPEC_RULE_RETVAL;
|
||||
}
|
||||
break;
|
||||
case ZEND_POST_INC:
|
||||
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
|
||||
spec = 3428;
|
||||
} else if (op1_info == MAY_BE_LONG) {
|
||||
spec = 3429;
|
||||
} else if (op1_info == MAY_BE_LONG) {
|
||||
spec = 3430;
|
||||
}
|
||||
break;
|
||||
case ZEND_POST_DEC:
|
||||
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
|
||||
spec = 3430;
|
||||
} else if (op1_info == MAY_BE_LONG) {
|
||||
spec = 3431;
|
||||
} else if (op1_info == MAY_BE_LONG) {
|
||||
spec = 3432;
|
||||
}
|
||||
break;
|
||||
case ZEND_JMP:
|
||||
if (OP_JMP_ADDR(op, op->op1) > op) {
|
||||
spec = 2584;
|
||||
spec = 2585;
|
||||
}
|
||||
break;
|
||||
case ZEND_INIT_FCALL:
|
||||
if (Z_EXTRA_P(RT_CONSTANT(op, op->op2)) != 0) {
|
||||
spec = 2577;
|
||||
spec = 2578;
|
||||
}
|
||||
break;
|
||||
case ZEND_RECV:
|
||||
if (op->op2.num == MAY_BE_ANY) {
|
||||
spec = 2578;
|
||||
spec = 2579;
|
||||
}
|
||||
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 = 3482;
|
||||
spec = 3483;
|
||||
}
|
||||
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 = 3477 | SPEC_RULE_OP1;
|
||||
spec = 3478 | 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 = 3484 | SPEC_RULE_RETVAL;
|
||||
spec = 3485 | SPEC_RULE_RETVAL;
|
||||
}
|
||||
break;
|
||||
case ZEND_FETCH_DIM_R:
|
||||
|
@ -68322,22 +68371,22 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t
|
|||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||
break;
|
||||
}
|
||||
spec = 3447 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
||||
spec = 3448 | 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 = 3483;
|
||||
spec = 3484;
|
||||
}
|
||||
break;
|
||||
case ZEND_SEND_VAR:
|
||||
if (op->op2_type == IS_UNUSED && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
|
||||
spec = 3472 | SPEC_RULE_OP1;
|
||||
spec = 3473 | SPEC_RULE_OP1;
|
||||
}
|
||||
break;
|
||||
case ZEND_COUNT:
|
||||
if ((op1_info & (MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_REF)) == MAY_BE_ARRAY) {
|
||||
spec = 2579 | SPEC_RULE_OP1;
|
||||
spec = 2580 | SPEC_RULE_OP1;
|
||||
}
|
||||
break;
|
||||
case ZEND_BW_OR:
|
||||
|
|
923
Zend/zend_vm_handlers.h
generated
923
Zend/zend_vm_handlers.h
generated
|
@ -1372,502 +1372,503 @@
|
|||
_(2574, ZEND_FRAMELESS_ICALL_3_SPEC_OBSERVER) \
|
||||
_(2575, ZEND_JMP_FRAMELESS_SPEC_CONST) \
|
||||
_(2576, ZEND_INIT_PARENT_PROPERTY_HOOK_CALL_SPEC_CONST_UNUSED) \
|
||||
_(2577, ZEND_INIT_FCALL_OFFSET_SPEC_CONST) \
|
||||
_(2578, ZEND_RECV_NOTYPE_SPEC) \
|
||||
_(2580, ZEND_COUNT_ARRAY_SPEC_TMPVAR_UNUSED) \
|
||||
_(2577, ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST) \
|
||||
_(2578, ZEND_INIT_FCALL_OFFSET_SPEC_CONST) \
|
||||
_(2579, ZEND_RECV_NOTYPE_SPEC) \
|
||||
_(2581, ZEND_COUNT_ARRAY_SPEC_TMPVAR_UNUSED) \
|
||||
_(2583, ZEND_COUNT_ARRAY_SPEC_CV_UNUSED) \
|
||||
_(2584, ZEND_JMP_FORWARD_SPEC) \
|
||||
_(2590, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2591, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2582, ZEND_COUNT_ARRAY_SPEC_TMPVAR_UNUSED) \
|
||||
_(2584, ZEND_COUNT_ARRAY_SPEC_CV_UNUSED) \
|
||||
_(2585, ZEND_JMP_FORWARD_SPEC) \
|
||||
_(2591, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2592, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2594, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2595, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2596, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2593, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2595, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2596, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2597, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2599, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2605, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2606, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2598, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2600, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2606, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2607, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2609, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2615, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2616, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2608, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2610, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2616, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2617, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2619, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2620, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2621, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2618, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2620, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2621, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2622, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2624, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2630, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2631, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2623, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2625, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2631, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2632, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2634, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2640, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2641, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2633, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2635, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2641, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2642, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2644, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2645, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2646, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2643, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2645, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2646, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2647, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2649, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2655, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2656, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2648, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2650, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2656, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2657, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2659, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2661, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
|
||||
_(2658, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2660, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2662, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
|
||||
_(2664, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
|
||||
_(2665, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2666, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2663, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
|
||||
_(2665, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
|
||||
_(2666, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2667, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2669, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2670, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2671, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2668, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2670, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2671, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2672, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2674, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2680, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2681, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2673, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2675, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2681, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2682, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2684, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2686, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(2683, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2685, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2687, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(2689, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(2690, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2691, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2688, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(2690, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(2691, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2692, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2694, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2695, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2696, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2693, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2695, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2696, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2697, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2699, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2705, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2706, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2698, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2700, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2706, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2707, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2709, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2711, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(2708, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2710, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2712, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(2714, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(2715, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2716, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2713, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(2715, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(2716, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2717, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2719, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2720, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2721, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2718, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2720, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2721, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2722, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2724, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2730, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2731, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2723, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2725, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2731, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2732, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2734, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2740, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2741, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2733, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2735, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2741, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2742, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2744, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2745, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2746, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2743, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2745, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2746, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2747, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2749, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2755, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2756, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2748, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2750, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2756, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||
_(2757, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2759, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2765, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2766, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2758, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2760, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2766, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2767, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2769, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2770, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2771, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2768, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2770, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2771, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2772, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2774, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2780, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2781, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2773, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2775, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2781, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2782, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2784, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2790, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2791, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2783, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2785, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2791, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2792, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2794, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2795, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2796, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2793, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2795, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2796, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2797, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2799, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2805, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2806, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2798, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2800, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2806, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2807, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2809, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2825, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2826, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2827, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(2828, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2829, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2830, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2831, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2832, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2833, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_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) \
|
||||
_(2840, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2841, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2842, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_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) \
|
||||
_(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) \
|
||||
_(2852, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2853, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2854, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2870, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2871, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2872, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(2873, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2874, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2875, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2876, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2877, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2878, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2882, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2883, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2884, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2900, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2901, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2902, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(2903, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2904, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2905, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2906, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2907, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2908, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_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) \
|
||||
_(2915, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2916, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2917, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_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) \
|
||||
_(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) \
|
||||
_(2927, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2928, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2929, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2945, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2946, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2947, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(2948, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2949, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2950, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2951, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2952, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2953, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2957, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2958, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2959, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2975, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2976, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2977, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(2978, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2979, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2980, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2981, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2982, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2983, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_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) \
|
||||
_(2990, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2991, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2992, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_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) \
|
||||
_(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) \
|
||||
_(3002, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3003, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3004, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3020, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(3021, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3022, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3023, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3024, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3025, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3026, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3027, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3028, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3032, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3033, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3034, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3050, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3051, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3052, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3053, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3054, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3055, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3056, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3057, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3058, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_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) \
|
||||
_(3065, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3066, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3067, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_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) \
|
||||
_(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) \
|
||||
_(3077, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3078, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3079, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3095, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3096, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3097, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3098, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3099, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3100, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3101, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3102, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3103, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3107, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3108, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3109, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3110, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CONST) \
|
||||
_(3114, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CV) \
|
||||
_(3115, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CONST) \
|
||||
_(3119, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CV) \
|
||||
_(3123, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(3124, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3125, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3126, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(3127, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3128, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3132, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(3133, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3134, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3135, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(3136, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3137, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3138, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3139, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3140, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3141, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3142, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3143, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_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) \
|
||||
_(3150, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(3151, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3152, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_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) \
|
||||
_(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_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3163, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3164, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3180, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(3181, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3182, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3183, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3184, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3185, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3186, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3187, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3188, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3192, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3193, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3194, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3198, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(3199, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3200, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3201, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(3202, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3203, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3207, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(3208, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3209, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3210, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3211, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3212, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3213, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3214, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3215, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3216, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3217, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3218, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_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) \
|
||||
_(3225, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3226, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3227, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_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) \
|
||||
_(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_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3238, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3239, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3255, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3256, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3257, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3258, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3259, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3260, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3261, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3262, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3263, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3267, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3268, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3269, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3273, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(3274, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3275, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3276, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(3277, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3278, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3282, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(3283, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3284, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3285, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(3286, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3287, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3288, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3289, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3290, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3291, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3292, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3293, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_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) \
|
||||
_(3300, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(3301, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3302, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_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) \
|
||||
_(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_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3313, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3314, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3330, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(3331, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3332, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3333, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3334, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3335, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3336, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3337, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3338, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3342, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3343, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3344, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3348, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(3349, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3350, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3351, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(3352, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3353, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3357, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(3358, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3359, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3360, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3361, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3362, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3363, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3364, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3365, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3366, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3367, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3368, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_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) \
|
||||
_(3375, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3376, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3377, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(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) \
|
||||
_(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) \
|
||||
_(3387, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3388, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3389, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3405, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3406, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3407, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3408, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3409, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3410, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3411, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3412, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3413, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3417, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3418, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3419, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3420, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \
|
||||
_(3421, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \
|
||||
_(3422, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED) \
|
||||
_(3423, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED) \
|
||||
_(3424, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \
|
||||
_(3425, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \
|
||||
_(3426, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED) \
|
||||
_(3427, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED) \
|
||||
_(3428, ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV) \
|
||||
_(3429, ZEND_POST_INC_LONG_SPEC_CV) \
|
||||
_(3430, ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV) \
|
||||
_(3431, ZEND_POST_DEC_LONG_SPEC_CV) \
|
||||
_(3432, ZEND_QM_ASSIGN_LONG_SPEC_CONST) \
|
||||
_(3433, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
|
||||
_(2808, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2810, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2826, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2827, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2828, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(2829, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2830, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2831, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2832, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2833, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2834, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2838, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2839, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2840, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2841, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2842, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2843, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(2844, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2845, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2846, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2847, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2848, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2849, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2853, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2854, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2855, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2871, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2872, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2873, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(2874, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2875, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2876, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2877, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2878, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2879, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2883, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2884, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2885, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2901, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2902, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2903, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(2904, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2905, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2906, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2907, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2908, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2909, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2913, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2914, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2915, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2916, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2917, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2918, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(2919, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2920, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2921, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2922, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2923, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2924, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2928, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2929, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2930, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2946, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(2947, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2948, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(2949, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2950, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2951, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2952, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2953, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2954, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2958, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2959, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2960, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2976, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2977, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2978, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(2979, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2980, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2981, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2982, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2983, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2984, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2988, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2989, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2990, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2991, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(2992, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(2993, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(2994, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2995, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2996, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(2997, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(2998, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(2999, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3003, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3004, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3005, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3021, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(3022, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3023, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3024, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3025, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3026, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3027, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3028, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3029, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3033, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3034, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3035, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3051, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3052, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3053, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3054, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3055, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3056, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3057, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3058, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3059, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3063, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3064, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3065, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3066, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3067, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3068, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3069, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3070, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3071, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3072, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3073, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3074, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3078, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3079, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3080, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3096, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3097, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3098, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3099, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3100, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3101, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3102, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3103, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3104, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3108, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3109, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3110, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3111, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CONST) \
|
||||
_(3115, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CV) \
|
||||
_(3116, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CONST) \
|
||||
_(3120, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CV) \
|
||||
_(3124, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(3125, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3126, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3127, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(3128, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3129, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3133, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(3134, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3135, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3136, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(3137, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3138, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3139, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3140, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3141, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3142, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3143, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3144, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3148, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3149, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3150, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3151, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(3152, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3153, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3154, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3155, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3156, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3157, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3158, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3159, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3163, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3164, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3165, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3181, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(3182, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3183, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3184, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3185, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3186, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3187, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3188, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3189, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3193, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3194, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3195, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3199, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(3200, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3201, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3202, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(3203, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3204, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3208, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(3209, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3210, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3211, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3212, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3213, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3214, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3215, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3216, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3217, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3218, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3219, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3223, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3224, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3225, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3226, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3227, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3228, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3229, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3230, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3231, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3232, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3233, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3234, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3238, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3239, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3240, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3256, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3257, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3258, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3259, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3260, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3261, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3262, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3263, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3264, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3268, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3269, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3270, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3274, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(3275, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3276, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3277, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(3278, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3279, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3283, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
|
||||
_(3284, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3285, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3286, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(3287, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3288, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3289, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3290, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3291, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3292, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3293, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3294, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3298, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3299, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3300, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3301, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(3302, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3303, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3304, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3305, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3306, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3307, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3308, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3309, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3313, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3314, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3315, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3331, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||
_(3332, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3333, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3334, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3335, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3336, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3337, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3338, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3339, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3343, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3344, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3345, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3349, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(3350, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3351, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3352, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(3353, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3354, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3358, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||
_(3359, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||
_(3360, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||
_(3361, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3362, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3363, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3364, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3365, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3366, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3367, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3368, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3369, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3373, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3374, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3375, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3376, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3377, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3378, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3379, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3380, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3381, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3382, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3383, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3384, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3388, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3389, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3390, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3406, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||
_(3407, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||
_(3408, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||
_(3409, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3410, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3411, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3412, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3413, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3414, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3418, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||
_(3419, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||
_(3420, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||
_(3421, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \
|
||||
_(3422, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \
|
||||
_(3423, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED) \
|
||||
_(3424, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED) \
|
||||
_(3425, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \
|
||||
_(3426, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \
|
||||
_(3427, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED) \
|
||||
_(3428, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED) \
|
||||
_(3429, ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV) \
|
||||
_(3430, ZEND_POST_INC_LONG_SPEC_CV) \
|
||||
_(3431, ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV) \
|
||||
_(3432, ZEND_POST_DEC_LONG_SPEC_CV) \
|
||||
_(3433, ZEND_QM_ASSIGN_LONG_SPEC_CONST) \
|
||||
_(3434, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
|
||||
_(3436, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
|
||||
_(3437, ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST) \
|
||||
_(3438, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
|
||||
_(3435, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
|
||||
_(3437, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
|
||||
_(3438, ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST) \
|
||||
_(3439, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
|
||||
_(3441, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
|
||||
_(3442, ZEND_QM_ASSIGN_NOREF_SPEC_CONST) \
|
||||
_(3443, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
|
||||
_(3440, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
|
||||
_(3442, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
|
||||
_(3443, ZEND_QM_ASSIGN_NOREF_SPEC_CONST) \
|
||||
_(3444, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
|
||||
_(3446, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
|
||||
_(3448, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
|
||||
_(3445, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
|
||||
_(3447, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
|
||||
_(3449, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
|
||||
_(3451, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
|
||||
_(3452, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \
|
||||
_(3453, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||
_(3450, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
|
||||
_(3452, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
|
||||
_(3453, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \
|
||||
_(3454, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||
_(3456, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||
_(3457, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \
|
||||
_(3458, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||
_(3455, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||
_(3457, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||
_(3458, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \
|
||||
_(3459, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||
_(3461, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||
_(3467, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST) \
|
||||
_(3468, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
|
||||
_(3460, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||
_(3462, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||
_(3468, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST) \
|
||||
_(3469, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
|
||||
_(3471, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
|
||||
_(3474, ZEND_SEND_VAR_SIMPLE_SPEC_VAR) \
|
||||
_(3476, ZEND_SEND_VAR_SIMPLE_SPEC_CV) \
|
||||
_(3479, ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_UNUSED) \
|
||||
_(3481, ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_UNUSED) \
|
||||
_(3482, ZEND_SEND_VAL_SIMPLE_SPEC_CONST) \
|
||||
_(3483, ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST) \
|
||||
_(3484, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED) \
|
||||
_(3485, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED) \
|
||||
_(3485+1, ZEND_NULL)
|
||||
_(3470, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
|
||||
_(3472, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
|
||||
_(3475, ZEND_SEND_VAR_SIMPLE_SPEC_VAR) \
|
||||
_(3477, ZEND_SEND_VAR_SIMPLE_SPEC_CV) \
|
||||
_(3480, ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_UNUSED) \
|
||||
_(3482, ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_UNUSED) \
|
||||
_(3483, ZEND_SEND_VAL_SIMPLE_SPEC_CONST) \
|
||||
_(3484, ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST) \
|
||||
_(3485, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED) \
|
||||
_(3486, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED) \
|
||||
_(3486+1, ZEND_NULL)
|
||||
|
|
6
Zend/zend_vm_opcodes.c
generated
6
Zend/zend_vm_opcodes.c
generated
|
@ -22,7 +22,7 @@
|
|||
#include <zend.h>
|
||||
#include <zend_vm_opcodes.h>
|
||||
|
||||
static const char *zend_vm_opcodes_names[210] = {
|
||||
static const char *zend_vm_opcodes_names[211] = {
|
||||
"ZEND_NOP",
|
||||
"ZEND_ADD",
|
||||
"ZEND_SUB",
|
||||
|
@ -233,9 +233,10 @@ static const char *zend_vm_opcodes_names[210] = {
|
|||
"ZEND_FRAMELESS_ICALL_3",
|
||||
"ZEND_JMP_FRAMELESS",
|
||||
"ZEND_INIT_PARENT_PROPERTY_HOOK_CALL",
|
||||
"ZEND_DECLARE_ATTRIBUTED_CONST",
|
||||
};
|
||||
|
||||
static uint32_t zend_vm_opcodes_flags[210] = {
|
||||
static uint32_t zend_vm_opcodes_flags[211] = {
|
||||
0x00000000,
|
||||
0x00000b0b,
|
||||
0x00000b0b,
|
||||
|
@ -446,6 +447,7 @@ static uint32_t zend_vm_opcodes_flags[210] = {
|
|||
0x00000000,
|
||||
0x01042003,
|
||||
0x01001103,
|
||||
0x00000303,
|
||||
};
|
||||
|
||||
ZEND_API const char* ZEND_FASTCALL zend_get_opcode_name(uint8_t opcode) {
|
||||
|
|
3
Zend/zend_vm_opcodes.h
generated
3
Zend/zend_vm_opcodes.h
generated
|
@ -293,7 +293,8 @@ END_EXTERN_C()
|
|||
#define ZEND_FRAMELESS_ICALL_3 207
|
||||
#define ZEND_JMP_FRAMELESS 208
|
||||
#define ZEND_INIT_PARENT_PROPERTY_HOOK_CALL 209
|
||||
#define ZEND_DECLARE_ATTRIBUTED_CONST 210
|
||||
|
||||
#define ZEND_VM_LAST_OPCODE 209
|
||||
#define ZEND_VM_LAST_OPCODE 210
|
||||
|
||||
#endif
|
||||
|
|
|
@ -15,10 +15,12 @@ PHP constants (referring to non-class constants) are stored in a dedicated struc
|
|||
zval value;
|
||||
zend_string *name;
|
||||
zend_string *filename;
|
||||
HashTable *attributes;
|
||||
} zend_constant;
|
||||
|
||||
The ``value`` field stores both the value itself and some metadata. The ``name`` and ``filename``
|
||||
store the name of the constant and the name of the file in which it was defined.
|
||||
store the name of the constant and the name of the file in which it was defined. The ``attributes``
|
||||
field stores the attributes applied to the constant.
|
||||
|
||||
*******
|
||||
value
|
||||
|
@ -59,6 +61,15 @@ constants that have already been defined. This string is released when the const
|
|||
filename
|
||||
**********
|
||||
|
||||
Finally, the ``filename`` holds another ``zend_string`` with the name of the file in which the
|
||||
constant was defined, or ``NULL`` if not defined userland code. This field provides the foundation
|
||||
for the PHP method ``ReflectionConstant::getFileName()``.
|
||||
The ``filename`` holds another ``zend_string`` with the name of the file in which the constant was
|
||||
defined, or ``NULL`` if not defined userland code. This field provides the foundation for the PHP
|
||||
method ``ReflectionConstant::getFileName()``.
|
||||
|
||||
************
|
||||
attributes
|
||||
************
|
||||
|
||||
The ``attributes`` holds a ``HashTable`` (essentially an array) with the details of the attributes
|
||||
that were applied to the constant. Note that attributes can only be added to constants declared at
|
||||
compile time via ``const``, e.g. ``const EXAMPLE = 123``, not those declared at runtime, e.g.
|
||||
``define( 'EXAMPLE', 123 );``.
|
||||
|
|
|
@ -600,6 +600,7 @@ static zend_always_inline int zend_jit_trace_op_len(const zend_op *opline)
|
|||
case ZEND_ASSIGN_OBJ_REF:
|
||||
case ZEND_ASSIGN_STATIC_PROP_REF:
|
||||
case ZEND_FRAMELESS_ICALL_3:
|
||||
case ZEND_DECLARE_ATTRIBUTED_CONST:
|
||||
return 2; /* OP_DATA */
|
||||
case ZEND_RECV_INIT:
|
||||
len = 1;
|
||||
|
|
|
@ -375,10 +375,14 @@ static zend_always_inline zend_constant* _zend_quick_get_constant(
|
|||
|
||||
if (!check_defined_only) {
|
||||
if (ZEND_CONSTANT_FLAGS(c) & CONST_DEPRECATED) {
|
||||
zend_error(E_DEPRECATED, "Constant %s is deprecated", ZSTR_VAL(c->name));
|
||||
if (!CONST_IS_RECURSIVE(c)) {
|
||||
CONST_PROTECT_RECURSION(c);
|
||||
zend_deprecated_constant(c, c->name);
|
||||
CONST_UNPROTECT_RECURSION(c);
|
||||
if (EG(exception)) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return c;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -251,6 +251,13 @@ static void zend_file_cache_unserialize_func(zval *zv,
|
|||
zend_persistent_script *script,
|
||||
void *buf);
|
||||
|
||||
static void zend_file_cache_serialize_attribute(zval *zv,
|
||||
zend_persistent_script *script,
|
||||
zend_file_cache_metainfo *info,
|
||||
void *buf);
|
||||
|
||||
static void zend_file_cache_unserialize_attribute(zval *zv, zend_persistent_script *script, void *buf);
|
||||
|
||||
static void *zend_file_cache_serialize_interned(zend_string *str,
|
||||
zend_file_cache_metainfo *info)
|
||||
{
|
||||
|
@ -431,6 +438,9 @@ static void zend_file_cache_serialize_zval(zval *zv,
|
|||
/* Used by static properties. */
|
||||
SERIALIZE_PTR(Z_INDIRECT_P(zv));
|
||||
break;
|
||||
case IS_PTR:
|
||||
/* Used by attributes on constants, will be handled separately */
|
||||
break;
|
||||
default:
|
||||
ZEND_ASSERT(Z_TYPE_P(zv) < IS_STRING);
|
||||
break;
|
||||
|
@ -549,6 +559,13 @@ static void zend_file_cache_serialize_op_array(zend_op_array *op_arra
|
|||
UNSERIALIZE_PTR(opline);
|
||||
end = opline + op_array->last;
|
||||
while (opline < end) {
|
||||
if (opline->opcode == ZEND_OP_DATA
|
||||
&& (opline-1)->opcode == ZEND_DECLARE_ATTRIBUTED_CONST
|
||||
) {
|
||||
zval *literal = RT_CONSTANT(opline, opline->op1);
|
||||
SERIALIZE_ATTRIBUTES(Z_PTR_P(literal));
|
||||
}
|
||||
|
||||
#if ZEND_USE_ABS_CONST_ADDR
|
||||
if (opline->op1_type == IS_CONST) {
|
||||
SERIALIZE_PTR(opline->op1.zv);
|
||||
|
@ -1316,6 +1333,9 @@ static void zend_file_cache_unserialize_zval(zval *zv,
|
|||
/* Used by static properties. */
|
||||
UNSERIALIZE_PTR(Z_INDIRECT_P(zv));
|
||||
break;
|
||||
case IS_PTR:
|
||||
/* Used by attributes on constants, will be handled separately */
|
||||
break;
|
||||
default:
|
||||
ZEND_ASSERT(Z_TYPE_P(zv) < IS_STRING);
|
||||
break;
|
||||
|
@ -1485,6 +1505,13 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr
|
|||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (opline->opcode == ZEND_OP_DATA
|
||||
&& (opline-1)->opcode == ZEND_DECLARE_ATTRIBUTED_CONST
|
||||
) {
|
||||
zval *literal = RT_CONSTANT(opline, opline->op1);
|
||||
UNSERIALIZE_ATTRIBUTES(Z_PTR_P(literal));
|
||||
}
|
||||
zend_deserialize_opcode_handler(opline);
|
||||
opline++;
|
||||
}
|
||||
|
|
|
@ -280,6 +280,8 @@ static void zend_persist_zval(zval *z)
|
|||
efree(old_ref);
|
||||
}
|
||||
break;
|
||||
case IS_PTR:
|
||||
break;
|
||||
default:
|
||||
ZEND_ASSERT(Z_TYPE_P(z) < IS_STRING);
|
||||
break;
|
||||
|
@ -612,6 +614,12 @@ static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_sc
|
|||
}
|
||||
}
|
||||
#endif
|
||||
if (opline->opcode == ZEND_OP_DATA && (opline-1)->opcode == ZEND_DECLARE_ATTRIBUTED_CONST) {
|
||||
zval *literal = RT_CONSTANT(opline, opline->op1);
|
||||
HashTable *attributes = Z_PTR_P(literal);
|
||||
attributes = zend_persist_attributes(attributes);
|
||||
ZVAL_PTR(literal, attributes);
|
||||
}
|
||||
}
|
||||
|
||||
efree(op_array->opcodes);
|
||||
|
|
|
@ -157,6 +157,8 @@ static void zend_persist_zval_calc(zval *z)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case IS_PTR:
|
||||
break;
|
||||
default:
|
||||
ZEND_ASSERT(Z_TYPE_P(z) < IS_STRING);
|
||||
break;
|
||||
|
@ -264,6 +266,19 @@ static void zend_persist_op_array_calc_ex(zend_op_array *op_array)
|
|||
zend_shared_alloc_register_xlat_entry(op_array->opcodes, op_array->opcodes);
|
||||
ADD_SIZE(sizeof(zend_op) * op_array->last);
|
||||
|
||||
/* ZEND_ACC_PTR_OPS and ZEND_ACC_OVERRIDE use the same value */
|
||||
if ((op_array->fn_flags & ZEND_ACC_PTR_OPS) && !op_array->function_name) {
|
||||
zend_op *op = op_array->opcodes;
|
||||
zend_op *end = op + op_array->last;
|
||||
while (op < end) {
|
||||
if (op->opcode == ZEND_DECLARE_ATTRIBUTED_CONST) {
|
||||
HashTable *attributes = Z_PTR_P(RT_CONSTANT(op+1, (op+1)->op1));
|
||||
zend_persist_attributes_calc(attributes);
|
||||
}
|
||||
op++;
|
||||
}
|
||||
}
|
||||
|
||||
if (op_array->filename) {
|
||||
ADD_STRING(op_array->filename);
|
||||
}
|
||||
|
|
|
@ -7813,6 +7813,18 @@ ZEND_METHOD(ReflectionConstant, getExtensionName)
|
|||
}
|
||||
/* }}} */
|
||||
|
||||
ZEND_METHOD(ReflectionConstant, getAttributes)
|
||||
{
|
||||
reflection_object *intern;
|
||||
zend_constant *const_;
|
||||
|
||||
GET_REFLECTION_OBJECT_PTR(const_);
|
||||
|
||||
reflect_attributes(INTERNAL_FUNCTION_PARAM_PASSTHRU,
|
||||
const_->attributes, 0, NULL, ZEND_ATTRIBUTE_TARGET_CONST,
|
||||
const_->filename);
|
||||
}
|
||||
|
||||
ZEND_METHOD(ReflectionConstant, __toString)
|
||||
{
|
||||
reflection_object *intern;
|
||||
|
|
|
@ -923,4 +923,6 @@ final class ReflectionConstant implements Reflector
|
|||
public function getExtensionName(): string|false {}
|
||||
|
||||
public function __toString(): string {}
|
||||
|
||||
public function getAttributes(?string $name = null, int $flags = 0): array {}
|
||||
}
|
||||
|
|
6
ext/reflection/php_reflection_arginfo.h
generated
6
ext/reflection/php_reflection_arginfo.h
generated
|
@ -1,5 +1,5 @@
|
|||
/* This is a generated file, edit the .stub.php file instead.
|
||||
* Stub hash: 3c6be99bb36965139464925a618cb0bf03affa62 */
|
||||
* Stub hash: 7a8d126a96f0115783bd20a9adfc6bdc5ee88fda */
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_Reflection_getModifierNames, 0, 1, IS_ARRAY, 0)
|
||||
ZEND_ARG_TYPE_INFO(0, modifiers, IS_LONG, 0)
|
||||
|
@ -719,6 +719,8 @@ ZEND_END_ARG_INFO()
|
|||
|
||||
#define arginfo_class_ReflectionConstant___toString arginfo_class_ReflectionFunction___toString
|
||||
|
||||
#define arginfo_class_ReflectionConstant_getAttributes arginfo_class_ReflectionFunctionAbstract_getAttributes
|
||||
|
||||
ZEND_METHOD(Reflection, getModifierNames);
|
||||
ZEND_METHOD(ReflectionClass, __clone);
|
||||
ZEND_METHOD(ReflectionFunctionAbstract, inNamespace);
|
||||
|
@ -987,6 +989,7 @@ ZEND_METHOD(ReflectionConstant, getFileName);
|
|||
ZEND_METHOD(ReflectionConstant, getExtension);
|
||||
ZEND_METHOD(ReflectionConstant, getExtensionName);
|
||||
ZEND_METHOD(ReflectionConstant, __toString);
|
||||
ZEND_METHOD(ReflectionConstant, getAttributes);
|
||||
|
||||
static const zend_function_entry class_Reflection_methods[] = {
|
||||
ZEND_ME(Reflection, getModifierNames, arginfo_class_Reflection_getModifierNames, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
|
||||
|
@ -1355,6 +1358,7 @@ static const zend_function_entry class_ReflectionConstant_methods[] = {
|
|||
ZEND_ME(ReflectionConstant, getExtension, arginfo_class_ReflectionConstant_getExtension, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(ReflectionConstant, getExtensionName, arginfo_class_ReflectionConstant_getExtensionName, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(ReflectionConstant, __toString, arginfo_class_ReflectionConstant___toString, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(ReflectionConstant, getAttributes, arginfo_class_ReflectionConstant_getAttributes, ZEND_ACC_PUBLIC)
|
||||
ZEND_FE_END
|
||||
};
|
||||
|
||||
|
|
19
ext/reflection/tests/ReflectionConstant_getAttributes.phpt
Normal file
19
ext/reflection/tests/ReflectionConstant_getAttributes.phpt
Normal file
|
@ -0,0 +1,19 @@
|
|||
--TEST--
|
||||
ReflectionConstant::getAttributes() with attribute
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[Foo]
|
||||
const CT_CONST = 42;
|
||||
$reflectionConstant = new ReflectionConstant('CT_CONST');
|
||||
var_dump($reflectionConstant->getAttributes());
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(ReflectionAttribute)#%d (1) {
|
||||
["name"]=>
|
||||
string(3) "Foo"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
--TEST--
|
||||
ReflectionConstant::getAttributes() when there are none
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$reflectionConstant = new ReflectionConstant('E_ERROR');
|
||||
var_dump($reflectionConstant->getAttributes());
|
||||
|
||||
define('RT_CONST', 42);
|
||||
$reflectionConstant = new ReflectionConstant('RT_CONST');
|
||||
var_dump($reflectionConstant->getAttributes());
|
||||
|
||||
const CT_CONST = 43;
|
||||
$reflectionConstant = new ReflectionConstant('CT_CONST');
|
||||
var_dump($reflectionConstant->getAttributes());
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
array(0) {
|
||||
}
|
||||
array(0) {
|
||||
}
|
||||
array(0) {
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
--TEST--
|
||||
ReflectionConstant::isDeprecated() from attribute
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
#[Deprecated]
|
||||
const CT_CONST = 42;
|
||||
$reflectionConstant = new ReflectionConstant('CT_CONST');
|
||||
var_dump($reflectionConstant->isDeprecated());
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(true)
|
|
@ -1591,3 +1591,22 @@ static PHP_FUNCTION(zend_test_create_throwing_resource)
|
|||
zend_resource *res = zend_register_resource(NULL, le_throwing_resource);
|
||||
ZVAL_RES(return_value, res);
|
||||
}
|
||||
|
||||
static PHP_FUNCTION(zend_test_compile_to_ast)
|
||||
{
|
||||
zend_string *str;
|
||||
|
||||
ZEND_PARSE_PARAMETERS_START(1, 1)
|
||||
Z_PARAM_STR(str)
|
||||
ZEND_PARSE_PARAMETERS_END();
|
||||
|
||||
zend_arena *ast_arena;
|
||||
zend_ast *ast = zend_compile_string_to_ast(str, &ast_arena, ZSTR_EMPTY_ALLOC());
|
||||
|
||||
zend_string *result = zend_ast_export("", ast, "");
|
||||
|
||||
zend_ast_destroy(ast);
|
||||
zend_arena_destroy(ast_arena);
|
||||
|
||||
RETVAL_STR(result);
|
||||
}
|
||||
|
|
|
@ -319,6 +319,8 @@ function zend_test_override_libxml_global_state(): void {}
|
|||
function zend_test_is_zend_ptr(int $addr): bool {}
|
||||
|
||||
function zend_test_log_err_debug(string $str): void {}
|
||||
|
||||
function zend_test_compile_to_ast(string $str): string {}
|
||||
}
|
||||
|
||||
namespace ZendTestNS {
|
||||
|
|
6
ext/zend_test/test_arginfo.h
generated
6
ext/zend_test/test_arginfo.h
generated
|
@ -1,5 +1,5 @@
|
|||
/* This is a generated file, edit the .stub.php file instead.
|
||||
* Stub hash: bedc3883fbfe2491c95375beb13140e7fcfd83a5 */
|
||||
* Stub hash: 8022d3e8b34d0ebd71f1be19eeb720947bea67ed */
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_test_array_return, 0, 0, IS_ARRAY, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
@ -175,6 +175,8 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_test_log_err_debug, 0, 1, I
|
|||
ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_zend_test_compile_to_ast arginfo_zend_create_unterminated_string
|
||||
|
||||
#define arginfo_ZendTestNS2_namespaced_func arginfo_zend_test_is_pcre_bundled
|
||||
|
||||
#define arginfo_ZendTestNS2_namespaced_deprecated_func arginfo_zend_test_void_return
|
||||
|
@ -312,6 +314,7 @@ static ZEND_FUNCTION(zend_test_set_fmode);
|
|||
static ZEND_FUNCTION(zend_test_cast_fread);
|
||||
static ZEND_FUNCTION(zend_test_is_zend_ptr);
|
||||
static ZEND_FUNCTION(zend_test_log_err_debug);
|
||||
static ZEND_FUNCTION(zend_test_compile_to_ast);
|
||||
static ZEND_FUNCTION(ZendTestNS2_namespaced_func);
|
||||
static ZEND_FUNCTION(ZendTestNS2_namespaced_deprecated_func);
|
||||
static ZEND_FUNCTION(ZendTestNS2_ZendSubNS_namespaced_func);
|
||||
|
@ -428,6 +431,7 @@ static const zend_function_entry ext_functions[] = {
|
|||
ZEND_FE(zend_test_cast_fread, arginfo_zend_test_cast_fread)
|
||||
ZEND_FE(zend_test_is_zend_ptr, arginfo_zend_test_is_zend_ptr)
|
||||
ZEND_FE(zend_test_log_err_debug, arginfo_zend_test_log_err_debug)
|
||||
ZEND_FE(zend_test_compile_to_ast, arginfo_zend_test_compile_to_ast)
|
||||
#if (PHP_VERSION_ID >= 80400)
|
||||
ZEND_RAW_FENTRY(ZEND_NS_NAME("ZendTestNS2", "namespaced_func"), zif_ZendTestNS2_namespaced_func, arginfo_ZendTestNS2_namespaced_func, 0, NULL, NULL)
|
||||
#else
|
||||
|
|
54
ext/zend_test/tests/compile_to_ast/basic_ast.phpt
Normal file
54
ext/zend_test/tests/compile_to_ast/basic_ast.phpt
Normal file
|
@ -0,0 +1,54 @@
|
|||
--TEST--
|
||||
AST can be recreated (basic example)
|
||||
--EXTENSIONS--
|
||||
zend_test
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
/**
|
||||
* My documentation comment
|
||||
*/
|
||||
#[MyAttrib]
|
||||
function doSomething( int $intParam, string $stringParam ): object {
|
||||
return (object)[ $intParam, $stringParam ];
|
||||
}
|
||||
|
||||
// Inline comment
|
||||
|
||||
const MY_CONSTANT = true;
|
||||
|
||||
class Example {
|
||||
private int $value;
|
||||
|
||||
public function __construct( int $v ) {
|
||||
$this->value = $v;
|
||||
}
|
||||
|
||||
public function getValue(): int {
|
||||
return $this->value;
|
||||
}
|
||||
}
|
||||
|
||||
echo zend_test_compile_to_ast( file_get_contents( __FILE__ ) );
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
#[MyAttrib]
|
||||
function doSomething(int $intParam, string $stringParam): object {
|
||||
return (object)[$intParam, $stringParam];
|
||||
}
|
||||
|
||||
const MY_CONSTANT = true;
|
||||
class Example {
|
||||
private int $value;
|
||||
public function __construct(int $v) {
|
||||
$this->value = $v;
|
||||
}
|
||||
|
||||
public function getValue(): int {
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
echo zend_test_compile_to_ast(file_get_contents(__FILE__));
|
89
ext/zend_test/tests/compile_to_ast/complicated_class.phpt
Normal file
89
ext/zend_test/tests/compile_to_ast/complicated_class.phpt
Normal file
|
@ -0,0 +1,89 @@
|
|||
--TEST--
|
||||
AST can be recreated (complicated class example)
|
||||
--EXTENSIONS--
|
||||
zend_test
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
interface MyInterface1 {}
|
||||
interface MyInterface2 extends MyInterface1 {}
|
||||
|
||||
abstract class MyBaseClass implements MyInterface2 {
|
||||
final public function get5(): int {
|
||||
return 5;
|
||||
}
|
||||
|
||||
abstract public function setValue( string $value ): void;
|
||||
}
|
||||
|
||||
class MySubClass extends MyBaseClass {
|
||||
public private(set) string $alwaysLowerCase = "STARTS UPPER" {
|
||||
get => $this->alwaysLowerCase;
|
||||
set => strtolower( $value );
|
||||
}
|
||||
|
||||
public readonly bool $negated;
|
||||
|
||||
public const CONST_PUBLIC = 1;
|
||||
protected const CONST_PROTECTED = "abc";
|
||||
private const CONST_PRIVATE = [ 1, 2 ];
|
||||
|
||||
public static ?object $cache = null;
|
||||
|
||||
public function __construct( public bool $boolVal ) {
|
||||
$this->negated = !$boolVal;
|
||||
}
|
||||
|
||||
public function setValue( string $value ): void {
|
||||
$this->alwaysLowerCase = $value;
|
||||
}
|
||||
|
||||
public static function getPrivateConst(): array {
|
||||
return self::CONST_PRIVATE;
|
||||
}
|
||||
}
|
||||
|
||||
echo zend_test_compile_to_ast( file_get_contents( __FILE__ ) );
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
interface MyInterface1 {
|
||||
}
|
||||
|
||||
interface MyInterface2 implements MyInterface1 {
|
||||
}
|
||||
|
||||
abstract class MyBaseClass implements MyInterface2 {
|
||||
public final function get5(): int {
|
||||
return 5;
|
||||
}
|
||||
|
||||
public abstract function setValue(string $value): void;
|
||||
|
||||
}
|
||||
|
||||
class MySubClass extends MyBaseClass {
|
||||
public private(set) string $alwaysLowerCase = 'STARTS UPPER' {
|
||||
get => $this->alwaysLowerCase;
|
||||
set => strtolower($value);
|
||||
}
|
||||
public readonly bool $negated;
|
||||
public const CONST_PUBLIC = 1;
|
||||
protected const CONST_PROTECTED = 'abc';
|
||||
private const CONST_PRIVATE = [1, 2];
|
||||
public static ?object $cache = null;
|
||||
public function __construct(public bool $boolVal) {
|
||||
$this->negated = !$boolVal;
|
||||
}
|
||||
|
||||
public function setValue(string $value): void {
|
||||
$this->alwaysLowerCase = $value;
|
||||
}
|
||||
|
||||
public static function getPrivateConst(): array {
|
||||
return self::CONST_PRIVATE;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
echo zend_test_compile_to_ast(file_get_contents(__FILE__));
|
54
ext/zend_test/tests/compile_to_ast/enum.phpt
Normal file
54
ext/zend_test/tests/compile_to_ast/enum.phpt
Normal file
|
@ -0,0 +1,54 @@
|
|||
--TEST--
|
||||
AST can be recreated (enums)
|
||||
--EXTENSIONS--
|
||||
zend_test
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
enum Suit
|
||||
{
|
||||
case Hearts;
|
||||
case Diamonds;
|
||||
case Clubs;
|
||||
case Spades;
|
||||
|
||||
public const Clubz = self::Clubs;
|
||||
}
|
||||
|
||||
enum MyBoolean: int {
|
||||
case MyFalse = 0;
|
||||
case MyTrue = 1;
|
||||
|
||||
public function toBool(): bool {
|
||||
return match($this) {
|
||||
MyBoolean::MyFalse => false,
|
||||
MyBoolean::MyTrue => true,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
echo zend_test_compile_to_ast( file_get_contents( __FILE__ ) );
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
enum Suit {
|
||||
case Hearts;
|
||||
case Diamonds;
|
||||
case Clubs;
|
||||
case Spades;
|
||||
public const Clubz = self::Clubs;
|
||||
}
|
||||
|
||||
enum MyBoolean: int {
|
||||
case MyFalse = 0;
|
||||
case MyTrue = 1;
|
||||
public function toBool(): bool {
|
||||
return match ($this) {
|
||||
MyBoolean::MyFalse => false,
|
||||
MyBoolean::MyTrue => true,
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
echo zend_test_compile_to_ast(file_get_contents(__FILE__));
|
|
@ -429,7 +429,8 @@ PHP_FUNCTION(phpdbg_start_oplog)
|
|||
static zend_always_inline bool phpdbg_is_ignored_opcode(uint8_t opcode) {
|
||||
return
|
||||
opcode == ZEND_NOP || opcode == ZEND_OP_DATA || opcode == ZEND_FE_FREE || opcode == ZEND_FREE || opcode == ZEND_ASSERT_CHECK || opcode == ZEND_VERIFY_RETURN_TYPE
|
||||
|| opcode == ZEND_DECLARE_CONST || opcode == ZEND_DECLARE_CLASS || opcode == ZEND_DECLARE_FUNCTION
|
||||
|| opcode == ZEND_DECLARE_CONST || opcode == ZEND_DECLARE_ATTRIBUTED_CONST
|
||||
|| opcode == ZEND_DECLARE_CLASS || opcode == ZEND_DECLARE_FUNCTION
|
||||
|| opcode == ZEND_DECLARE_CLASS_DELAYED
|
||||
|| opcode == ZEND_DECLARE_ANON_CLASS || opcode == ZEND_FAST_RET || opcode == ZEND_TICKS
|
||||
|| opcode == ZEND_EXT_STMT || opcode == ZEND_EXT_FCALL_BEGIN || opcode == ZEND_EXT_FCALL_END
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue