com php-src: Fix compact_literals of INIT_METHOD_CALL with CONST op1: ext/opcache/Optimizer/compact_li terals.c ext/opcache/tests/method_call_on_literal.p hpt

[email protected] (Nikita Popov)
Newsgroups php.cvs
Message-ID <[email protected]>
Commit:    0beccc51f1bf44fb3efeb1131f8c86eb7dc5014f
Author:    Nikita Popov <[email protected]>         Sat, 15 Apr 2017 12:35:09 +0200
Parents:   35a28fac51e4b210f8f3f51b754786908a977462
Branches:  PHP-7.0 PHP-7.1 master

Link:       http://git.php.net/?p=php-src.git;a=commitdiff;h=0beccc51f1bf44fb3efeb1131f8c86eb7dc5014f

Log:
Fix compact_literals of INIT_METHOD_CALL with CONST op1

Changed paths:
  M  ext/opcache/Optimizer/compact_literals.c
  A  ext/opcache/tests/method_call_on_literal.phpt


Diff:
diff --git a/ext/opcache/Optimizer/compact_literals.c b/ext/opcache/Optimizer/compact_literals.c
index 0637d77..f417bef 100644
--- a/ext/opcache/Optimizer/compact_literals.c
+++ b/ext/opcache/Optimizer/compact_literals.c
@@ -146,6 +146,9 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx
 					LITERAL_INFO(opline->op2.constant, LITERAL_FUNC, 1, 1, 3);
 					break;
 				case ZEND_INIT_METHOD_CALL:
+					if (ZEND_OP1_TYPE(opline) == IS_CONST) {
+						LITERAL_INFO(opline->op1.constant, LITERAL_VALUE, 1, 0, 1);
+					}
 					if (ZEND_OP2_TYPE(opline) == IS_CONST) {
 						optimizer_literal_obj_info(
 							info,
diff --git a/ext/opcache/tests/method_call_on_literal.phpt b/ext/opcache/tests/method_call_on_literal.phpt
new file mode 100644
index 0000000..bf89caa
--- /dev/null
+++ b/ext/opcache/tests/method_call_on_literal.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Literal compaction should take method calls on literals into account
+--FILE--
+<?php
+
+try {
+    (42)->foo();
+} catch (Error $e) {
+    echo $e->getMessage(), "\n";
+}
+
+?>
+--EXPECT--
+Call to a member function foo() on integer
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.