summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--Zend/zend_execute.c3
-rw-r--r--Zend/zend_execute.h9
-rw-r--r--Zend/zend_vm_def.h4
-rw-r--r--Zend/zend_vm_execute.h10
5 files changed, 12 insertions, 15 deletions
diff --git a/NEWS b/NEWS
index 78ab89698f..47d2f6dfc3 100644
--- a/NEWS
+++ b/NEWS
@@ -91,6 +91,7 @@
. the size of zend_class_entry is reduced by sharing the same memory space
by different information for internal and user classes.
See zend_class_inttry.info union.
+ . reduced size of temp_variariable
- Improved CLI Interactive readline shell (Johannes)
. Added cli.pager ini setting to set a pager for output.
. Added cli.prompt ini settingto configure the shell prompt.
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 5593c946b5..245304764b 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1144,8 +1144,7 @@ convert_to_array:
result->str_offset.str = container;
PZVAL_LOCK(container);
result->str_offset.offset = Z_LVAL_P(dim);
- result->var.ptr_ptr = NULL;
- result->var.ptr = NULL;
+ result->str_offset.ptr_ptr = NULL;
return;
}
break;
diff --git a/Zend/zend_execute.h b/Zend/zend_execute.h
index e5eb26a5d0..6a79d11a3f 100644
--- a/Zend/zend_execute.h
+++ b/Zend/zend_execute.h
@@ -35,16 +35,13 @@ typedef union _temp_variable {
zend_bool fcall_returned_reference;
} var;
struct {
- zval **ptr_ptr;
- zval *ptr;
- zend_bool fcall_returned_reference;
+ zval **ptr_ptr; /* shared with var.ptr_ptr */
zval *str;
zend_uint offset;
} str_offset;
struct {
- zval **ptr_ptr;
- zval *ptr;
- zend_bool fcall_returned_reference;
+ zval **ptr_ptr; /* shared with var.ptr_ptr */
+ zval *ptr; /* shared with var.ptr */
HashPointer fe_pos;
} fe;
zend_class_entry *class_entry;
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 8052fa1b14..0bebfa2ed7 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -4039,7 +4039,7 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET, CONST|TMP|VAR|CV, ANY)
}
}
- AI_SET_PTR(&EX_T(opline->result.var), array_ptr);
+ EX_T(opline->result.var).fe.ptr = array_ptr;
if (iter) {
iter->index = 0;
@@ -4097,7 +4097,7 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY)
{
USE_OPLINE
zend_free_op free_op1;
- zval *array = EX_T(opline->op1.var).var.ptr;
+ zval *array = EX_T(opline->op1.var).fe.ptr;
zval **value;
char *str_key;
uint str_key_len;
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index e08954560b..b517154e1e 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -2542,7 +2542,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A
}
}
- AI_SET_PTR(&EX_T(opline->result.var), array_ptr);
+ EX_T(opline->result.var).fe.ptr = array_ptr;
if (iter) {
iter->index = 0;
@@ -6805,7 +6805,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG
}
}
- AI_SET_PTR(&EX_T(opline->result.var), array_ptr);
+ EX_T(opline->result.var).fe.ptr = array_ptr;
if (iter) {
iter->index = 0;
@@ -11094,7 +11094,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG
}
}
- AI_SET_PTR(&EX_T(opline->result.var), array_ptr);
+ EX_T(opline->result.var).fe.ptr = array_ptr;
if (iter) {
iter->index = 0;
@@ -11152,7 +11152,7 @@ static int ZEND_FASTCALL ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG
{
USE_OPLINE
- zval *array = EX_T(opline->op1.var).var.ptr;
+ zval *array = EX_T(opline->op1.var).fe.ptr;
zval **value;
char *str_key;
uint str_key_len;
@@ -26765,7 +26765,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS
}
}
- AI_SET_PTR(&EX_T(opline->result.var), array_ptr);
+ EX_T(opline->result.var).fe.ptr = array_ptr;
if (iter) {
iter->index = 0;