@@ -4064,24 +4064,14 @@ static int zend_jit_inc_dec(dasm_State **Dst, const zend_op *opline, uint32_t op
4064
4064
| // ZVAL_DEREF(var_ptr);
4065
4065
if (op1_info & MAY_BE_REF) {
4066
4066
| IF_NOT_Z_TYPE, FCARG1a, IS_REFERENCE, >2
4067
- | GET_Z_PTR FCARG2a, FCARG1a
4068
- | cmp aword [FCARG2a + offsetof(zend_reference, sources.ptr)], 0
4069
- | lea FCARG1a, [FCARG2a + offsetof(zend_reference, val)]
4070
- | jz >2
4071
- |.if X64
4072
- if (RETURN_VALUE_USED(opline)) {
4073
- | LOAD_ZVAL_ADDR CARG3, res_addr
4074
- } else {
4075
- | mov CARG3, 0
4076
- }
4077
- |.else
4078
- | sub r4, 12
4079
- if (RETURN_VALUE_USED(opline)) {
4080
- | PUSH_ZVAL_ADDR res_addr, r0
4081
- } else {
4082
- | push 0
4083
- }
4084
- |.endif
4067
+ | GET_Z_PTR FCARG1a, FCARG1a
4068
+ | cmp aword [FCARG1a + offsetof(zend_reference, sources.ptr)], 0
4069
+ | jz >1
4070
+ if (RETURN_VALUE_USED(opline)) {
4071
+ | LOAD_ZVAL_ADDR FCARG2a, res_addr
4072
+ } else {
4073
+ | xor FCARG2a, FCARG2a
4074
+ }
4085
4075
if (opline->opcode == ZEND_PRE_INC) {
4086
4076
| EXT_CALL zend_jit_pre_inc_typed_ref, r0
4087
4077
} else if (opline->opcode == ZEND_PRE_DEC) {
@@ -4093,11 +4083,10 @@ static int zend_jit_inc_dec(dasm_State **Dst, const zend_op *opline, uint32_t op
4093
4083
} else {
4094
4084
ZEND_UNREACHABLE();
4095
4085
}
4096
- |.if not(X64)
4097
- | add r4, 12
4098
- |.endif
4099
4086
zend_jit_check_exception(Dst);
4100
4087
| jmp >3
4088
+ |1:
4089
+ | lea FCARG1a, [FCARG1a + offsetof(zend_reference, val)]
4101
4090
|2:
4102
4091
}
4103
4092
@@ -12516,33 +12505,24 @@ static int zend_jit_incdec_obj(dasm_State **Dst,
12516
12505
if (!prop_info || !ZEND_TYPE_IS_SET(prop_info->type)) {
12517
12506
zend_jit_addr var_addr = prop_addr;
12518
12507
12519
- var_addr = ZEND_ADDR_MEM_ZVAL(ZREG_R0 , 0);
12520
- | LOAD_ZVAL_ADDR r0 , prop_addr
12508
+ var_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FCARG1a , 0);
12509
+ | LOAD_ZVAL_ADDR FCARG1a , prop_addr
12521
12510
12522
12511
| IF_NOT_ZVAL_TYPE var_addr, IS_REFERENCE, >2
12523
- | GET_ZVAL_PTR FCARG2a , var_addr
12524
- | cmp aword [FCARG2a + offsetof(zend_reference, sources.ptr)], 0
12512
+ | GET_ZVAL_PTR FCARG1a , var_addr
12513
+ | cmp aword [FCARG1a + offsetof(zend_reference, sources.ptr)], 0
12525
12514
| jnz >1
12526
- | lea r0 , aword [FCARG2a + offsetof(zend_reference, val)]
12515
+ | lea FCARG1a , aword [FCARG1a + offsetof(zend_reference, val)]
12527
12516
|.cold_code
12528
12517
|1:
12529
- | lea FCARG1a, [FCARG2a + offsetof(zend_reference, val)]
12530
12518
if (opline) {
12531
12519
| SET_EX_OPLINE opline, r0
12532
12520
}
12533
- |.if X64
12534
- if (opline->result_type == IS_UNUSED) {
12535
- | xor CARG3, CARG3
12536
- } else {
12537
- | LOAD_ZVAL_ADDR CARG3, res_addr
12538
- }
12539
- |.else
12540
- if (opline->result_type == IS_UNUSED) {
12541
- | push 0
12542
- } else {
12543
- | PUSH_ZVAL_ADDR res_addr, r0
12544
- }
12545
- |.endif
12521
+ if (opline->result_type == IS_UNUSED) {
12522
+ | xor FCARG2a, FCARG2a
12523
+ } else {
12524
+ | LOAD_ZVAL_ADDR FCARG2a, res_addr
12525
+ }
12546
12526
switch (opline->opcode) {
12547
12527
case ZEND_PRE_INC_OBJ:
12548
12528
| EXT_CALL zend_jit_pre_inc_typed_ref, r0
@@ -12559,9 +12539,6 @@ static int zend_jit_incdec_obj(dasm_State **Dst,
12559
12539
default:
12560
12540
ZEND_UNREACHABLE();
12561
12541
}
12562
- |.if not(X64)
12563
- | add r4, 12
12564
- |.endif
12565
12542
| jmp >9
12566
12543
|.code
12567
12544
@@ -12580,16 +12557,13 @@ static int zend_jit_incdec_obj(dasm_State **Dst,
12580
12557
| jo >3
12581
12558
if (opline->opcode == ZEND_PRE_INC_OBJ || opline->opcode == ZEND_PRE_DEC_OBJ) {
12582
12559
if (opline->result_type != IS_UNUSED) {
12583
- | ZVAL_COPY_VALUE res_addr, -1, var_addr, MAY_BE_LONG, ZREG_R1 , ZREG_R2
12560
+ | ZVAL_COPY_VALUE res_addr, -1, var_addr, MAY_BE_LONG, ZREG_R0 , ZREG_R2
12584
12561
}
12585
12562
}
12586
12563
|.cold_code
12587
12564
|2:
12588
- | LOAD_ZVAL_ADDR FCARG1a, var_addr
12589
12565
if (opline->opcode == ZEND_POST_INC_OBJ || opline->opcode == ZEND_POST_DEC_OBJ) {
12590
- zend_jit_addr val_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FCARG1a, 0);
12591
-
12592
- | ZVAL_COPY_VALUE res_addr, -1, val_addr, MAY_BE_ANY, ZREG_R0, ZREG_R2
12566
+ | ZVAL_COPY_VALUE res_addr, -1, var_addr, MAY_BE_ANY, ZREG_R0, ZREG_R2
12593
12567
| TRY_ADDREF MAY_BE_ANY, ah, r2
12594
12568
}
12595
12569
if (opline->opcode == ZEND_PRE_INC_OBJ || opline->opcode == ZEND_POST_INC_OBJ) {
0 commit comments