Skip to content

Commit 7cf651c

Browse files
committed
Merge common code
1 parent be7f405 commit 7cf651c

File tree

2 files changed

+333
-518
lines changed

2 files changed

+333
-518
lines changed

Zend/zend_vm_def.h

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2457,8 +2457,8 @@ ZEND_VM_HANDLER(24, ZEND_ASSIGN_OBJ, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, CACHE_
24572457
}
24582458
object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
24592459
if (UNEXPECTED(!object)) {
2460-
FREE_OP_DATA();
2461-
ZEND_VM_C_GOTO(exit_assign_obj);
2460+
value = &EG(uninitialized_zval);
2461+
ZEND_VM_C_GOTO(free_and_exit_assign_obj);
24622462
}
24632463
}
24642464

@@ -2488,15 +2488,12 @@ ZEND_VM_C_LABEL(assign_object):
24882488
if (OP_DATA_TYPE == IS_CONST && Z_TYPE_P(value) == orig_type) {
24892489
CACHE_PTR_EX(cache_slot + 2, NULL);
24902490
}
2491-
FREE_OP_DATA();
2491+
ZEND_VM_C_GOTO(free_and_exit_assign_obj);
24922492
} else {
24932493
ZEND_VM_C_LABEL(fast_assign_obj):
24942494
value = zend_assign_to_variable(property_val, value, OP_DATA_TYPE, EX_USES_STRICT_TYPES());
2495+
ZEND_VM_C_GOTO(exit_assign_obj);
24952496
}
2496-
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
2497-
ZVAL_COPY(EX_VAR(opline->result.var), value);
2498-
}
2499-
ZEND_VM_C_GOTO(exit_assign_obj);
25002497
}
25012498
} else {
25022499
if (EXPECTED(zobj->properties != NULL)) {
@@ -2542,9 +2539,6 @@ ZEND_VM_C_LABEL(fast_assign_obj):
25422539
}
25432540
}
25442541
zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
2545-
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
2546-
ZVAL_COPY(EX_VAR(opline->result.var), value);
2547-
}
25482542
ZEND_VM_C_GOTO(exit_assign_obj);
25492543
}
25502544
}
@@ -2554,13 +2548,14 @@ ZEND_VM_C_LABEL(fast_assign_obj):
25542548
ZVAL_DEREF(value);
25552549
}
25562550

2557-
property = Z_OBJ_HT_P(object)->write_property(object, property, value, (OP2_TYPE == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
2551+
value = Z_OBJ_HT_P(object)->write_property(object, property, value, (OP2_TYPE == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
25582552

2559-
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
2560-
ZVAL_COPY(EX_VAR(opline->result.var), property);
2561-
}
2553+
ZEND_VM_C_LABEL(free_and_exit_assign_obj):
25622554
FREE_OP_DATA();
25632555
ZEND_VM_C_LABEL(exit_assign_obj):
2556+
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
2557+
ZVAL_COPY(EX_VAR(opline->result.var), value);
2558+
}
25642559
FREE_OP2();
25652560
FREE_OP1_VAR_PTR();
25662561
/* assign_obj has two opcodes! */

0 commit comments

Comments
 (0)