summaryrefslogtreecommitdiff
path: root/Zend/zend_opcode.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-02-18 01:41:23 +0400
committerDmitry Stogov <dmitry@zend.com>2014-02-18 01:41:23 +0400
commita0fe8e5a91024710372625555b7d84dc9726e2da (patch)
treed56a60ba9a7e37ca1e79c2a2ea3fdf63166791ee /Zend/zend_opcode.c
parent4d6ff31cb31c661e3098d9dc07b156264dd39615 (diff)
downloadphp-git-a0fe8e5a91024710372625555b7d84dc9726e2da.tar.gz
Use better data structures (incomplete)
Diffstat (limited to 'Zend/zend_opcode.c')
-rw-r--r--Zend/zend_opcode.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c
index 8a9b26d3e7..ce7084817a 100644
--- a/Zend/zend_opcode.c
+++ b/Zend/zend_opcode.c
@@ -695,9 +695,16 @@ ZEND_API int pass_two(zend_op_array *op_array TSRMLS_DC)
while (opline < end) {
if (opline->op1_type == IS_CONST) {
opline->op1.zv = &op_array->literals[opline->op1.constant].constant;
+ } else if (opline->op1_type & (IS_VAR|IS_TMP_VAR)) {
+ opline->op1.var = (zend_uint)EX_VAR_NUM_2(NULL, op_array->last_var + opline->op1.var);
}
if (opline->op2_type == IS_CONST) {
opline->op2.zv = &op_array->literals[opline->op2.constant].constant;
+ } else if (opline->op2_type & (IS_VAR|IS_TMP_VAR)) {
+ opline->op2.var = (zend_uint)EX_VAR_NUM_2(NULL, op_array->last_var + opline->op2.var);
+ }
+ if (opline->result_type & (IS_VAR|IS_TMP_VAR)) {
+ opline->result.var = (zend_uint)EX_VAR_NUM_2(NULL, op_array->last_var + opline->result.var);
}
switch (opline->opcode) {
case ZEND_GOTO: