@@ -539,11 +539,7 @@ static void* dasm_labels[zend_lb_MAX];
539
539
540
540
|.macro UNDEF_OPLINE_RESULT
541
541
| mov r0, EX->opline
542
- |.if X64
543
- | movsxd r0, dword OP:r0->result.var
544
- |.else
545
- | mov r0, OP:r0->result.var
546
- |.endif
542
+ | mov eax, dword OP:r0->result.var
547
543
| SET_Z_TYPE_INFO FP + r0, IS_UNDEF
548
544
|.endmacro
549
545
@@ -1808,11 +1804,7 @@ static int zend_jit_exception_handler_undef_stub(dasm_State **Dst)
1808
1804
| MEM_OP2_2_ZTS mov, r0, aword, executor_globals, opline_before_exception, r0
1809
1805
| test byte OP:r0->result_type, (IS_TMP_VAR|IS_VAR)
1810
1806
| jnz >1
1811
- | .if X64
1812
- | movsxd r0, dword OP:r0->result.var
1813
- | .else
1814
- | mov r0, aword OP:r0->result.var
1815
- | .endif
1807
+ | mov eax, dword OP:r0->result.var
1816
1808
| SET_Z_TYPE_INFO FP + r0, IS_UNDEF
1817
1809
|1:
1818
1810
| jmp ->exception_handler
@@ -1911,11 +1903,7 @@ static int zend_jit_throw_cannot_pass_by_ref_stub(dasm_State **Dst)
1911
1903
{
1912
1904
|->throw_cannot_pass_by_ref:
1913
1905
| mov r0, EX->opline
1914
- |.if X64
1915
- | movsxd r1, dword OP:r0->result.var
1916
- |.else
1917
- | mov r1, OP:r0->result.var
1918
- |.endif
1906
+ | mov ecx, dword OP:r0->result.var
1919
1907
| SET_Z_TYPE_INFO RX+r1, IS_UNDEF
1920
1908
| // last EX(call) frame may be delayed
1921
1909
| cmp RX, EX->call
@@ -1929,11 +1917,7 @@ static int zend_jit_throw_cannot_pass_by_ref_stub(dasm_State **Dst)
1929
1917
| EXT_CALL zend_cannot_pass_by_reference, r0
1930
1918
| cmp byte OP:RX->op1_type, IS_TMP_VAR
1931
1919
| jne >9
1932
- |.if X64
1933
- | movsxd r0, dword OP:RX->op1.var
1934
- |.else
1935
- | mov r0, OP:RX->op1.var
1936
- |.endif
1920
+ | mov eax, dword OP:RX->op1.var
1937
1921
| add r0, FP
1938
1922
| ZVAL_PTR_DTOR ZEND_ADDR_MEM_ZVAL(ZREG_R0, 0), MAY_BE_ANY|MAY_BE_RC1|MAY_BE_RCN|MAY_BE_REF, 0, 0, NULL
1939
1923
|9:
@@ -1962,11 +1946,7 @@ static int zend_jit_undefined_offset_stub(dasm_State **Dst)
1962
1946
| sub r4, 12
1963
1947
|.endif
1964
1948
| mov r0, EX->opline
1965
- |.if X64
1966
- | movsxd r1, dword OP:r0->result.var
1967
- |.else
1968
- | mov r1, OP:r0->result.var
1969
- |.endif
1949
+ | mov ecx, dword OP:r0->result.var
1970
1950
| cmp byte OP:r0->op2_type, IS_CONST
1971
1951
| SET_Z_TYPE_INFO FP + r1, IS_NULL
1972
1952
| jne >2
@@ -1978,11 +1958,7 @@ static int zend_jit_undefined_offset_stub(dasm_State **Dst)
1978
1958
|.endif
1979
1959
| jmp >3
1980
1960
|2:
1981
- |.if X64
1982
- | movsxd r0, dword OP:r0->op2.var
1983
- |.else
1984
- | mov r0, OP:r0->op2.var
1985
- |.endif
1961
+ | mov eax, dword OP:r0->op2.var
1986
1962
| add r0, FP
1987
1963
|3:
1988
1964
|.if X64WIN
@@ -2030,11 +2006,7 @@ static int zend_jit_undefined_index_stub(dasm_State **Dst)
2030
2006
| sub r4, 12
2031
2007
|.endif
2032
2008
| mov r0, EX->opline
2033
- |.if X64
2034
- | movsxd r1, dword OP:r0->result.var
2035
- |.else
2036
- | mov r1, OP:r0->result.var
2037
- |.endif
2009
+ | mov ecx, dword OP:r0->result.var
2038
2010
| cmp byte OP:r0->op2_type, IS_CONST
2039
2011
| SET_Z_TYPE_INFO FP + r1, IS_NULL
2040
2012
| jne >2
@@ -2046,11 +2018,7 @@ static int zend_jit_undefined_index_stub(dasm_State **Dst)
2046
2018
|.endif
2047
2019
| jmp >3
2048
2020
|2:
2049
- |.if X64
2050
- | movsxd r0, dword OP:r0->op2.var
2051
- |.else
2052
- | mov r0, OP:r0->op2.var
2053
- |.endif
2021
+ | mov eax, dword OP:r0->op2.var
2054
2022
| add r0, FP
2055
2023
|3:
2056
2024
|.if X64WIN
@@ -2104,11 +2072,7 @@ static int zend_jit_cannot_add_element_stub(dasm_State **Dst)
2104
2072
| mov r0, EX->opline
2105
2073
| cmp byte OP:r0->result_type, IS_UNUSED
2106
2074
| jz >1
2107
- |.if X64
2108
- | movsxd r0, dword OP:r0->result.var
2109
- |.else
2110
- | mov r0, OP:r0->result.var
2111
- |.endif
2075
+ | mov eax, dword OP:r0->result.var
2112
2076
| SET_Z_TYPE_INFO FP + r0, IS_NULL
2113
2077
|1:
2114
2078
|.if X64WIN
@@ -5257,7 +5221,7 @@ static int zend_jit_fetch_dimension_address_inner(dasm_State **Dst, const zend_o
5257
5221
}
5258
5222
| // if (EXPECTED((zend_ulong)(_h) < (zend_ulong)(_ht)->nNumUsed))
5259
5223
|.if X64
5260
- | movsxd r0 , dword [FCARG1a + offsetof(zend_array, nNumUsed)]
5224
+ | mov eax , dword [FCARG1a + offsetof(zend_array, nNumUsed)]
5261
5225
if (val == 0) {
5262
5226
| test r0, r0
5263
5227
} else if (val > 0 && !op2_loaded) {
@@ -8664,7 +8628,7 @@ static int zend_jit_push_call_frame(dasm_State **Dst, const zend_op *opline, zen
8664
8628
|.if X64
8665
8629
| movsxd r2, edx
8666
8630
|.endif
8667
- | sub FCARG1a, r2
8631
+ | sub FCARG1a, r2
8668
8632
|1:
8669
8633
}
8670
8634
@@ -9921,8 +9885,9 @@ static int zend_jit_do_fcall(dasm_State **Dst, const zend_op *opline, const zend
9921
9885
}
9922
9886
| // opline += num_args;
9923
9887
|.if X64
9924
- | movsxd r2, ecx
9925
- | imul r2, r2, sizeof(zend_op)
9888
+ || ZEND_ASSERT(sizeof(zend_op) == 32);
9889
+ | mov edx, ecx
9890
+ | shl r2, 5
9926
9891
|.else
9927
9892
| imul r2, ecx, sizeof(zend_op)
9928
9893
|.endif
@@ -9938,9 +9903,9 @@ static int zend_jit_do_fcall(dasm_State **Dst, const zend_op *opline, const zend
9938
9903
| sub edx, ecx
9939
9904
| jle >3 //???
9940
9905
| // zval *var = EX_VAR_NUM(num_args);
9941
- |.if X64
9942
- | movsxd r1, ecx
9943
- |.endif
9906
+ // |.if X64
9907
+ // | movsxd r1, ecx
9908
+ // |.endif
9944
9909
| shl r1, 4
9945
9910
| lea r1, [FP + r1 + (ZEND_CALL_FRAME_SLOT * sizeof(zval))]
9946
9911
|2:
@@ -12205,11 +12170,10 @@ static int zend_jit_bind_global(dasm_State **Dst, const zend_op *opline, uint32_
12205
12170
| mov r0, aword [r0 + opline->extended_value]
12206
12171
| sub r0, 1
12207
12172
| // if (EXPECTED(idx < EG(symbol_table).nNumUsed * sizeof(Bucket)))
12173
+ | MEM_OP2_2_ZTS mov, ecx, dword, executor_globals, symbol_table.nNumUsed, r1
12208
12174
|.if X64
12209
- | MEM_OP2_2_ZTS movsxd, r1, dword, executor_globals, symbol_table.nNumUsed, r1
12210
12175
| shl r1, 5
12211
12176
|.else
12212
- | MEM_OP2_2_ZTS mov, r1, dword, executor_globals, symbol_table.nNumUsed, r1
12213
12177
| imul r1, sizeof(Bucket)
12214
12178
|.endif
12215
12179
| cmp r0, r1
@@ -14659,7 +14623,8 @@ static int zend_jit_fe_fetch(dasm_State **Dst, const zend_op *opline, uint32_t o
14659
14623
| mov FCARG1d, dword [FP + opline->op1.var + offsetof(zval, u2.fe_pos)]
14660
14624
| // p = fe_ht->arData + pos;
14661
14625
|.if X64
14662
- | movsxd r0, FCARG1d
14626
+ || ZEND_ASSERT(sizeof(Bucket) == 32);
14627
+ | mov eax, FCARG1d
14663
14628
| shl r0, 5
14664
14629
|.else
14665
14630
| imul r0, FCARG1a, sizeof(Bucket)
0 commit comments