Skip to content

Commit 0f81564

Browse files
committed
Drop ZEND_PRINT opcode in favor of ZEND_ECHO
The return value long(1) is an IS_CONST operand now.
1 parent 4b943c9 commit 0f81564

File tree

6 files changed

+31
-93
lines changed

6 files changed

+31
-93
lines changed

Zend/zend_compile.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5361,7 +5361,10 @@ void zend_compile_print(znode *result, zend_ast *ast) /* {{{ */
53615361
znode expr_node;
53625362
zend_compile_expr(&expr_node, expr_ast);
53635363

5364-
zend_emit_op_tmp(result, ZEND_PRINT, &expr_node, NULL);
5364+
zend_emit_op(NULL, ZEND_ECHO, &expr_node, NULL);
5365+
5366+
result->op_type = IS_CONST;
5367+
ZVAL_LONG(&result->u.constant, 1);
53655368
}
53665369
/* }}} */
53675370

Zend/zend_vm_def.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1085,14 +1085,6 @@ ZEND_VM_HANDLER(40, ZEND_ECHO, CONST|TMPVAR|CV, ANY)
10851085
ZEND_VM_NEXT_OPCODE();
10861086
}
10871087

1088-
ZEND_VM_HANDLER(41, ZEND_PRINT, CONST|TMPVAR|CV, ANY)
1089-
{
1090-
USE_OPLINE
1091-
1092-
ZVAL_LONG(EX_VAR(opline->result.var), 1);
1093-
ZEND_VM_DISPATCH_TO_HANDLER(ZEND_ECHO);
1094-
}
1095-
10961088
ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMPVAR|CV, UNUSED|CONST|VAR, int type)
10971089
{
10981090
USE_OPLINE

Zend/zend_vm_execute.h

Lines changed: 25 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2319,14 +2319,6 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23192319
ZEND_VM_NEXT_OPCODE();
23202320
}
23212321

2322-
static int ZEND_FASTCALL ZEND_PRINT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2323-
{
2324-
USE_OPLINE
2325-
2326-
ZVAL_LONG(EX_VAR(opline->result.var), 1);
2327-
return ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
2328-
}
2329-
23302322
static int ZEND_FASTCALL ZEND_JMPZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23312323
{
23322324
USE_OPLINE
@@ -23013,14 +23005,6 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2301323005
ZEND_VM_NEXT_OPCODE();
2301423006
}
2301523007

23016-
static int ZEND_FASTCALL ZEND_PRINT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23017-
{
23018-
USE_OPLINE
23019-
23020-
ZVAL_LONG(EX_VAR(opline->result.var), 1);
23021-
return ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
23022-
}
23023-
2302423008
static int ZEND_FASTCALL ZEND_JMPZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2302523009
{
2302623010
USE_OPLINE
@@ -32379,14 +32363,6 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS
3237932363
ZEND_VM_NEXT_OPCODE();
3238032364
}
3238132365

32382-
static int ZEND_FASTCALL ZEND_PRINT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32383-
{
32384-
USE_OPLINE
32385-
32386-
ZVAL_LONG(EX_VAR(opline->result.var), 1);
32387-
return ZEND_ECHO_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
32388-
}
32389-
3239032366
static int ZEND_FASTCALL ZEND_JMPZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3239132367
{
3239232368
USE_OPLINE
@@ -36825,31 +36801,31 @@ void zend_init_opcodes_handlers(void)
3682536801
ZEND_ECHO_SPEC_CV_HANDLER,
3682636802
ZEND_ECHO_SPEC_CV_HANDLER,
3682736803
ZEND_ECHO_SPEC_CV_HANDLER,
36828-
ZEND_PRINT_SPEC_CONST_HANDLER,
36829-
ZEND_PRINT_SPEC_CONST_HANDLER,
36830-
ZEND_PRINT_SPEC_CONST_HANDLER,
36831-
ZEND_PRINT_SPEC_CONST_HANDLER,
36832-
ZEND_PRINT_SPEC_CONST_HANDLER,
36833-
ZEND_PRINT_SPEC_TMPVAR_HANDLER,
36834-
ZEND_PRINT_SPEC_TMPVAR_HANDLER,
36835-
ZEND_PRINT_SPEC_TMPVAR_HANDLER,
36836-
ZEND_PRINT_SPEC_TMPVAR_HANDLER,
36837-
ZEND_PRINT_SPEC_TMPVAR_HANDLER,
36838-
ZEND_PRINT_SPEC_TMPVAR_HANDLER,
36839-
ZEND_PRINT_SPEC_TMPVAR_HANDLER,
36840-
ZEND_PRINT_SPEC_TMPVAR_HANDLER,
36841-
ZEND_PRINT_SPEC_TMPVAR_HANDLER,
36842-
ZEND_PRINT_SPEC_TMPVAR_HANDLER,
36843-
ZEND_NULL_HANDLER,
36844-
ZEND_NULL_HANDLER,
36845-
ZEND_NULL_HANDLER,
36846-
ZEND_NULL_HANDLER,
36847-
ZEND_NULL_HANDLER,
36848-
ZEND_PRINT_SPEC_CV_HANDLER,
36849-
ZEND_PRINT_SPEC_CV_HANDLER,
36850-
ZEND_PRINT_SPEC_CV_HANDLER,
36851-
ZEND_PRINT_SPEC_CV_HANDLER,
36852-
ZEND_PRINT_SPEC_CV_HANDLER,
36804+
ZEND_NULL_HANDLER,
36805+
ZEND_NULL_HANDLER,
36806+
ZEND_NULL_HANDLER,
36807+
ZEND_NULL_HANDLER,
36808+
ZEND_NULL_HANDLER,
36809+
ZEND_NULL_HANDLER,
36810+
ZEND_NULL_HANDLER,
36811+
ZEND_NULL_HANDLER,
36812+
ZEND_NULL_HANDLER,
36813+
ZEND_NULL_HANDLER,
36814+
ZEND_NULL_HANDLER,
36815+
ZEND_NULL_HANDLER,
36816+
ZEND_NULL_HANDLER,
36817+
ZEND_NULL_HANDLER,
36818+
ZEND_NULL_HANDLER,
36819+
ZEND_NULL_HANDLER,
36820+
ZEND_NULL_HANDLER,
36821+
ZEND_NULL_HANDLER,
36822+
ZEND_NULL_HANDLER,
36823+
ZEND_NULL_HANDLER,
36824+
ZEND_NULL_HANDLER,
36825+
ZEND_NULL_HANDLER,
36826+
ZEND_NULL_HANDLER,
36827+
ZEND_NULL_HANDLER,
36828+
ZEND_NULL_HANDLER,
3685336829
ZEND_JMP_SPEC_HANDLER,
3685436830
ZEND_JMP_SPEC_HANDLER,
3685536831
ZEND_JMP_SPEC_HANDLER,

Zend/zend_vm_opcodes.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ const char *zend_vm_opcodes_map[170] = {
6363
"ZEND_ASSIGN",
6464
"ZEND_ASSIGN_REF",
6565
"ZEND_ECHO",
66-
"ZEND_PRINT",
66+
NULL,
6767
"ZEND_JMP",
6868
"ZEND_JMPZ",
6969
"ZEND_JMPNZ",

Zend/zend_vm_opcodes.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ END_EXTERN_C()
6868
#define ZEND_ASSIGN 38
6969
#define ZEND_ASSIGN_REF 39
7070
#define ZEND_ECHO 40
71-
#define ZEND_PRINT 41
7271
#define ZEND_JMP 42
7372
#define ZEND_JMPZ 43
7473
#define ZEND_JMPNZ 44

ext/opcache/Optimizer/block_pass.c

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -645,24 +645,8 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array,
645645
MAKE_NOP(src);
646646
}
647647

648-
/* T = PRINT(X), F(T) => ECHO(X), F(1) */
649-
if (ZEND_OP1_TYPE(opline) == IS_TMP_VAR &&
650-
VAR_SOURCE(opline->op1) &&
651-
VAR_SOURCE(opline->op1)->opcode == ZEND_PRINT &&
652-
opline->opcode != ZEND_CASE && opline->opcode != ZEND_FREE) {
653-
ZEND_OP1_TYPE(opline) = IS_CONST;
654-
LITERAL_LONG(opline->op1, 1);
655-
}
656-
657-
if (ZEND_OP2_TYPE(opline) == IS_TMP_VAR &&
658-
VAR_SOURCE(opline->op2) &&
659-
VAR_SOURCE(opline->op2)->opcode == ZEND_PRINT) {
660-
ZEND_OP2_TYPE(opline) = IS_CONST;
661-
LITERAL_LONG(opline->op2, 1);
662-
}
663-
664648
/* T = CAST(X, String), ECHO(T) => NOP, ECHO(X) */
665-
if ((opline->opcode == ZEND_ECHO || opline->opcode == ZEND_PRINT) &&
649+
if (opline->opcode == ZEND_ECHO &&
666650
ZEND_OP1_TYPE(opline) & (IS_TMP_VAR|IS_VAR) &&
667651
VAR_SOURCE(opline->op1) &&
668652
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,
672656
MAKE_NOP(src);
673657
}
674658

675-
/* T = PRINT(X), FREE(T) => ECHO(X) */
676-
if (opline->opcode == ZEND_FREE &&
677-
ZEND_OP1_TYPE(opline) == IS_TMP_VAR &&
678-
VAR_SOURCE(opline->op1)) {
679-
zend_op *src = VAR_SOURCE(opline->op1);
680-
if (src->opcode == ZEND_PRINT) {
681-
src->opcode = ZEND_ECHO;
682-
ZEND_RESULT_TYPE(src) = IS_UNUSED;
683-
MAKE_NOP(opline);
684-
}
685-
}
686-
687659
/* T = BOOL(X), FREE(T) => NOP */
688660
if (opline->opcode == ZEND_FREE &&
689661
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 *
18591831
}
18601832
MAKE_NOP(opline);
18611833
break;
1862-
case ZEND_PRINT:
1863-
opline->opcode = ZEND_ECHO;
1864-
ZEND_RESULT_TYPE(opline) = IS_UNUSED;
1865-
break;
18661834
case ZEND_JMPZ_EX:
18671835
case ZEND_JMPNZ_EX:
18681836
opline->opcode -= 3;

0 commit comments

Comments
 (0)