diff options
Diffstat (limited to 'ext/opcache/Optimizer/compact_literals.c')
-rw-r--r-- | ext/opcache/Optimizer/compact_literals.c | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/ext/opcache/Optimizer/compact_literals.c b/ext/opcache/Optimizer/compact_literals.c index 04183292d6..8c562f887a 100644 --- a/ext/opcache/Optimizer/compact_literals.c +++ b/ext/opcache/Optimizer/compact_literals.c @@ -300,28 +300,27 @@ static void optimizer_compact_literals(zend_op_array *op_array TSRMLS_DC) } map[i] = l_null; break; - case IS_BOOL: - if (Z_LVAL(op_array->literals[i])) { - if (l_true < 0) { - l_true = j; - if (i != j) { - op_array->literals[j] = op_array->literals[i]; - info[j] = info[i]; - } - j++; + case IS_FALSE: + if (l_false < 0) { + l_false = j; + if (i != j) { + op_array->literals[j] = op_array->literals[i]; + info[j] = info[i]; } - map[i] = l_true; - } else { - if (l_false < 0) { - l_false = j; - if (i != j) { - op_array->literals[j] = op_array->literals[i]; - info[j] = info[i]; - } - j++; + j++; + } + map[i] = l_false; + break; + case IS_TRUE: + if (l_true < 0) { + l_true = j; + if (i != j) { + op_array->literals[j] = op_array->literals[i]; + info[j] = info[i]; } - map[i] = l_false; + j++; } + map[i] = l_true; break; case IS_LONG: if ((pos = (int)zend_hash_index_find_ptr(&hash, Z_LVAL(op_array->literals[i]))) != 0) { |