summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-01-31 18:15:25 +0300
committerDmitry Stogov <dmitry@zend.com>2018-01-31 18:15:25 +0300
commit9c7fb529ce724afcdfcd10705cdb0515b33bf84b (patch)
tree91112660b26d2d70912f35b6b8139e13b1a77232 /ext
parentf67f455ef70c2cffcf8c14c0172ba57126221eff (diff)
downloadphp-git-9c7fb529ce724afcdfcd10705cdb0515b33bf84b.tar.gz
Changed FETCH_CONSTANT instruction format (extended_value moved into op1)
Diffstat (limited to 'ext')
-rw-r--r--ext/opcache/Optimizer/compact_literals.c2
-rw-r--r--ext/opcache/Optimizer/zend_dump.c14
-rw-r--r--ext/opcache/Optimizer/zend_optimizer.c1
3 files changed, 8 insertions, 9 deletions
diff --git a/ext/opcache/Optimizer/compact_literals.c b/ext/opcache/Optimizer/compact_literals.c
index 7dfc2fadbf..63102beaac 100644
--- a/ext/opcache/Optimizer/compact_literals.c
+++ b/ext/opcache/Optimizer/compact_literals.c
@@ -181,7 +181,7 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx
LITERAL_INFO(opline->op1.constant, LITERAL_CONST, 1, 1, 2);
break;
case ZEND_FETCH_CONSTANT:
- if ((opline->extended_value & (IS_CONSTANT_IN_NAMESPACE|IS_CONSTANT_UNQUALIFIED)) == (IS_CONSTANT_IN_NAMESPACE|IS_CONSTANT_UNQUALIFIED)) {
+ if ((opline->op1.num & (IS_CONSTANT_IN_NAMESPACE|IS_CONSTANT_UNQUALIFIED)) == (IS_CONSTANT_IN_NAMESPACE|IS_CONSTANT_UNQUALIFIED)) {
LITERAL_INFO(opline->op2.constant, LITERAL_CONST, 1, 1, 5);
} else {
LITERAL_INFO(opline->op2.constant, LITERAL_CONST, 1, 1, 3);
diff --git a/ext/opcache/Optimizer/zend_dump.c b/ext/opcache/Optimizer/zend_dump.c
index 07e5dfe9f7..8f874d8bdb 100644
--- a/ext/opcache/Optimizer/zend_dump.c
+++ b/ext/opcache/Optimizer/zend_dump.c
@@ -130,6 +130,13 @@ static void zend_dump_unused_op(const zend_op *opline, znode_op op, uint32_t fla
zend_dump_class_fetch_type(op.num);
} else if (ZEND_VM_OP_CONSTRUCTOR == (flags & ZEND_VM_OP_MASK)) {
fprintf(stderr, " CONSTRUCTOR");
+ } else if (ZEND_VM_OP_CONST_FETCH == (flags & ZEND_VM_EXT_MASK)) {
+ if (op.num & IS_CONSTANT_UNQUALIFIED) {
+ fprintf(stderr, " (unqualified)");
+ }
+ if (op.num & IS_CONSTANT_IN_NAMESPACE) {
+ fprintf(stderr, " (in-namespace)");
+ }
}
}
@@ -449,13 +456,6 @@ static void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *
} else if (opline->extended_value == ZEND_ASSIGN_OBJ) {
fprintf(stderr, " (obj)");
}
- } else if (ZEND_VM_EXT_CONST_FETCH == (flags & ZEND_VM_EXT_MASK)) {
- if (opline->extended_value & IS_CONSTANT_UNQUALIFIED) {
- fprintf(stderr, " (unqualified)");
- }
- if (opline->extended_value & IS_CONSTANT_IN_NAMESPACE) {
- fprintf(stderr, " (in-namespace)");
- }
} else if (ZEND_VM_EXT_TYPE == (flags & ZEND_VM_EXT_MASK)) {
switch (opline->extended_value) {
case IS_NULL:
diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c
index 70f45882be..1bf05a50a9 100644
--- a/ext/opcache/Optimizer/zend_optimizer.c
+++ b/ext/opcache/Optimizer/zend_optimizer.c
@@ -276,7 +276,6 @@ int zend_optimizer_update_op1_const(zend_op_array *op_array,
return 0;
case ZEND_INIT_STATIC_METHOD_CALL:
case ZEND_CATCH:
- case ZEND_FETCH_CONSTANT:
case ZEND_FETCH_CLASS_CONSTANT:
case ZEND_DEFINED:
case ZEND_NEW: