]> granicus.if.org Git - php/commitdiff
Drop ZEND_PRINT opcode in favor of ZEND_ECHO
authorNikita Popov <nikic@php.net>
Sat, 6 Dec 2014 11:57:20 +0000 (12:57 +0100)
committerNikita Popov <nikic@php.net>
Thu, 18 Dec 2014 13:39:40 +0000 (14:39 +0100)
The return value long(1) is an IS_CONST operand now.

Zend/zend_compile.c
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 c196e398875cfd666ac0f292cddc70e397c6f6e7..c159fcc6e198eb35e8684a6ec9853aba78678323 100644 (file)
@@ -5361,7 +5361,10 @@ void zend_compile_print(znode *result, zend_ast *ast) /* {{{ */
        znode expr_node;
        zend_compile_expr(&expr_node, expr_ast);
 
-       zend_emit_op_tmp(result, ZEND_PRINT, &expr_node, NULL);
+       zend_emit_op(NULL, ZEND_ECHO, &expr_node, NULL);
+
+       result->op_type = IS_CONST;
+       ZVAL_LONG(&result->u.constant, 1);
 }
 /* }}} */
 
index d9f6f3ef6976210fe8d7d6afa5fd5af739daa685..c1115fd7d6819716d8713564fdae03854afddc48 100644 (file)
@@ -1085,14 +1085,6 @@ ZEND_VM_HANDLER(40, ZEND_ECHO, CONST|TMPVAR|CV, ANY)
        ZEND_VM_NEXT_OPCODE();
 }
 
-ZEND_VM_HANDLER(41, ZEND_PRINT, CONST|TMPVAR|CV, ANY)
-{
-       USE_OPLINE
-
-       ZVAL_LONG(EX_VAR(opline->result.var), 1);
-       ZEND_VM_DISPATCH_TO_HANDLER(ZEND_ECHO);
-}
-
 ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMPVAR|CV, UNUSED|CONST|VAR, int type)
 {
        USE_OPLINE
index 1c2700e3b53106763d9f9af1022dffe284d98758..100d2d48ec8862ea3b289ea1f3f6fb3e7b601abe 100644 (file)
@@ -2319,14 +2319,6 @@ static int ZEND_FASTCALL  ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_PRINT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-
-       ZVAL_LONG(EX_VAR(opline->result.var), 1);
-       return ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
-}
-
 static int ZEND_FASTCALL  ZEND_JMPZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -23013,14 +23005,6 @@ static int ZEND_FASTCALL  ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_PRINT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-
-       ZVAL_LONG(EX_VAR(opline->result.var), 1);
-       return ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
-}
-
 static int ZEND_FASTCALL  ZEND_JMPZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -32379,14 +32363,6 @@ static int ZEND_FASTCALL  ZEND_ECHO_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_PRINT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-
-       ZVAL_LONG(EX_VAR(opline->result.var), 1);
-       return ZEND_ECHO_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
-}
-
 static int ZEND_FASTCALL  ZEND_JMPZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -36825,31 +36801,31 @@ void zend_init_opcodes_handlers(void)
        ZEND_ECHO_SPEC_CV_HANDLER,
        ZEND_ECHO_SPEC_CV_HANDLER,
        ZEND_ECHO_SPEC_CV_HANDLER,
-       ZEND_PRINT_SPEC_CONST_HANDLER,
-       ZEND_PRINT_SPEC_CONST_HANDLER,
-       ZEND_PRINT_SPEC_CONST_HANDLER,
-       ZEND_PRINT_SPEC_CONST_HANDLER,
-       ZEND_PRINT_SPEC_CONST_HANDLER,
-       ZEND_PRINT_SPEC_TMPVAR_HANDLER,
-       ZEND_PRINT_SPEC_TMPVAR_HANDLER,
-       ZEND_PRINT_SPEC_TMPVAR_HANDLER,
-       ZEND_PRINT_SPEC_TMPVAR_HANDLER,
-       ZEND_PRINT_SPEC_TMPVAR_HANDLER,
-       ZEND_PRINT_SPEC_TMPVAR_HANDLER,
-       ZEND_PRINT_SPEC_TMPVAR_HANDLER,
-       ZEND_PRINT_SPEC_TMPVAR_HANDLER,
-       ZEND_PRINT_SPEC_TMPVAR_HANDLER,
-       ZEND_PRINT_SPEC_TMPVAR_HANDLER,
-       ZEND_NULL_HANDLER,
-       ZEND_NULL_HANDLER,
-       ZEND_NULL_HANDLER,
-       ZEND_NULL_HANDLER,
-       ZEND_NULL_HANDLER,
-       ZEND_PRINT_SPEC_CV_HANDLER,
-       ZEND_PRINT_SPEC_CV_HANDLER,
-       ZEND_PRINT_SPEC_CV_HANDLER,
-       ZEND_PRINT_SPEC_CV_HANDLER,
-       ZEND_PRINT_SPEC_CV_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_JMP_SPEC_HANDLER,
        ZEND_JMP_SPEC_HANDLER,
        ZEND_JMP_SPEC_HANDLER,
index 067fd362e686a63430e62db42dc3c1bc9bc1dabe..aaaf8df6b3686ce2ae2708759ffca36fd5785444 100644 (file)
@@ -63,7 +63,7 @@ const char *zend_vm_opcodes_map[170] = {
        "ZEND_ASSIGN",
        "ZEND_ASSIGN_REF",
        "ZEND_ECHO",
-       "ZEND_PRINT",
+       NULL,
        "ZEND_JMP",
        "ZEND_JMPZ",
        "ZEND_JMPNZ",
index 9d969877e0b8c5dd21804e35cc2235dcd049d139..e31a26a3be9ffcfb0770f7e153ea1c184cb7b372 100644 (file)
@@ -68,7 +68,6 @@ END_EXTERN_C()
 #define ZEND_ASSIGN                           38
 #define ZEND_ASSIGN_REF                       39
 #define ZEND_ECHO                             40
-#define ZEND_PRINT                            41
 #define ZEND_JMP                              42
 #define ZEND_JMPZ                             43
 #define ZEND_JMPNZ                            44
index 49ca397316308b91be40858aa9c36d2a1d0da24e..9cb95a3e474c5f3f873d7840a1de7524116418fc 100644 (file)
@@ -645,24 +645,8 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array,
                        MAKE_NOP(src);
                }
 
-               /* T = PRINT(X), F(T) => ECHO(X), F(1) */
-               if (ZEND_OP1_TYPE(opline) == IS_TMP_VAR &&
-                       VAR_SOURCE(opline->op1) &&
-                       VAR_SOURCE(opline->op1)->opcode == ZEND_PRINT &&
-                       opline->opcode != ZEND_CASE && opline->opcode != ZEND_FREE) {
-                       ZEND_OP1_TYPE(opline) = IS_CONST;
-                       LITERAL_LONG(opline->op1, 1);
-               }
-
-               if (ZEND_OP2_TYPE(opline) == IS_TMP_VAR &&
-                       VAR_SOURCE(opline->op2) &&
-                       VAR_SOURCE(opline->op2)->opcode == ZEND_PRINT) {
-                       ZEND_OP2_TYPE(opline) = IS_CONST;
-                       LITERAL_LONG(opline->op2, 1);
-               }
-
                /* T = CAST(X, String), ECHO(T) => NOP, ECHO(X) */
-               if ((opline->opcode == ZEND_ECHO || opline->opcode == ZEND_PRINT) &&
+               if (opline->opcode == ZEND_ECHO &&
                        ZEND_OP1_TYPE(opline) & (IS_TMP_VAR|IS_VAR) &&
                        VAR_SOURCE(opline->op1) &&
                        VAR_SOURCE(opline->op1)->opcode == ZEND_CAST &&
@@ -672,18 +656,6 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array,
                        MAKE_NOP(src);
                }
 
-               /* T = PRINT(X), FREE(T) => ECHO(X) */
-               if (opline->opcode == ZEND_FREE &&
-                       ZEND_OP1_TYPE(opline) == IS_TMP_VAR &&
-                       VAR_SOURCE(opline->op1)) {
-                       zend_op *src = VAR_SOURCE(opline->op1);
-                       if (src->opcode == ZEND_PRINT) {
-                               src->opcode = ZEND_ECHO;
-                               ZEND_RESULT_TYPE(src) = IS_UNUSED;
-                               MAKE_NOP(opline);
-                       }
-               }
-
        /* T = BOOL(X), FREE(T) => NOP */
                if (opline->opcode == ZEND_FREE &&
                        ZEND_OP1_TYPE(opline) == IS_TMP_VAR &&
@@ -1859,10 +1831,6 @@ static void zend_t_usage(zend_code_block *block, zend_op_array *op_array, char *
                                                }
                                                MAKE_NOP(opline);
                                                break;
-                                       case ZEND_PRINT:
-                                               opline->opcode = ZEND_ECHO;
-                                               ZEND_RESULT_TYPE(opline) = IS_UNUSED;
-                                               break;
                                        case ZEND_JMPZ_EX:
                                        case ZEND_JMPNZ_EX:
                                                opline->opcode -= 3;