mirror of
https://github.com/php/php-src.git
synced 2025-08-21 01:45:16 +02:00
Revert "More accurate reference-counter inference"
This reverts commit b35255ad21
.
Temporarily revert this, because it causes a memory leak on the
ext/intl/tests/bug72241.phpt test case, because temporary arrays
are not handled correctly.
This commit is contained in:
parent
e45f7053cf
commit
15c265b789
2 changed files with 6 additions and 13 deletions
|
@ -1972,15 +1972,15 @@ uint32_t zend_array_element_type(uint32_t t1, int write, int insert)
|
|||
if (tmp & MAY_BE_ARRAY) {
|
||||
tmp |= MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
|
||||
}
|
||||
if (tmp & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)) {
|
||||
if (t1 & MAY_BE_ARRAY_OF_REF) {
|
||||
if (!write) {
|
||||
/* can't be REF because of ZVAL_COPY_DEREF() usage */
|
||||
tmp |= MAY_BE_RCN;
|
||||
} else if (t1 & MAY_BE_ARRAY_OF_REF) {
|
||||
tmp |= MAY_BE_REF | MAY_BE_RC1 | MAY_BE_RCN;
|
||||
} else {
|
||||
tmp |= MAY_BE_RC1 | MAY_BE_RCN;
|
||||
} else {
|
||||
tmp |= MAY_BE_REF | MAY_BE_RC1 | MAY_BE_RCN;
|
||||
}
|
||||
} else if (tmp & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)) {
|
||||
tmp |= MAY_BE_RC1 | MAY_BE_RCN;
|
||||
}
|
||||
}
|
||||
if (write) {
|
||||
|
|
|
@ -5571,9 +5571,6 @@ static int zend_jit_assign_dim(dasm_State **Dst, const zend_op *opline, const ze
|
|||
if (op1_info & (MAY_BE_ARRAY_OF_REF|MAY_BE_OBJECT)) {
|
||||
var_info |= MAY_BE_REF;
|
||||
}
|
||||
if (var_info & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)) {
|
||||
var_info |= MAY_BE_RC1;
|
||||
}
|
||||
| // value = zend_assign_to_variable(variable_ptr, value, OP_DATA_TYPE);
|
||||
if (!zend_jit_assign_to_variable(Dst, opline, op_array, var_addr, var_info, -1, (opline+1)->op1_type, (opline+1)->op1, op3_addr, val_info, res_addr, 0)) {
|
||||
return 0;
|
||||
|
@ -5784,9 +5781,6 @@ static int zend_jit_assign_dim_op(dasm_State **Dst, const zend_op *opline, const
|
|||
if (op1_info & (MAY_BE_ARRAY_OF_REF|MAY_BE_OBJECT)) {
|
||||
var_info |= MAY_BE_REF;
|
||||
}
|
||||
if (var_info & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)) {
|
||||
var_info |= MAY_BE_RC1;
|
||||
}
|
||||
|
||||
if (!zend_jit_fetch_dimension_address_inner(Dst, opline, BP_VAR_RW, op1_info, op2_info, 8, 8, NULL, NULL)) {
|
||||
return 0;
|
||||
|
@ -11138,8 +11132,7 @@ static int zend_jit_fetch_obj(dasm_State **Dst, const zend_op *opline, const zen
|
|||
|9: // END
|
||||
if (opline->op1_type != IS_UNUSED && !use_this && !op1_indirect) {
|
||||
if (opline->op1_type == IS_VAR
|
||||
&& opline->opcode == ZEND_FETCH_OBJ_W
|
||||
&& (op1_info & MAY_BE_RC1)) {
|
||||
&& opline->opcode == ZEND_FETCH_OBJ_W) {
|
||||
zend_jit_addr orig_op1_addr = OP1_ADDR();
|
||||
|
||||
| IF_NOT_ZVAL_REFCOUNTED orig_op1_addr, >1
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue