Skip to content

Commit be2efb9

Browse files
committed
Merge branch 'master' into jit-dynasm
* master: Revert "Fixed incorrect optimizaton (update of jump instructions should be also reflected in CFG update)" improve warn (bzip2 requires libzip >= 1.3.0) libzip 1.3.0 supports also bz2 compression
2 parents a60bc06 + 1d609a9 commit be2efb9

File tree

4 files changed

+38
-56
lines changed

4 files changed

+38
-56
lines changed

ext/opcache/Optimizer/block_pass.c

Lines changed: 2 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,7 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array
174174
while (opline < end) {
175175
/* Constant Propagation: strip X = QM_ASSIGN(const) */
176176
if ((opline->op1_type & (IS_TMP_VAR|IS_VAR)) &&
177-
opline->opcode != ZEND_FREE &&
178-
!zend_bitset_in(used_ext, VAR_NUM(opline->op1.var))) {
177+
opline->opcode != ZEND_FREE) {
179178
src = VAR_SOURCE(opline->op1);
180179
if (src &&
181180
src->opcode == ZEND_QM_ASSIGN &&
@@ -197,65 +196,14 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array
197196
literal_dtor(&ZEND_OP1_LITERAL(src));
198197
MAKE_NOP(src);
199198
} else {
200-
zend_op *target_opline;
201-
202-
switch (opline->opcode) {
203-
case ZEND_JMPZ:
204-
if (zend_is_true(&c)) {
205-
MAKE_NOP(opline);
206-
DEL_SOURCE(block, block->successors[0]);
207-
block->successors_count = 1;
208-
block->successors[0] = block->successors[1];
209-
} else {
210-
opline->opcode = ZEND_JMP;
211-
COPY_NODE(opline->op1, opline->op2);
212-
opline->op2_type = IS_UNUSED;
213-
DEL_SOURCE(block, block->successors[1]);
214-
block->successors_count = 1;
215-
}
216-
break;
217-
case ZEND_JMPNZ:
218-
if (zend_is_true(&c)) {
219-
opline->opcode = ZEND_JMP;
220-
COPY_NODE(opline->op1, opline->op2);
221-
opline->op2_type = IS_UNUSED;
222-
DEL_SOURCE(block, block->successors[1]);
223-
block->successors_count = 1;
224-
} else {
225-
MAKE_NOP(opline);
226-
DEL_SOURCE(block, block->successors[0]);
227-
block->successors_count = 1;
228-
block->successors[0] = block->successors[1];
229-
}
230-
break;
231-
case ZEND_JMPZNZ:
232-
if (zend_is_true(&c)) {
233-
target_opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value);
234-
DEL_SOURCE(block, block->successors[0]);
235-
block->successors_count = 1;
236-
block->successors[0] = block->successors[1];
237-
} else {
238-
target_opline = ZEND_OP2_JMP_ADDR(opline);
239-
DEL_SOURCE(block, block->successors[1]);
240-
block->successors_count = 1;
241-
}
242-
ZEND_SET_OP_JMP_ADDR(opline, opline->op1, target_opline);
243-
opline->op1_type = IS_UNUSED;
244-
opline->extended_value = 0;
245-
opline->opcode = ZEND_JMP;
246-
break;
247-
default:
248-
break;
249-
}
250199
zval_ptr_dtor_nogc(&c);
251200
}
252201
}
253202
}
254203
}
255204

256205
/* Constant Propagation: strip X = QM_ASSIGN(const) */
257-
if ((opline->op2_type & (IS_TMP_VAR|IS_VAR)) &&
258-
!zend_bitset_in(used_ext, VAR_NUM(opline->op2.var))) {
206+
if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
259207
src = VAR_SOURCE(opline->op2);
260208
if (src &&
261209
src->opcode == ZEND_QM_ASSIGN &&

ext/opcache/Optimizer/zend_optimizer.c

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,41 @@ int zend_optimizer_update_op1_const(zend_op_array *op_array,
258258
zend_op *opline,
259259
zval *val)
260260
{
261+
zend_op *target_opline;
262+
261263
switch (opline->opcode) {
264+
case ZEND_JMPZ:
265+
if (zend_is_true(val)) {
266+
MAKE_NOP(opline);
267+
} else {
268+
opline->opcode = ZEND_JMP;
269+
COPY_NODE(opline->op1, opline->op2);
270+
opline->op2_type = IS_UNUSED;
271+
}
272+
zval_ptr_dtor_nogc(val);
273+
return 1;
274+
case ZEND_JMPNZ:
275+
if (zend_is_true(val)) {
276+
opline->opcode = ZEND_JMP;
277+
COPY_NODE(opline->op1, opline->op2);
278+
opline->op2_type = IS_UNUSED;
279+
} else {
280+
MAKE_NOP(opline);
281+
}
282+
zval_ptr_dtor_nogc(val);
283+
return 1;
284+
case ZEND_JMPZNZ:
285+
if (zend_is_true(val)) {
286+
target_opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value);
287+
} else {
288+
target_opline = ZEND_OP2_JMP_ADDR(opline);
289+
}
290+
ZEND_SET_OP_JMP_ADDR(opline, opline->op1, target_opline);
291+
opline->op1_type = IS_UNUSED;
292+
opline->extended_value = 0;
293+
opline->opcode = ZEND_JMP;
294+
zval_ptr_dtor_nogc(val);
295+
return 1;
262296
case ZEND_FREE:
263297
MAKE_NOP(opline);
264298
zval_ptr_dtor_nogc(val);

ext/zip/config.m4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ if test "$PHP_ZIP" != "no"; then
115115
else
116116
AC_MSG_WARN(========================================================)
117117
AC_MSG_WARN(Use of bundled libzip is deprecated and will be removed.)
118-
AC_MSG_WARN(Some features such as encryption are not available.)
118+
AC_MSG_WARN(Some features such as encryption and bzip2 are not available.)
119119
AC_MSG_WARN(Use system library and --with-libzip is recommended.)
120120
AC_MSG_WARN(========================================================)
121121

ext/zip/config.w32

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ARG_ENABLE("zip", "ZIP support", "yes");
66
if (PHP_ZIP != "no") {
77
if (CHECK_HEADER_ADD_INCLUDE("zip.h", "CFLAGS_ZIP", PHP_PHP_BUILD + "\\include;" + PHP_EXTRA_INCLUDES) &&
88
CHECK_HEADER_ADD_INCLUDE("zipconf.h", "CFLAGS_ZIP", PHP_PHP_BUILD + "\\lib\\libzip\\include;" + PHP_EXTRA_LIBS + "\\libzip\\include;" + PHP_ZIP) &&
9-
(PHP_ZIP_SHARED && CHECK_LIB("libzip.lib", "zip", PHP_ZIP) || CHECK_LIB("libzip_a.lib", "zip", PHP_ZIP))
9+
(PHP_ZIP_SHARED && CHECK_LIB("libzip.lib", "zip", PHP_ZIP) || CHECK_LIB("libzip_a.lib", "zip", PHP_ZIP) && CHECK_LIB("libbz2_a.lib", "zip", PHP_ZIP))
1010
) {
1111
EXTENSION('zip', 'php_zip.c zip_stream.c');
1212

0 commit comments

Comments
 (0)