summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_vm_def.h11
-rw-r--r--Zend/zend_vm_execute.h61
-rw-r--r--Zend/zend_vm_opcodes.c2
-rw-r--r--Zend/zend_vm_opcodes.h1
-rw-r--r--ext/opcache/Optimizer/block_pass.c36
5 files changed, 26 insertions, 85 deletions
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 0a9a330696..02c93477e3 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -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
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 77f43ffdf9..17858c2875 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -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,
diff --git a/Zend/zend_vm_opcodes.c b/Zend/zend_vm_opcodes.c
index 45dfe59845..d31eb14141 100644
--- a/Zend/zend_vm_opcodes.c
+++ b/Zend/zend_vm_opcodes.c
@@ -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",
diff --git a/Zend/zend_vm_opcodes.h b/Zend/zend_vm_opcodes.h
index 32a856a63c..43aea9ee95 100644
--- a/Zend/zend_vm_opcodes.h
+++ b/Zend/zend_vm_opcodes.h
@@ -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
diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c
index 73a65485a5..869bd3ccba 100644
--- a/ext/opcache/Optimizer/block_pass.c
+++ b/ext/opcache/Optimizer/block_pass.c
@@ -1055,25 +1055,6 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array,
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 ||
opline->opcode == ZEND_CONCAT) &&
@@ -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 ||