mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Drop unused INIT_STRING opcode
INIT_STRING has been implemented as an UNUSED op1 to ADD_* for some time now.
This commit is contained in:
parent
290d71de75
commit
67a11b61cd
5 changed files with 26 additions and 85 deletions
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue