summaryrefslogtreecommitdiff
path: root/ext/opcache
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2015-12-18 17:37:40 +0800
committerXinchen Hui <laruence@gmail.com>2015-12-18 17:37:40 +0800
commit40702799b5f08b093477098881b6e0cfcb3ea411 (patch)
tree99c81f81ff526991e56cca6eeb025144d8229c7a /ext/opcache
parent940c68b55d4241f9f34d4f71064f5f12a44e8d3d (diff)
downloadphp-git-40702799b5f08b093477098881b6e0cfcb3ea411.tar.gz
Improved fix for #71127
Diffstat (limited to 'ext/opcache')
-rw-r--r--ext/opcache/Optimizer/pass1_5.c5
-rw-r--r--ext/opcache/Optimizer/zend_optimizer.h3
-rw-r--r--ext/opcache/tests/bug71127.phpt1
3 files changed, 5 insertions, 4 deletions
diff --git a/ext/opcache/Optimizer/pass1_5.c b/ext/opcache/Optimizer/pass1_5.c
index f252117de7..4229f13ebe 100644
--- a/ext/opcache/Optimizer/pass1_5.c
+++ b/ext/opcache/Optimizer/pass1_5.c
@@ -16,9 +16,8 @@ if (ZEND_OPTIMIZER_PASS_1 & OPTIMIZATION_LEVEL) {
int i = 0;
zend_op *opline = op_array->opcodes;
zend_op *end = opline + op_array->last;
- /* bug #71127*
- zend_bool collect_constants = (op_array == &script->main_op_array); */
- zend_bool collect_constants = 0;
+ zend_bool collect_constants = (ZEND_OPTIMIZER_PASS_15 & OPTIMIZATION_LEVEL)?
+ (op_array == &script->main_op_array) : 0;
while (opline < end) {
switch (opline->opcode) {
diff --git a/ext/opcache/Optimizer/zend_optimizer.h b/ext/opcache/Optimizer/zend_optimizer.h
index fc6ec4357d..f4e441790f 100644
--- a/ext/opcache/Optimizer/zend_optimizer.h
+++ b/ext/opcache/Optimizer/zend_optimizer.h
@@ -39,9 +39,10 @@
#define ZEND_OPTIMIZER_PASS_12 (1<<11)
#define ZEND_OPTIMIZER_PASS_13 (1<<12)
#define ZEND_OPTIMIZER_PASS_14 (1<<13)
+#define ZEND_OPTIMIZER_PASS_15 (1<<14) /* Collect constants */
#define ZEND_OPTIMIZER_ALL_PASSES 0xFFFFFFFF
-#define DEFAULT_OPTIMIZATION_LEVEL "0xFFFFFFFF"
+#define DEFAULT_OPTIMIZATION_LEVEL "0xFFFFBFFF"
#endif
diff --git a/ext/opcache/tests/bug71127.phpt b/ext/opcache/tests/bug71127.phpt
index 78c5535062..5770aea1fb 100644
--- a/ext/opcache/tests/bug71127.phpt
+++ b/ext/opcache/tests/bug71127.phpt
@@ -3,6 +3,7 @@ Bug #71127 (Define in auto_prepend_file is overwrite)
--INI--
opcache.enable=1
opcache.enable_cli=1
+opcache.optimization_level=0xFFFFBFFF
--SKIPIF--
<?php if (!extension_loaded('Zend OPcache')) die("skip"); ?>
--FILE--