com php-src: Drop unused INIT_STRING opcode: Zend/zend _vm_def.h Zend/zend_vm_execute.h Zend/zend_vm _opcodes.c Zend/zend_vm_opcodes.h ext/opcache/Opt
imizer/block_pass.c
| From: | Nikita Popov | Date: | Mon, 29 Sep 2014 20:59:57 +0000 |
| Subject: | com php-src: Drop unused INIT_STRING opcode: Zend/zend _vm_def.h Zend/zend_vm_execute.h Zend/zend_vm _opcodes.c Zend/zend_vm_opcodes.h ext/opcache/Opt imizer/block_pass.c |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-82019@lists.php.net to get a copy of this message | ||
Commit: 67a11b61cd9ce09cd353f5ca5edddc5440bf5e3c
Author: Nikita Popov <nikic@php.net> Mon, 29 Sep 2014 22:59:57 +0200
Parents: 290d71de7513ec1fcdfc073389aefe9f9660477c
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=67a11b61cd9ce09cd353f5ca5edddc5440bf5e3c
Log:
Drop unused INIT_STRING opcode
INIT_STRING has been implemented as an UNUSED op1 to ADD_* for
some time now.
Changed paths:
M Zend/zend_vm_def.h
M Zend/zend_vm_execute.h
M Zend/zend_vm_opcodes.c
M Zend/zend_vm_opcodes.h
M ext/opcache/Optimizer/block_pass.c
Diff:
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 0a9a330..02c9347 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 77f43ff..17858c2 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 45dfe59..d31eb14 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 32a856a..43aea9e 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 73a6548..869bd3c 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 ||