mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +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.
|
. Added asymmetric visibility support for static properties.
|
||||||
RFC: https://wiki.php.net/rfc/static-aviz
|
RFC: https://wiki.php.net/rfc/static-aviz
|
||||||
. Added support for casts in constant expressions.
|
. 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:
|
- Curl:
|
||||||
. Added support for share handles that are persisted across multiple PHP
|
. 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::getFileName() was introduced.
|
||||||
. ReflectionConstant::getExtension() and
|
. ReflectionConstant::getExtension() and
|
||||||
ReflectionConstant::getExtensionName() were introduced.
|
ReflectionConstant::getExtensionName() were introduced.
|
||||||
|
. ReflectionConstant::getAttributes() was introduced.
|
||||||
|
RFC: https://wiki.php.net/rfc/attributes-on-constants
|
||||||
|
|
||||||
========================================
|
========================================
|
||||||
7. New Classes and Interfaces
|
7. New Classes and Interfaces
|
||||||
|
|
|
@ -25,6 +25,9 @@ $f2 = #[A1(9)] function () { };
|
||||||
|
|
||||||
$f3 = #[A1(10)] fn () => 1;
|
$f3 = #[A1(10)] fn () => 1;
|
||||||
|
|
||||||
|
#[A1(11)]
|
||||||
|
const CT_CONSTANT = 'Demo';
|
||||||
|
|
||||||
$ref = new \ReflectionClass(Foo::class);
|
$ref = new \ReflectionClass(Foo::class);
|
||||||
|
|
||||||
$sources = [
|
$sources = [
|
||||||
|
@ -37,7 +40,8 @@ $sources = [
|
||||||
new \ReflectionObject($object),
|
new \ReflectionObject($object),
|
||||||
new \ReflectionFunction('f1'),
|
new \ReflectionFunction('f1'),
|
||||||
new \ReflectionFunction($f2),
|
new \ReflectionFunction($f2),
|
||||||
new \ReflectionFunction($f3)
|
new \ReflectionFunction($f3),
|
||||||
|
new \ReflectionConstant('CT_CONSTANT'),
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($sources as $r) {
|
foreach ($sources as $r) {
|
||||||
|
@ -132,3 +136,11 @@ array(1) {
|
||||||
[0]=>
|
[0]=>
|
||||||
int(10)
|
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');
|
$rp = new ReflectionProperty('Exception', 'message');
|
||||||
var_dump($rp->getAttributes());
|
var_dump($rp->getAttributes());
|
||||||
|
|
||||||
|
$rct = new ReflectionConstant('PHP_VERSION');
|
||||||
|
var_dump($rct->getAttributes());
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
array(0) {
|
array(0) {
|
||||||
|
@ -30,3 +33,5 @@ array(0) {
|
||||||
}
|
}
|
||||||
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, '}');
|
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;
|
uint32_t i = 0;
|
||||||
|
|
||||||
while (i < list->children) {
|
while (i < children) {
|
||||||
if (i != 0 && separator) {
|
if (i != 0 && separator) {
|
||||||
smart_str_appends(str, ", ");
|
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)
|
static ZEND_COLD void zend_ast_export_encaps_list(smart_str *str, char quote, zend_ast_list *list, int indent)
|
||||||
{
|
{
|
||||||
uint32_t i = 0;
|
uint32_t i = 0;
|
||||||
|
@ -2216,9 +2224,26 @@ simple_list:
|
||||||
goto 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 ");
|
smart_str_appends(str, "const ");
|
||||||
goto simple_list;
|
goto simple_list;
|
||||||
|
}
|
||||||
case ZEND_AST_CLASS_CONST_GROUP:
|
case ZEND_AST_CLASS_CONST_GROUP:
|
||||||
if (ast->child[1]) {
|
if (ast->child[1]) {
|
||||||
zend_ast_export_attributes(str, ast->child[1], indent, 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:
|
case ZEND_AST_CLASS_CONST_GROUP:
|
||||||
ast->child[1] = attr;
|
ast->child[1] = attr;
|
||||||
break;
|
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()
|
EMPTY_SWITCH_DEFAULT_CASE()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -378,7 +378,8 @@ static const char *target_names[] = {
|
||||||
"method",
|
"method",
|
||||||
"property",
|
"property",
|
||||||
"class constant",
|
"class constant",
|
||||||
"parameter"
|
"parameter",
|
||||||
|
"constant"
|
||||||
};
|
};
|
||||||
|
|
||||||
ZEND_API zend_string *zend_get_attribute_target_names(uint32_t flags)
|
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_PROPERTY (1<<3)
|
||||||
#define ZEND_ATTRIBUTE_TARGET_CLASS_CONST (1<<4)
|
#define ZEND_ATTRIBUTE_TARGET_CLASS_CONST (1<<4)
|
||||||
#define ZEND_ATTRIBUTE_TARGET_PARAMETER (1<<5)
|
#define ZEND_ATTRIBUTE_TARGET_PARAMETER (1<<5)
|
||||||
#define ZEND_ATTRIBUTE_TARGET_ALL ((1<<6) - 1)
|
#define ZEND_ATTRIBUTE_TARGET_CONST (1<<6)
|
||||||
#define ZEND_ATTRIBUTE_IS_REPEATABLE (1<<6)
|
#define ZEND_ATTRIBUTE_TARGET_ALL ((1<<7) - 1)
|
||||||
#define ZEND_ATTRIBUTE_FLAGS ((1<<7) - 1)
|
#define ZEND_ATTRIBUTE_IS_REPEATABLE (1<<7)
|
||||||
|
#define ZEND_ATTRIBUTE_FLAGS ((1<<8) - 1)
|
||||||
|
|
||||||
/* Flags for zend_attribute.flags */
|
/* Flags for zend_attribute.flags */
|
||||||
#define ZEND_ATTRIBUTE_PERSISTENT (1<<0)
|
#define ZEND_ATTRIBUTE_PERSISTENT (1<<0)
|
||||||
|
|
|
@ -17,6 +17,8 @@ final class Attribute
|
||||||
const int TARGET_CLASS_CONSTANT = UNKNOWN;
|
const int TARGET_CLASS_CONSTANT = UNKNOWN;
|
||||||
/** @cvalue ZEND_ATTRIBUTE_TARGET_PARAMETER */
|
/** @cvalue ZEND_ATTRIBUTE_TARGET_PARAMETER */
|
||||||
const int TARGET_PARAMETER = UNKNOWN;
|
const int TARGET_PARAMETER = UNKNOWN;
|
||||||
|
/** @cvalue ZEND_ATTRIBUTE_TARGET_CONST */
|
||||||
|
const int TARGET_CONSTANT = UNKNOWN;
|
||||||
/** @cvalue ZEND_ATTRIBUTE_TARGET_ALL */
|
/** @cvalue ZEND_ATTRIBUTE_TARGET_ALL */
|
||||||
const int TARGET_ALL = UNKNOWN;
|
const int TARGET_ALL = UNKNOWN;
|
||||||
/** @cvalue ZEND_ATTRIBUTE_IS_REPEATABLE */
|
/** @cvalue ZEND_ATTRIBUTE_IS_REPEATABLE */
|
||||||
|
@ -75,7 +77,7 @@ final class Override
|
||||||
/**
|
/**
|
||||||
* @strict-properties
|
* @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
|
final class Deprecated
|
||||||
{
|
{
|
||||||
public readonly ?string $message;
|
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.
|
/* 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_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")
|
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_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);
|
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 const_TARGET_ALL_value;
|
||||||
ZVAL_LONG(&const_TARGET_ALL_value, ZEND_ATTRIBUTE_TARGET_ALL);
|
ZVAL_LONG(&const_TARGET_ALL_value, ZEND_ATTRIBUTE_TARGET_ALL);
|
||||||
zend_string *const_TARGET_ALL_name = zend_string_init_interned("TARGET_ALL", sizeof("TARGET_ALL") - 1, 1);
|
zend_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_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);
|
zend_string_release(attribute_name_Attribute_class_Deprecated_0);
|
||||||
zval attribute_Attribute_class_Deprecated_0_arg0;
|
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);
|
ZVAL_COPY_VALUE(&attribute_Attribute_class_Deprecated_0->args[0].value, &attribute_Attribute_class_Deprecated_0_arg0);
|
||||||
|
|
||||||
return class_entry;
|
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);
|
zend_ast_list *list = zend_ast_get_list(ast);
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
|
zend_ast *attributes_ast = NULL;
|
||||||
|
zend_op *last_op = NULL;
|
||||||
for (i = 0; i < list->children; ++i) {
|
for (i = 0; i < list->children; ++i) {
|
||||||
zend_ast *const_ast = list->child[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 *name_ast = const_ast->child[0];
|
||||||
zend_ast **value_ast_ptr = &const_ast->child[1];
|
zend_ast **value_ast_ptr = &const_ast->child[1];
|
||||||
zend_string *unqualified_name = zend_ast_get_str(name_ast);
|
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;
|
name_node.op_type = IS_CONST;
|
||||||
ZVAL_STR(&name_node.u.constant, name);
|
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);
|
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 | | | */
|
/* has #[\Override] attribute | | | */
|
||||||
#define ZEND_ACC_OVERRIDE (1 << 28) /* | X | | */
|
#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 | | | */
|
/* has #[\NoDiscard] attribute | | | */
|
||||||
#define ZEND_ACC_NODISCARD (1 << 29) /* | X | | */
|
#define ZEND_ACC_NODISCARD (1 << 29) /* | X | | */
|
||||||
/* | | | */
|
/* | | | */
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "zend.h"
|
#include "zend.h"
|
||||||
|
#include "zend_attributes.h"
|
||||||
#include "zend_constants.h"
|
#include "zend_constants.h"
|
||||||
#include "zend_exceptions.h"
|
#include "zend_exceptions.h"
|
||||||
#include "zend_execute.h"
|
#include "zend_execute.h"
|
||||||
|
@ -49,6 +50,9 @@ void free_zend_constant(zval *zv)
|
||||||
if (c->filename) {
|
if (c->filename) {
|
||||||
zend_string_release_ex(c->filename, 0);
|
zend_string_release_ex(c->filename, 0);
|
||||||
}
|
}
|
||||||
|
if (c->attributes) {
|
||||||
|
zend_hash_release(c->attributes);
|
||||||
|
}
|
||||||
efree(c);
|
efree(c);
|
||||||
} else {
|
} else {
|
||||||
zval_internal_ptr_dtor(&c->value);
|
zval_internal_ptr_dtor(&c->value);
|
||||||
|
@ -58,6 +62,9 @@ void free_zend_constant(zval *zv)
|
||||||
if (c->filename) {
|
if (c->filename) {
|
||||||
zend_string_release_ex(c->filename, 1);
|
zend_string_release_ex(c->filename, 1);
|
||||||
}
|
}
|
||||||
|
if (c->attributes) {
|
||||||
|
zend_hash_release(c->attributes);
|
||||||
|
}
|
||||||
free(c);
|
free(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,6 +84,9 @@ static void copy_zend_constant(zval *zv)
|
||||||
if (c->filename != NULL) {
|
if (c->filename != NULL) {
|
||||||
c->filename = zend_string_copy(c->filename);
|
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) {
|
if (Z_TYPE(c->value) == IS_STRING) {
|
||||||
Z_STR(c->value) = zend_string_dup(Z_STR(c->value), 1);
|
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)) {
|
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;
|
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 */
|
/* Check if the user is trying to define any special constant */
|
||||||
if (zend_string_equals_literal(name, "__COMPILER_HALT_OFFSET__")
|
if (zend_string_equals_literal(name, "__COMPILER_HALT_OFFSET__")
|
||||||
|| (!persistent && zend_get_special_const(ZSTR_VAL(name), ZSTR_LEN(name)))
|
|| (!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;
|
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;
|
zval value;
|
||||||
zend_string *name;
|
zend_string *name;
|
||||||
zend_string *filename;
|
zend_string *filename;
|
||||||
|
HashTable *attributes;
|
||||||
} zend_constant;
|
} zend_constant;
|
||||||
|
|
||||||
#define ZEND_CONSTANT_FLAGS(c) \
|
#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_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 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);
|
ZEND_API zend_result zend_register_constant(zend_constant *c);
|
||||||
|
void zend_constant_add_attributes(zend_constant *c, HashTable *attributes);
|
||||||
#ifdef ZTS
|
#ifdef ZTS
|
||||||
void zend_copy_constants(HashTable *target, HashTable *source);
|
void zend_copy_constants(HashTable *target, HashTable *source);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1979,6 +1979,24 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_deprecated_class_constant(const zend_
|
||||||
zend_string_release(message_suffix);
|
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_API ZEND_COLD void ZEND_FASTCALL zend_false_to_array_deprecated(void)
|
||||||
{
|
{
|
||||||
zend_error(E_DEPRECATED, "Automatic conversion of false to array is deprecated");
|
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) {
|
if (!check_defined_only) {
|
||||||
ZVAL_COPY_OR_DUP(EX_VAR(opline->result.var), &c->value);
|
ZVAL_COPY_OR_DUP(EX_VAR(opline->result.var), &c->value);
|
||||||
if (ZEND_CONSTANT_FLAGS(c) & CONST_DEPRECATED) {
|
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;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "zend_hash.h"
|
#include "zend_hash.h"
|
||||||
#include "zend_operators.h"
|
#include "zend_operators.h"
|
||||||
#include "zend_variables.h"
|
#include "zend_variables.h"
|
||||||
|
#include "zend_constants.h"
|
||||||
|
|
||||||
#include <stdint.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_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_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_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_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_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);
|
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) {
|
if (c->filename) {
|
||||||
zend_string_release_ex(c->filename, 0);
|
zend_string_release_ex(c->filename, 0);
|
||||||
}
|
}
|
||||||
|
if (c->attributes) {
|
||||||
|
zend_hash_release(c->attributes);
|
||||||
|
}
|
||||||
efree(c);
|
efree(c);
|
||||||
zend_string_release_ex(key, 0);
|
zend_string_release_ex(key, 0);
|
||||||
} ZEND_HASH_MAP_FOREACH_END_DEL();
|
} ZEND_HASH_MAP_FOREACH_END_DEL();
|
||||||
|
|
|
@ -391,6 +391,7 @@ attributed_statement:
|
||||||
| trait_declaration_statement { $$ = $1; }
|
| trait_declaration_statement { $$ = $1; }
|
||||||
| interface_declaration_statement { $$ = $1; }
|
| interface_declaration_statement { $$ = $1; }
|
||||||
| enum_declaration_statement { $$ = $1; }
|
| enum_declaration_statement { $$ = $1; }
|
||||||
|
| T_CONST const_list ';' { $$ = $2; }
|
||||||
;
|
;
|
||||||
|
|
||||||
top_statement:
|
top_statement:
|
||||||
|
@ -414,7 +415,6 @@ top_statement:
|
||||||
| T_USE use_type group_use_declaration ';' { $$ = $3; $$->attr = $2; }
|
| T_USE use_type group_use_declaration ';' { $$ = $3; $$->attr = $2; }
|
||||||
| T_USE use_declarations ';' { $$ = $2; $$->attr = ZEND_SYMBOL_CLASS; }
|
| T_USE use_declarations ';' { $$ = $2; $$->attr = ZEND_SYMBOL_CLASS; }
|
||||||
| T_USE use_type use_declarations ';' { $$ = $3; $$->attr = $2; }
|
| T_USE use_type use_declarations ';' { $$ = $3; $$->attr = $2; }
|
||||||
| T_CONST const_list ';' { $$ = $2; }
|
|
||||||
;
|
;
|
||||||
|
|
||||||
use_type:
|
use_type:
|
||||||
|
|
|
@ -580,6 +580,18 @@ ZEND_API void destroy_op_array(zend_op_array *op_array)
|
||||||
efree(op_array->vars);
|
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) {
|
if (op_array->literals) {
|
||||||
zval *literal = op_array->literals;
|
zval *literal = op_array->literals;
|
||||||
zval *end = literal + op_array->last_literal;
|
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_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)
|
ZEND_VM_HANDLER(142, ZEND_DECLARE_LAMBDA_FUNCTION, CONST, NUM)
|
||||||
{
|
{
|
||||||
USE_OPLINE
|
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();
|
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)
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||||
{
|
{
|
||||||
USE_OPLINE
|
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_FRAMELESS_ICALL_3_SPEC_OBSERVER_LABEL,
|
||||||
(void*)&&ZEND_JMP_FRAMELESS_SPEC_CONST_LABEL,
|
(void*)&&ZEND_JMP_FRAMELESS_SPEC_CONST_LABEL,
|
||||||
(void*)&&ZEND_INIT_PARENT_PROPERTY_HOOK_CALL_SPEC_CONST_UNUSED_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_INIT_FCALL_OFFSET_SPEC_CONST_LABEL,
|
||||||
(void*)&&ZEND_RECV_NOTYPE_SPEC_LABEL,
|
(void*)&&ZEND_RECV_NOTYPE_SPEC_LABEL,
|
||||||
(void*)&&ZEND_NULL_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);
|
ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
||||||
VM_TRACE_OP_END(ZEND_DECLARE_CONST_SPEC_CONST_CONST)
|
VM_TRACE_OP_END(ZEND_DECLARE_CONST_SPEC_CONST_CONST)
|
||||||
HYBRID_BREAK();
|
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):
|
HYBRID_CASE(ZEND_YIELD_SPEC_CONST_CONST):
|
||||||
VM_TRACE(ZEND_YIELD_SPEC_CONST_CONST)
|
VM_TRACE(ZEND_YIELD_SPEC_CONST_CONST)
|
||||||
ZEND_YIELD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
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_FRAMELESS_ICALL_3_SPEC_OBSERVER_HANDLER,
|
||||||
ZEND_JMP_FRAMELESS_SPEC_CONST_HANDLER,
|
ZEND_JMP_FRAMELESS_SPEC_CONST_HANDLER,
|
||||||
ZEND_INIT_PARENT_PROPERTY_HOOK_CALL_SPEC_CONST_UNUSED_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_INIT_FCALL_OFFSET_SPEC_CONST_HANDLER,
|
||||||
ZEND_RECV_NOTYPE_SPEC_HANDLER,
|
ZEND_RECV_NOTYPE_SPEC_HANDLER,
|
||||||
ZEND_NULL_HANDLER,
|
ZEND_NULL_HANDLER,
|
||||||
|
@ -67712,7 +67761,7 @@ void zend_vm_init(void)
|
||||||
1255,
|
1255,
|
||||||
1256 | SPEC_RULE_OP1,
|
1256 | SPEC_RULE_OP1,
|
||||||
1261 | SPEC_RULE_OP1,
|
1261 | SPEC_RULE_OP1,
|
||||||
3486,
|
3487,
|
||||||
1266 | SPEC_RULE_OP1,
|
1266 | SPEC_RULE_OP1,
|
||||||
1271 | SPEC_RULE_OP1,
|
1271 | SPEC_RULE_OP1,
|
||||||
1276 | SPEC_RULE_OP2,
|
1276 | SPEC_RULE_OP2,
|
||||||
|
@ -67746,7 +67795,7 @@ void zend_vm_init(void)
|
||||||
1559 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
1559 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
||||||
1584 | SPEC_RULE_OP1,
|
1584 | SPEC_RULE_OP1,
|
||||||
1589,
|
1589,
|
||||||
3486,
|
3487,
|
||||||
1590 | SPEC_RULE_OP1,
|
1590 | SPEC_RULE_OP1,
|
||||||
1595 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
1595 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
||||||
1620 | 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,
|
2573 | SPEC_RULE_OBSERVER,
|
||||||
2575,
|
2575,
|
||||||
2576,
|
2576,
|
||||||
3486,
|
2577,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
3486,
|
3487,
|
||||||
};
|
};
|
||||||
#if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
|
#if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
|
||||||
zend_opcode_handler_funcs = labels;
|
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) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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) {
|
if (op->op1_type < op->op2_type) {
|
||||||
zend_swap_operands(op);
|
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) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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) {
|
if (op->op1_type < op->op2_type) {
|
||||||
zend_swap_operands(op);
|
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) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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) {
|
if (op->op1_type < op->op2_type) {
|
||||||
zend_swap_operands(op);
|
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) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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) {
|
} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
|
||||||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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) {
|
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
|
||||||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
spec = 2710 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
spec = 2711 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ZEND_MUL:
|
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) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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) {
|
} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
|
||||||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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) {
|
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
|
||||||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
spec = 2785 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
spec = 2786 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ZEND_IS_IDENTICAL:
|
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) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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) {
|
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
|
||||||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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))) {
|
} 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;
|
break;
|
||||||
case ZEND_IS_NOT_IDENTICAL:
|
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) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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) {
|
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
|
||||||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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))) {
|
} 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;
|
break;
|
||||||
case ZEND_IS_EQUAL:
|
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) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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) {
|
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
|
||||||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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;
|
break;
|
||||||
case ZEND_IS_NOT_EQUAL:
|
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) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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) {
|
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
|
||||||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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;
|
break;
|
||||||
case ZEND_IS_SMALLER:
|
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) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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) {
|
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
|
||||||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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;
|
break;
|
||||||
case ZEND_IS_SMALLER_OR_EQUAL:
|
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) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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) {
|
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
|
||||||
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
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;
|
break;
|
||||||
case ZEND_QM_ASSIGN:
|
case ZEND_QM_ASSIGN:
|
||||||
if (op1_info == MAY_BE_LONG) {
|
if (op1_info == MAY_BE_LONG) {
|
||||||
spec = 3432 | SPEC_RULE_OP1;
|
spec = 3433 | SPEC_RULE_OP1;
|
||||||
} else if (op1_info == MAY_BE_DOUBLE) {
|
} 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))))) {
|
} 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;
|
break;
|
||||||
case ZEND_PRE_INC:
|
case ZEND_PRE_INC:
|
||||||
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
|
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) {
|
} else if (op1_info == MAY_BE_LONG) {
|
||||||
spec = 3422 | SPEC_RULE_RETVAL;
|
spec = 3423 | SPEC_RULE_RETVAL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ZEND_PRE_DEC:
|
case ZEND_PRE_DEC:
|
||||||
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
|
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) {
|
} else if (op1_info == MAY_BE_LONG) {
|
||||||
spec = 3426 | SPEC_RULE_RETVAL;
|
spec = 3427 | SPEC_RULE_RETVAL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ZEND_POST_INC:
|
case ZEND_POST_INC:
|
||||||
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
|
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
|
||||||
spec = 3428;
|
|
||||||
} else if (op1_info == MAY_BE_LONG) {
|
|
||||||
spec = 3429;
|
spec = 3429;
|
||||||
|
} else if (op1_info == MAY_BE_LONG) {
|
||||||
|
spec = 3430;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ZEND_POST_DEC:
|
case ZEND_POST_DEC:
|
||||||
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
|
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
|
||||||
spec = 3430;
|
|
||||||
} else if (op1_info == MAY_BE_LONG) {
|
|
||||||
spec = 3431;
|
spec = 3431;
|
||||||
|
} else if (op1_info == MAY_BE_LONG) {
|
||||||
|
spec = 3432;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ZEND_JMP:
|
case ZEND_JMP:
|
||||||
if (OP_JMP_ADDR(op, op->op1) > op) {
|
if (OP_JMP_ADDR(op, op->op1) > op) {
|
||||||
spec = 2584;
|
spec = 2585;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ZEND_INIT_FCALL:
|
case ZEND_INIT_FCALL:
|
||||||
if (Z_EXTRA_P(RT_CONSTANT(op, op->op2)) != 0) {
|
if (Z_EXTRA_P(RT_CONSTANT(op, op->op2)) != 0) {
|
||||||
spec = 2577;
|
spec = 2578;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ZEND_RECV:
|
case ZEND_RECV:
|
||||||
if (op->op2.num == MAY_BE_ANY) {
|
if (op->op2.num == MAY_BE_ANY) {
|
||||||
spec = 2578;
|
spec = 2579;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ZEND_SEND_VAL:
|
case ZEND_SEND_VAL:
|
||||||
if (op->op1_type == IS_CONST && op->op2_type == IS_UNUSED && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_UNUSED && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
|
||||||
spec = 3482;
|
spec = 3483;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ZEND_SEND_VAR_EX:
|
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) {
|
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;
|
break;
|
||||||
case ZEND_FE_FETCH_R:
|
case ZEND_FE_FETCH_R:
|
||||||
if (op->op2_type == IS_CV && (op1_info & (MAY_BE_ANY|MAY_BE_REF)) == MAY_BE_ARRAY) {
|
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;
|
break;
|
||||||
case ZEND_FETCH_DIM_R:
|
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) {
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
spec = 3447 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
spec = 3448 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ZEND_SEND_VAL_EX:
|
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))) {
|
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;
|
break;
|
||||||
case ZEND_SEND_VAR:
|
case ZEND_SEND_VAR:
|
||||||
if (op->op2_type == IS_UNUSED && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
|
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;
|
break;
|
||||||
case ZEND_COUNT:
|
case ZEND_COUNT:
|
||||||
if ((op1_info & (MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_REF)) == MAY_BE_ARRAY) {
|
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;
|
break;
|
||||||
case ZEND_BW_OR:
|
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) \
|
_(2574, ZEND_FRAMELESS_ICALL_3_SPEC_OBSERVER) \
|
||||||
_(2575, ZEND_JMP_FRAMELESS_SPEC_CONST) \
|
_(2575, ZEND_JMP_FRAMELESS_SPEC_CONST) \
|
||||||
_(2576, ZEND_INIT_PARENT_PROPERTY_HOOK_CALL_SPEC_CONST_UNUSED) \
|
_(2576, ZEND_INIT_PARENT_PROPERTY_HOOK_CALL_SPEC_CONST_UNUSED) \
|
||||||
_(2577, ZEND_INIT_FCALL_OFFSET_SPEC_CONST) \
|
_(2577, ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST) \
|
||||||
_(2578, ZEND_RECV_NOTYPE_SPEC) \
|
_(2578, ZEND_INIT_FCALL_OFFSET_SPEC_CONST) \
|
||||||
_(2580, ZEND_COUNT_ARRAY_SPEC_TMPVAR_UNUSED) \
|
_(2579, ZEND_RECV_NOTYPE_SPEC) \
|
||||||
_(2581, ZEND_COUNT_ARRAY_SPEC_TMPVAR_UNUSED) \
|
_(2581, ZEND_COUNT_ARRAY_SPEC_TMPVAR_UNUSED) \
|
||||||
_(2583, ZEND_COUNT_ARRAY_SPEC_CV_UNUSED) \
|
_(2582, ZEND_COUNT_ARRAY_SPEC_TMPVAR_UNUSED) \
|
||||||
_(2584, ZEND_JMP_FORWARD_SPEC) \
|
_(2584, ZEND_COUNT_ARRAY_SPEC_CV_UNUSED) \
|
||||||
_(2590, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
_(2585, ZEND_JMP_FORWARD_SPEC) \
|
||||||
_(2591, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
_(2591, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||||
_(2592, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
_(2592, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2594, 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_CONST) \
|
_(2595, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2596, 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) \
|
_(2597, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2599, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
_(2598, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2605, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
_(2600, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2606, 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) \
|
_(2607, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2609, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
_(2608, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2615, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
|
_(2610, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2616, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2616, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(2617, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2617, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2619, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2618, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2620, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
|
_(2620, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2621, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2621, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(2622, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2622, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2624, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2623, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2630, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
|
_(2625, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2631, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2631, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(2632, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2632, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2634, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2633, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2640, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(2635, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2641, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2641, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(2642, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2642, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2644, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2643, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2645, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(2645, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2646, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2646, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(2647, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2647, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2649, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2648, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2655, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(2650, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2656, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2656, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(2657, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2657, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2659, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2658, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2661, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
|
_(2660, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2662, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
|
_(2662, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
|
||||||
_(2664, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
|
_(2663, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
|
||||||
_(2665, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
_(2665, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
|
||||||
_(2666, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
_(2666, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||||
_(2667, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
_(2667, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2669, 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_CONST) \
|
_(2670, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2671, 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) \
|
_(2672, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2674, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
_(2673, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2680, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
_(2675, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2681, 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) \
|
_(2682, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2684, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
_(2683, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2686, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
|
_(2685, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2687, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
|
_(2687, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
|
||||||
_(2689, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
|
_(2688, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
|
||||||
_(2690, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
|
_(2690, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
|
||||||
_(2691, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2691, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(2692, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2692, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2694, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2693, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2695, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
|
_(2695, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2696, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2696, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(2697, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2697, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2699, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2698, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2705, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
|
_(2700, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2706, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2706, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(2707, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2707, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2709, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2708, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2711, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
|
_(2710, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2712, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
|
_(2712, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||||
_(2714, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
|
_(2713, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||||
_(2715, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(2715, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||||
_(2716, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2716, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(2717, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2717, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2719, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2718, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2720, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(2720, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2721, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2721, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(2722, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2722, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2724, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2723, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2730, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(2725, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2731, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2731, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(2732, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2732, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2734, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2733, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2740, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
_(2735, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2741, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
_(2741, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
||||||
_(2742, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
_(2742, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2744, 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_CONST) \
|
_(2745, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2746, 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) \
|
_(2747, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2749, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
_(2748, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2755, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
|
_(2750, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2756, 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) \
|
_(2757, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2759, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
_(2758, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2765, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
|
_(2760, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2766, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2766, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(2767, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2767, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2769, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2768, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2770, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
|
_(2770, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2771, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2771, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(2772, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2772, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2774, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2773, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2780, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
|
_(2775, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2781, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2781, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(2782, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2782, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2784, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2783, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2790, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(2785, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2791, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2791, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(2792, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2792, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2794, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2793, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2795, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(2795, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2796, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2796, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(2797, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2797, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2799, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2798, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2805, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(2800, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2806, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2806, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(2807, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2807, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2809, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2808, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2825, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
_(2810, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2826, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(2826, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(2827, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(2827, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(2828, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2828, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(2829, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2829, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2830, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2830, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2831, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2831, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2832, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2832, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2833, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2833, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2837, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2834, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2838, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2838, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2839, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2839, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2840, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
_(2840, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2841, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(2841, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(2842, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(2842, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(2843, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2843, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(2844, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2844, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2845, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2845, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2846, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2846, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2847, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2847, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2848, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2848, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2852, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2849, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2853, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2853, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2854, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2854, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2870, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
_(2855, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2871, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(2871, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(2872, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(2872, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(2873, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2873, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(2874, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2874, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2875, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2875, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2876, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2876, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2877, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2877, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2878, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2878, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2882, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2879, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2883, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2883, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2884, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2884, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2900, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(2885, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2901, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(2901, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(2902, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(2902, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(2903, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2903, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(2904, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2904, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2905, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2905, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2906, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2906, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2907, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2907, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2908, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2908, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2912, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2909, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2913, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2913, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2914, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2914, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2915, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(2915, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2916, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(2916, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(2917, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(2917, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(2918, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2918, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(2919, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2919, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2920, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2920, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2921, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2921, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2922, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2922, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2923, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2923, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2927, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2924, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2928, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2928, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2929, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2929, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2945, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(2930, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2946, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(2946, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(2947, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(2947, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(2948, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2948, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(2949, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2949, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2950, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2950, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2951, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2951, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2952, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2952, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2953, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2953, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2957, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(2954, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2958, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2958, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2959, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2959, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2975, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
_(2960, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2976, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(2976, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(2977, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(2977, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(2978, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2978, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(2979, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2979, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2980, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2980, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2981, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2981, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2982, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2982, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2983, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2983, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2987, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2984, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2988, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2988, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2989, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2989, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2990, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
_(2990, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2991, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(2991, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(2992, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(2992, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(2993, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2993, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(2994, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2994, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2995, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2995, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(2996, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2996, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(2997, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(2997, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(2998, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(2998, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3002, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(2999, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3003, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3003, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3004, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3004, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3020, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
_(3005, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3021, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3021, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(3022, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3022, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3023, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3023, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3024, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3024, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3025, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3025, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3026, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3026, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3027, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3027, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3028, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3028, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3032, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3029, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3033, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3033, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3034, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3034, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3050, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(3035, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3051, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3051, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(3052, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3052, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3053, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3053, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3054, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3054, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3055, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3055, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3056, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3056, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3057, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3057, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3058, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3058, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3062, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3059, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3063, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3063, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3064, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3064, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3065, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(3065, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3066, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3066, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(3067, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3067, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3068, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3068, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3069, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3069, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3070, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3070, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3071, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3071, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3072, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3072, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3073, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3073, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3077, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3074, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3078, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3078, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3079, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3079, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3095, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(3080, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3096, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3096, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(3097, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3097, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3098, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3098, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3099, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3099, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3100, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3100, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3101, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3101, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3102, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3102, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3103, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3103, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3107, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3104, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3108, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3108, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3109, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3109, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3110, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CONST) \
|
_(3110, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3114, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CV) \
|
_(3111, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CONST) \
|
||||||
_(3115, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CONST) \
|
_(3115, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CV) \
|
||||||
_(3119, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CV) \
|
_(3116, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CONST) \
|
||||||
_(3123, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
|
_(3120, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CV) \
|
||||||
_(3124, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
_(3124, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
|
||||||
_(3125, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
_(3125, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||||
_(3126, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
|
_(3126, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||||
_(3127, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
_(3127, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
|
||||||
_(3128, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
_(3128, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||||
_(3132, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
|
_(3129, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||||
_(3133, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
_(3133, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
|
||||||
_(3134, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
_(3134, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||||
_(3135, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
|
_(3135, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||||
_(3136, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3136, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(3137, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3137, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3138, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3138, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3139, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3139, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3140, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3140, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3141, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3141, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3142, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3142, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3143, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3143, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3147, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3144, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3148, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3148, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3149, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3149, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3150, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
|
_(3150, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3151, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3151, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(3152, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3152, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3153, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3153, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3154, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3154, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3155, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3155, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3156, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3156, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3157, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3157, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3158, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3158, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3162, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3159, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3163, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3163, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3164, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3164, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3180, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
|
_(3165, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3181, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3181, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(3182, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3182, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3183, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3183, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3184, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3184, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3185, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3185, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3186, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3186, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3187, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3187, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3188, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3188, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3192, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3189, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3193, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3193, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3194, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3194, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3198, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
|
_(3195, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3199, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
_(3199, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||||
_(3200, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
_(3200, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||||
_(3201, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
|
_(3201, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||||
_(3202, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
_(3202, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||||
_(3203, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
_(3203, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||||
_(3207, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
|
_(3204, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||||
_(3208, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
_(3208, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||||
_(3209, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
_(3209, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||||
_(3210, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(3210, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||||
_(3211, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3211, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(3212, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3212, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3213, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3213, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3214, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3214, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3215, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3215, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3216, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3216, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3217, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3217, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3218, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3218, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3222, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3219, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3223, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3223, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3224, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3224, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3225, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(3225, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3226, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3226, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(3227, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3227, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3228, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3228, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3229, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3229, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3230, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3230, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3231, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3231, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3232, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3232, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3233, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3233, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3237, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3234, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3238, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3238, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3239, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3239, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3255, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(3240, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3256, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3256, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(3257, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3257, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3258, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3258, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3259, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3259, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3260, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3260, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3261, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3261, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3262, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3262, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3263, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3263, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3267, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3264, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3268, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3268, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3269, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3269, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3273, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
|
_(3270, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3274, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
_(3274, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
|
||||||
_(3275, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
_(3275, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||||
_(3276, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
|
_(3276, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||||
_(3277, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
_(3277, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
|
||||||
_(3278, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
_(3278, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||||
_(3282, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
|
_(3279, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||||
_(3283, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
_(3283, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
|
||||||
_(3284, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
_(3284, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||||
_(3285, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
_(3285, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||||
_(3286, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3286, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(3287, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3287, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3288, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3288, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3289, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3289, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3290, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3290, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3291, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3291, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3292, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3292, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3293, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3293, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3297, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3294, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3298, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3298, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3299, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3299, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3300, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
_(3300, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3301, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3301, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(3302, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3302, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3303, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3303, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3304, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3304, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3305, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3305, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3306, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3306, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3307, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3307, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3308, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3308, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3312, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3309, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3313, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3313, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3314, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3314, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3330, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
_(3315, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3331, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3331, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
|
||||||
_(3332, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3332, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3333, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3333, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3334, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3334, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3335, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3335, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3336, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3336, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3337, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3337, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3338, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3338, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3342, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
_(3339, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3343, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3343, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3344, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3344, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3348, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
|
_(3345, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3349, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
_(3349, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||||
_(3350, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
_(3350, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||||
_(3351, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
|
_(3351, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||||
_(3352, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
_(3352, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||||
_(3353, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
_(3353, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||||
_(3357, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
|
_(3354, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||||
_(3358, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
_(3358, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
|
||||||
_(3359, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
_(3359, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
|
||||||
_(3360, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(3360, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
|
||||||
_(3361, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3361, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(3362, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3362, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3363, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3363, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3364, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3364, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3365, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3365, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3366, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3366, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3367, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3367, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3368, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3368, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3372, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3369, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3373, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3373, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3374, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3374, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3375, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(3375, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3376, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3376, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(3377, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3377, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3378, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3378, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3379, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3379, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3380, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3380, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3381, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3381, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3382, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3382, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3383, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3383, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3387, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3384, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3388, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3388, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3389, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3389, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3405, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
_(3390, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3406, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
_(3406, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
|
||||||
_(3407, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
_(3407, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
|
||||||
_(3408, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3408, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
|
||||||
_(3409, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3409, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3410, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3410, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3411, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3411, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3412, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3412, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3413, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3413, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3417, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
_(3414, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3418, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
_(3418, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
|
||||||
_(3419, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
_(3419, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
|
||||||
_(3420, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \
|
_(3420, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
|
||||||
_(3421, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \
|
_(3421, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \
|
||||||
_(3422, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED) \
|
_(3422, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \
|
||||||
_(3423, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED) \
|
_(3423, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED) \
|
||||||
_(3424, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \
|
_(3424, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED) \
|
||||||
_(3425, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \
|
_(3425, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \
|
||||||
_(3426, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED) \
|
_(3426, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \
|
||||||
_(3427, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED) \
|
_(3427, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED) \
|
||||||
_(3428, ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV) \
|
_(3428, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED) \
|
||||||
_(3429, ZEND_POST_INC_LONG_SPEC_CV) \
|
_(3429, ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV) \
|
||||||
_(3430, ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV) \
|
_(3430, ZEND_POST_INC_LONG_SPEC_CV) \
|
||||||
_(3431, ZEND_POST_DEC_LONG_SPEC_CV) \
|
_(3431, ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV) \
|
||||||
_(3432, ZEND_QM_ASSIGN_LONG_SPEC_CONST) \
|
_(3432, ZEND_POST_DEC_LONG_SPEC_CV) \
|
||||||
_(3433, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
|
_(3433, ZEND_QM_ASSIGN_LONG_SPEC_CONST) \
|
||||||
_(3434, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
|
_(3434, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
|
||||||
_(3436, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
|
_(3435, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
|
||||||
_(3437, ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST) \
|
_(3437, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \
|
||||||
_(3438, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
|
_(3438, ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST) \
|
||||||
_(3439, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
|
_(3439, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
|
||||||
_(3441, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
|
_(3440, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
|
||||||
_(3442, ZEND_QM_ASSIGN_NOREF_SPEC_CONST) \
|
_(3442, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
|
||||||
_(3443, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
|
_(3443, ZEND_QM_ASSIGN_NOREF_SPEC_CONST) \
|
||||||
_(3444, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
|
_(3444, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
|
||||||
_(3446, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
|
_(3445, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
|
||||||
_(3448, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
|
_(3447, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
|
||||||
_(3449, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
|
_(3449, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
|
||||||
_(3451, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
|
_(3450, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
|
||||||
_(3452, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \
|
_(3452, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
|
||||||
_(3453, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
_(3453, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \
|
||||||
_(3454, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
_(3454, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||||
_(3456, 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_CONST) \
|
_(3457, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||||
_(3458, 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) \
|
_(3459, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||||
_(3461, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
_(3460, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||||
_(3467, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST) \
|
_(3462, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
|
||||||
_(3468, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
|
_(3468, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST) \
|
||||||
_(3469, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
|
_(3469, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
|
||||||
_(3471, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
|
_(3470, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
|
||||||
_(3474, ZEND_SEND_VAR_SIMPLE_SPEC_VAR) \
|
_(3472, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
|
||||||
_(3476, ZEND_SEND_VAR_SIMPLE_SPEC_CV) \
|
_(3475, ZEND_SEND_VAR_SIMPLE_SPEC_VAR) \
|
||||||
_(3479, ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_UNUSED) \
|
_(3477, ZEND_SEND_VAR_SIMPLE_SPEC_CV) \
|
||||||
_(3481, ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_UNUSED) \
|
_(3480, ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_UNUSED) \
|
||||||
_(3482, ZEND_SEND_VAL_SIMPLE_SPEC_CONST) \
|
_(3482, ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_UNUSED) \
|
||||||
_(3483, ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST) \
|
_(3483, ZEND_SEND_VAL_SIMPLE_SPEC_CONST) \
|
||||||
_(3484, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED) \
|
_(3484, ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST) \
|
||||||
_(3485, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED) \
|
_(3485, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED) \
|
||||||
_(3485+1, ZEND_NULL)
|
_(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.h>
|
||||||
#include <zend_vm_opcodes.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_NOP",
|
||||||
"ZEND_ADD",
|
"ZEND_ADD",
|
||||||
"ZEND_SUB",
|
"ZEND_SUB",
|
||||||
|
@ -233,9 +233,10 @@ static const char *zend_vm_opcodes_names[210] = {
|
||||||
"ZEND_FRAMELESS_ICALL_3",
|
"ZEND_FRAMELESS_ICALL_3",
|
||||||
"ZEND_JMP_FRAMELESS",
|
"ZEND_JMP_FRAMELESS",
|
||||||
"ZEND_INIT_PARENT_PROPERTY_HOOK_CALL",
|
"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,
|
0x00000000,
|
||||||
0x00000b0b,
|
0x00000b0b,
|
||||||
0x00000b0b,
|
0x00000b0b,
|
||||||
|
@ -446,6 +447,7 @@ static uint32_t zend_vm_opcodes_flags[210] = {
|
||||||
0x00000000,
|
0x00000000,
|
||||||
0x01042003,
|
0x01042003,
|
||||||
0x01001103,
|
0x01001103,
|
||||||
|
0x00000303,
|
||||||
};
|
};
|
||||||
|
|
||||||
ZEND_API const char* ZEND_FASTCALL zend_get_opcode_name(uint8_t opcode) {
|
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_FRAMELESS_ICALL_3 207
|
||||||
#define ZEND_JMP_FRAMELESS 208
|
#define ZEND_JMP_FRAMELESS 208
|
||||||
#define ZEND_INIT_PARENT_PROPERTY_HOOK_CALL 209
|
#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
|
#endif
|
||||||
|
|
|
@ -15,10 +15,12 @@ PHP constants (referring to non-class constants) are stored in a dedicated struc
|
||||||
zval value;
|
zval value;
|
||||||
zend_string *name;
|
zend_string *name;
|
||||||
zend_string *filename;
|
zend_string *filename;
|
||||||
|
HashTable *attributes;
|
||||||
} zend_constant;
|
} zend_constant;
|
||||||
|
|
||||||
The ``value`` field stores both the value itself and some metadata. The ``name`` and ``filename``
|
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
|
value
|
||||||
|
@ -59,6 +61,15 @@ constants that have already been defined. This string is released when the const
|
||||||
filename
|
filename
|
||||||
**********
|
**********
|
||||||
|
|
||||||
Finally, the ``filename`` holds another ``zend_string`` with the name of the file in which the
|
The ``filename`` holds another ``zend_string`` with the name of the file in which the constant was
|
||||||
constant was defined, or ``NULL`` if not defined userland code. This field provides the foundation
|
defined, or ``NULL`` if not defined userland code. This field provides the foundation for the PHP
|
||||||
for the PHP method ``ReflectionConstant::getFileName()``.
|
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_OBJ_REF:
|
||||||
case ZEND_ASSIGN_STATIC_PROP_REF:
|
case ZEND_ASSIGN_STATIC_PROP_REF:
|
||||||
case ZEND_FRAMELESS_ICALL_3:
|
case ZEND_FRAMELESS_ICALL_3:
|
||||||
|
case ZEND_DECLARE_ATTRIBUTED_CONST:
|
||||||
return 2; /* OP_DATA */
|
return 2; /* OP_DATA */
|
||||||
case ZEND_RECV_INIT:
|
case ZEND_RECV_INIT:
|
||||||
len = 1;
|
len = 1;
|
||||||
|
|
|
@ -375,10 +375,14 @@ static zend_always_inline zend_constant* _zend_quick_get_constant(
|
||||||
|
|
||||||
if (!check_defined_only) {
|
if (!check_defined_only) {
|
||||||
if (ZEND_CONSTANT_FLAGS(c) & CONST_DEPRECATED) {
|
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)) {
|
if (EG(exception)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -251,6 +251,13 @@ static void zend_file_cache_unserialize_func(zval *zv,
|
||||||
zend_persistent_script *script,
|
zend_persistent_script *script,
|
||||||
void *buf);
|
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,
|
static void *zend_file_cache_serialize_interned(zend_string *str,
|
||||||
zend_file_cache_metainfo *info)
|
zend_file_cache_metainfo *info)
|
||||||
{
|
{
|
||||||
|
@ -431,6 +438,9 @@ static void zend_file_cache_serialize_zval(zval *zv,
|
||||||
/* Used by static properties. */
|
/* Used by static properties. */
|
||||||
SERIALIZE_PTR(Z_INDIRECT_P(zv));
|
SERIALIZE_PTR(Z_INDIRECT_P(zv));
|
||||||
break;
|
break;
|
||||||
|
case IS_PTR:
|
||||||
|
/* Used by attributes on constants, will be handled separately */
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ZEND_ASSERT(Z_TYPE_P(zv) < IS_STRING);
|
ZEND_ASSERT(Z_TYPE_P(zv) < IS_STRING);
|
||||||
break;
|
break;
|
||||||
|
@ -549,6 +559,13 @@ static void zend_file_cache_serialize_op_array(zend_op_array *op_arra
|
||||||
UNSERIALIZE_PTR(opline);
|
UNSERIALIZE_PTR(opline);
|
||||||
end = opline + op_array->last;
|
end = opline + op_array->last;
|
||||||
while (opline < end) {
|
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 ZEND_USE_ABS_CONST_ADDR
|
||||||
if (opline->op1_type == IS_CONST) {
|
if (opline->op1_type == IS_CONST) {
|
||||||
SERIALIZE_PTR(opline->op1.zv);
|
SERIALIZE_PTR(opline->op1.zv);
|
||||||
|
@ -1316,6 +1333,9 @@ static void zend_file_cache_unserialize_zval(zval *zv,
|
||||||
/* Used by static properties. */
|
/* Used by static properties. */
|
||||||
UNSERIALIZE_PTR(Z_INDIRECT_P(zv));
|
UNSERIALIZE_PTR(Z_INDIRECT_P(zv));
|
||||||
break;
|
break;
|
||||||
|
case IS_PTR:
|
||||||
|
/* Used by attributes on constants, will be handled separately */
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ZEND_ASSERT(Z_TYPE_P(zv) < IS_STRING);
|
ZEND_ASSERT(Z_TYPE_P(zv) < IS_STRING);
|
||||||
break;
|
break;
|
||||||
|
@ -1485,6 +1505,13 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#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);
|
zend_deserialize_opcode_handler(opline);
|
||||||
opline++;
|
opline++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -280,6 +280,8 @@ static void zend_persist_zval(zval *z)
|
||||||
efree(old_ref);
|
efree(old_ref);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case IS_PTR:
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ZEND_ASSERT(Z_TYPE_P(z) < IS_STRING);
|
ZEND_ASSERT(Z_TYPE_P(z) < IS_STRING);
|
||||||
break;
|
break;
|
||||||
|
@ -612,6 +614,12 @@ static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_sc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#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);
|
efree(op_array->opcodes);
|
||||||
|
|
|
@ -157,6 +157,8 @@ static void zend_persist_zval_calc(zval *z)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case IS_PTR:
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ZEND_ASSERT(Z_TYPE_P(z) < IS_STRING);
|
ZEND_ASSERT(Z_TYPE_P(z) < IS_STRING);
|
||||||
break;
|
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);
|
zend_shared_alloc_register_xlat_entry(op_array->opcodes, op_array->opcodes);
|
||||||
ADD_SIZE(sizeof(zend_op) * op_array->last);
|
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) {
|
if (op_array->filename) {
|
||||||
ADD_STRING(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)
|
ZEND_METHOD(ReflectionConstant, __toString)
|
||||||
{
|
{
|
||||||
reflection_object *intern;
|
reflection_object *intern;
|
||||||
|
|
|
@ -923,4 +923,6 @@ final class ReflectionConstant implements Reflector
|
||||||
public function getExtensionName(): string|false {}
|
public function getExtensionName(): string|false {}
|
||||||
|
|
||||||
public function __toString(): string {}
|
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.
|
/* 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_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)
|
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___toString arginfo_class_ReflectionFunction___toString
|
||||||
|
|
||||||
|
#define arginfo_class_ReflectionConstant_getAttributes arginfo_class_ReflectionFunctionAbstract_getAttributes
|
||||||
|
|
||||||
ZEND_METHOD(Reflection, getModifierNames);
|
ZEND_METHOD(Reflection, getModifierNames);
|
||||||
ZEND_METHOD(ReflectionClass, __clone);
|
ZEND_METHOD(ReflectionClass, __clone);
|
||||||
ZEND_METHOD(ReflectionFunctionAbstract, inNamespace);
|
ZEND_METHOD(ReflectionFunctionAbstract, inNamespace);
|
||||||
|
@ -987,6 +989,7 @@ ZEND_METHOD(ReflectionConstant, getFileName);
|
||||||
ZEND_METHOD(ReflectionConstant, getExtension);
|
ZEND_METHOD(ReflectionConstant, getExtension);
|
||||||
ZEND_METHOD(ReflectionConstant, getExtensionName);
|
ZEND_METHOD(ReflectionConstant, getExtensionName);
|
||||||
ZEND_METHOD(ReflectionConstant, __toString);
|
ZEND_METHOD(ReflectionConstant, __toString);
|
||||||
|
ZEND_METHOD(ReflectionConstant, getAttributes);
|
||||||
|
|
||||||
static const zend_function_entry class_Reflection_methods[] = {
|
static const zend_function_entry class_Reflection_methods[] = {
|
||||||
ZEND_ME(Reflection, getModifierNames, arginfo_class_Reflection_getModifierNames, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
|
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, getExtension, arginfo_class_ReflectionConstant_getExtension, ZEND_ACC_PUBLIC)
|
||||||
ZEND_ME(ReflectionConstant, getExtensionName, arginfo_class_ReflectionConstant_getExtensionName, 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, __toString, arginfo_class_ReflectionConstant___toString, ZEND_ACC_PUBLIC)
|
||||||
|
ZEND_ME(ReflectionConstant, getAttributes, arginfo_class_ReflectionConstant_getAttributes, ZEND_ACC_PUBLIC)
|
||||||
ZEND_FE_END
|
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);
|
zend_resource *res = zend_register_resource(NULL, le_throwing_resource);
|
||||||
ZVAL_RES(return_value, res);
|
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_is_zend_ptr(int $addr): bool {}
|
||||||
|
|
||||||
function zend_test_log_err_debug(string $str): void {}
|
function zend_test_log_err_debug(string $str): void {}
|
||||||
|
|
||||||
|
function zend_test_compile_to_ast(string $str): string {}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace ZendTestNS {
|
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.
|
/* 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_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_test_array_return, 0, 0, IS_ARRAY, 0)
|
||||||
ZEND_END_ARG_INFO()
|
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_ARG_TYPE_INFO(0, str, IS_STRING, 0)
|
||||||
ZEND_END_ARG_INFO()
|
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_func arginfo_zend_test_is_pcre_bundled
|
||||||
|
|
||||||
#define arginfo_ZendTestNS2_namespaced_deprecated_func arginfo_zend_test_void_return
|
#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_cast_fread);
|
||||||
static ZEND_FUNCTION(zend_test_is_zend_ptr);
|
static ZEND_FUNCTION(zend_test_is_zend_ptr);
|
||||||
static ZEND_FUNCTION(zend_test_log_err_debug);
|
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_func);
|
||||||
static ZEND_FUNCTION(ZendTestNS2_namespaced_deprecated_func);
|
static ZEND_FUNCTION(ZendTestNS2_namespaced_deprecated_func);
|
||||||
static ZEND_FUNCTION(ZendTestNS2_ZendSubNS_namespaced_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_cast_fread, arginfo_zend_test_cast_fread)
|
||||||
ZEND_FE(zend_test_is_zend_ptr, arginfo_zend_test_is_zend_ptr)
|
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_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)
|
#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)
|
ZEND_RAW_FENTRY(ZEND_NS_NAME("ZendTestNS2", "namespaced_func"), zif_ZendTestNS2_namespaced_func, arginfo_ZendTestNS2_namespaced_func, 0, NULL, NULL)
|
||||||
#else
|
#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) {
|
static zend_always_inline bool phpdbg_is_ignored_opcode(uint8_t opcode) {
|
||||||
return
|
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_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_CLASS_DELAYED
|
||||||
|| opcode == ZEND_DECLARE_ANON_CLASS || opcode == ZEND_FAST_RET || opcode == ZEND_TICKS
|
|| 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
|
|| 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