summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_compile.c5
-rw-r--r--Zend/zend_vm_def.h8
-rw-r--r--Zend/zend_vm_execute.h74
-rw-r--r--Zend/zend_vm_opcodes.c2
-rw-r--r--Zend/zend_vm_opcodes.h1
-rw-r--r--ext/opcache/Optimizer/block_pass.c34
6 files changed, 31 insertions, 93 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index c196e39887..c159fcc6e1 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -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);
}
/* }}} */
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index d9f6f3ef69..c1115fd7d6 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -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
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 1c2700e3b5..100d2d48ec 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -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,
diff --git a/Zend/zend_vm_opcodes.c b/Zend/zend_vm_opcodes.c
index 067fd362e6..aaaf8df6b3 100644
--- a/Zend/zend_vm_opcodes.c
+++ b/Zend/zend_vm_opcodes.c
@@ -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",
diff --git a/Zend/zend_vm_opcodes.h b/Zend/zend_vm_opcodes.h
index 9d969877e0..e31a26a3be 100644
--- a/Zend/zend_vm_opcodes.h
+++ b/Zend/zend_vm_opcodes.h
@@ -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
diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c
index 49ca397316..9cb95a3e47 100644
--- a/ext/opcache/Optimizer/block_pass.c
+++ b/ext/opcache/Optimizer/block_pass.c
@@ -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;