]> granicus.if.org Git - php/commitdiff
Convert CONCAT into FAST_CONCAT for non-object operands
authorDmitry Stogov <dmitry@zend.com>
Wed, 19 Jul 2017 12:41:46 +0000 (15:41 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 19 Jul 2017 12:41:46 +0000 (15:41 +0300)
ext/opcache/Optimizer/dfa_pass.c

index 532597713d50ac2eaab528c0d4b71b9c9cd591dd..9dbd4d1fb36d1b268459daee26f760dc642d3e85 100644 (file)
@@ -649,6 +649,11 @@ void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx
                                                ZVAL_DOUBLE(&tmp, zval_get_double(zv));
                                                opline->op2.constant = zend_optimizer_add_literal(op_array, &tmp);
                                        }
+                               } else if (opline->opcode == ZEND_CONCAT) {
+                                       if (!(OP1_INFO() & MAY_BE_OBJECT)
+                                        && !(OP2_INFO() & MAY_BE_OBJECT)) {
+                                               opline->opcode = ZEND_FAST_CONCAT;
+                                       }
                                }
                        }