|
25 | 25 | * - constant expression evaluation
|
26 | 26 | * - optimize constant conditional JMPs
|
27 | 27 | * - pre-evaluate constant function calls
|
28 |
| - * - eliminate FETCH $GLOBALS followed by FETCH_DIM/UNSET_DIM/ISSET_ISEMPTY_DIM |
29 | 28 | */
|
30 | 29 |
|
31 | 30 | #include "php.h"
|
@@ -531,52 +530,6 @@ void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx)
|
531 | 530 | zend_optimizer_collect_constant(ctx, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LITERAL(opline));
|
532 | 531 | }
|
533 | 532 | break;
|
534 |
| -#if 0 |
535 |
| - /* see ext/opcache/tests/bug78961.phpt */ |
536 |
| -// case ZEND_FETCH_R: |
537 |
| - case ZEND_FETCH_W: |
538 |
| -// case ZEND_FETCH_RW: |
539 |
| - case ZEND_FETCH_IS: |
540 |
| -// case ZEND_FETCH_FUNC_ARG: |
541 |
| - case ZEND_FETCH_UNSET: |
542 |
| - /* convert FETCH $GLOBALS (global), FETCH_DIM $x into FETCH $x (global) */ |
543 |
| - if ((opline->extended_value & ZEND_FETCH_GLOBAL) != 0 && |
544 |
| - opline->op1_type == IS_CONST && |
545 |
| - Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING && |
546 |
| - zend_string_equals_literal(Z_STR(ZEND_OP1_LITERAL(opline)), "GLOBALS") && |
547 |
| - ((opline + 1)->opcode == opline->opcode + 1 || |
548 |
| - ((opline + 1)->opcode == ZEND_UNSET_DIM && |
549 |
| - opline->opcode == ZEND_FETCH_UNSET) || |
550 |
| - ((opline + 1)->opcode == ZEND_ISSET_ISEMPTY_DIM_OBJ && |
551 |
| - opline->opcode == ZEND_FETCH_IS)) && |
552 |
| - (opline + 1)->op1_type == opline->result_type && |
553 |
| - (opline + 1)->op1.var == opline->result.var && |
554 |
| - ((opline + 1)->op2_type != IS_CONST || |
555 |
| - Z_TYPE(ZEND_OP2_LITERAL(opline + 1)) < IS_ARRAY)) { |
556 |
| - |
557 |
| - if ((opline + 1)->opcode == ZEND_UNSET_DIM) { |
558 |
| - (opline + 1)->opcode = ZEND_UNSET_VAR; |
559 |
| - (opline + 1)->extended_value = ZEND_FETCH_GLOBAL; |
560 |
| - } else if ((opline + 1)->opcode == ZEND_ISSET_ISEMPTY_DIM_OBJ) { |
561 |
| - (opline + 1)->opcode = ZEND_ISSET_ISEMPTY_VAR; |
562 |
| - (opline + 1)->extended_value |= ZEND_FETCH_GLOBAL; |
563 |
| - } else { |
564 |
| - (opline + 1)->opcode = opline->opcode; |
565 |
| - (opline + 1)->extended_value = ZEND_FETCH_GLOBAL; |
566 |
| - } |
567 |
| - (opline + 1)->op1_type = (opline + 1)->op2_type; |
568 |
| - (opline + 1)->op1 = (opline + 1)->op2; |
569 |
| - if ((opline + 1)->op1_type == IS_CONST && |
570 |
| - Z_TYPE(ZEND_OP1_LITERAL(opline + 1)) != IS_STRING) { |
571 |
| - |
572 |
| - convert_to_string(&ZEND_OP1_LITERAL(opline + 1)); |
573 |
| - zend_string_hash_val(Z_STR(ZEND_OP1_LITERAL(opline + 1))); |
574 |
| - } |
575 |
| - SET_UNUSED((opline + 1)->op2); |
576 |
| - MAKE_NOP(opline); |
577 |
| - } |
578 |
| - break; |
579 |
| -#endif |
580 | 533 |
|
581 | 534 | case ZEND_JMPZ_EX:
|
582 | 535 | case ZEND_JMPNZ_EX:
|
|
0 commit comments