]> granicus.if.org Git - php/commitdiff
Drop unused INIT_STRING opcode
authorNikita Popov <nikic@php.net>
Mon, 29 Sep 2014 20:59:57 +0000 (22:59 +0200)
committerNikita Popov <nikic@php.net>
Mon, 29 Sep 2014 20:59:57 +0000 (22:59 +0200)
INIT_STRING has been implemented as an UNUSED op1 to ADD_* for
some time now.

Zend/zend_vm_def.h
Zend/zend_vm_execute.h
Zend/zend_vm_opcodes.c
Zend/zend_vm_opcodes.h
ext/opcache/Optimizer/block_pass.c

index 0a9a3306968ab16e849fd84463896cf3d9b8faf8..02c93477e3be4b6a477adf97768c49ab4cbf5ff8 100644 (file)
@@ -1985,17 +1985,6 @@ ZEND_VM_HANDLER(70, ZEND_FREE, TMP|VAR, ANY)
        ZEND_VM_NEXT_OPCODE();
 }
 
-ZEND_VM_HANDLER(53, ZEND_INIT_STRING, ANY, ANY)
-{
-       USE_OPLINE
-       zval *tmp = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       ZVAL_EMPTY_STRING(tmp);
-       /*CHECK_EXCEPTION();*/
-       ZEND_VM_NEXT_OPCODE();
-}
-
 ZEND_VM_HANDLER(54, ZEND_ADD_CHAR, TMP|UNUSED, CONST)
 {
        USE_OPLINE
index 77f43ffdf9ca1d550ed46458c280bbee54c172c6..17858c28758f933e73c0648b5bb7090a75ba6f39 100644 (file)
@@ -488,17 +488,6 @@ static int ZEND_FASTCALL  ZEND_JMP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        ZEND_VM_CONTINUE();
 }
 
-static int ZEND_FASTCALL  ZEND_INIT_STRING_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zval *tmp = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       ZVAL_EMPTY_STRING(tmp);
-       /*CHECK_EXCEPTION();*/
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_DO_FCALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -44619,31 +44608,31 @@ void zend_init_opcodes_handlers(void)
        ZEND_BOOL_SPEC_CV_HANDLER,
        ZEND_BOOL_SPEC_CV_HANDLER,
        ZEND_BOOL_SPEC_CV_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
-       ZEND_INIT_STRING_SPEC_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
index 45dfe598452e7308bc0fdb180900ed49973aa0a4..d31eb141414b6e55ef849fb2e5d94b2f3fe619e2 100644 (file)
@@ -75,7 +75,7 @@ const char *zend_vm_opcodes_map[170] = {
        "ZEND_BRK",
        "ZEND_CONT",
        "ZEND_BOOL",
-       "ZEND_INIT_STRING",
+       NULL,
        "ZEND_ADD_CHAR",
        "ZEND_ADD_STRING",
        "ZEND_ADD_VAR",
index 32a856a63ccec00cd08335bcf734c58a83f3d20e..43aea9ee9507c745b537e6583e61d38545d97253 100644 (file)
@@ -75,7 +75,6 @@ ZEND_API const char *zend_get_opcode_name(zend_uchar opcode);
 #define ZEND_BRK                              50
 #define ZEND_CONT                             51
 #define ZEND_BOOL                             52
-#define ZEND_INIT_STRING                      53
 #define ZEND_ADD_CHAR                         54
 #define ZEND_ADD_STRING                       55
 #define ZEND_ADD_VAR                          56
index 73a65485a53ed2f2360c593df14b8ab7fa5d7beb..869bd3ccba74d30dff7f5e0133c0240f227bcdcc 100644 (file)
@@ -1054,25 +1054,6 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array,
                        VAR_UNSET(opline->op1);
                        COPY_NODE(opline->op1, src->op1);
                        MAKE_NOP(src);
-               } else if ((opline->opcode == ZEND_ADD_STRING ||
-                                       opline->opcode == ZEND_ADD_CHAR) &&
-                                       ZEND_OP1_TYPE(opline) == IS_TMP_VAR &&
-                                       VAR_SOURCE(opline->op1) &&
-                                       VAR_SOURCE(opline->op1)->opcode == ZEND_INIT_STRING) {
-                       /* convert T = INIT_STRING(), T = ADD_STRING(T, X) to T = QM_ASSIGN(X) */
-                       /* CHECKME: Remove ZEND_ADD_VAR optimization, since some conversions -
-                          namely, BOOL(false)->string - don't allocate memory but use empty_string
-                          and ADD_CHAR fails */
-                       zend_op *src = VAR_SOURCE(opline->op1);
-                       VAR_UNSET(opline->op1);
-                       COPY_NODE(opline->op1, opline->op2);
-                       if (opline->opcode == ZEND_ADD_CHAR) {
-                               char c = (char)Z_LVAL(ZEND_OP2_LITERAL(opline));
-                               ZVAL_STRINGL(&ZEND_OP1_LITERAL(opline), &c, 1);
-                       }
-                       SET_UNUSED(opline->op2);
-                       MAKE_NOP(src);
-                       opline->opcode = ZEND_QM_ASSIGN;
                } else if ((opline->opcode == ZEND_ADD_STRING ||
                                        opline->opcode == ZEND_ADD_CHAR ||
                                        opline->opcode == ZEND_ADD_VAR ||
@@ -1094,23 +1075,6 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array,
                        opline->opcode = ZEND_CONCAT;
                        literal_dtor(&ZEND_OP2_LITERAL(src)); /* will take care of empty_string too */
                        MAKE_NOP(src);
-//??? This optimization can't work anymore because ADD_VAR returns IS_TMP_VAR
-//??? and ZEND_CAST returns IS_VAR.
-//??? BTW: it wan't used for long time, because we don't use INIT_STRING
-#if 0
-               } else if (opline->opcode == ZEND_ADD_VAR &&
-                                       ZEND_OP1_TYPE(opline) == IS_TMP_VAR &&
-                                       VAR_SOURCE(opline->op1) &&
-                                       VAR_SOURCE(opline->op1)->opcode == ZEND_INIT_STRING) {
-                       /* convert T = INIT_STRING(), T = ADD_VAR(T, X) to T = CAST(STRING, X) */
-                       zend_op *src = VAR_SOURCE(opline->op1);
-                       VAR_UNSET(opline->op1);
-                       COPY_NODE(opline->op1, opline->op2);
-                       SET_UNUSED(opline->op2);
-                       MAKE_NOP(src);
-                       opline->opcode = ZEND_CAST;
-                       opline->extended_value = IS_STRING;
-#endif
                } else if ((opline->opcode == ZEND_ADD_STRING ||
                                        opline->opcode == ZEND_ADD_CHAR ||
                                        opline->opcode == ZEND_ADD_VAR ||