The return value long(1) is an IS_CONST operand now.
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);
}
/* }}} */
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
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
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
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
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,
"ZEND_ASSIGN",
"ZEND_ASSIGN_REF",
"ZEND_ECHO",
- "ZEND_PRINT",
+ NULL,
"ZEND_JMP",
"ZEND_JMPZ",
"ZEND_JMPNZ",
#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
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 &&
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 &&
}
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;