@@ -1966,50 +1966,10 @@ static int zend_jit_undefined_offset_ex_stub(dasm_State **Dst)
19661966static int zend_jit_undefined_offset_stub(dasm_State **Dst)
19671967{
19681968 |->undefined_offset:
1969- |.if X64WIN
1970- | sub r4, 0x28
1971- |.elif X64
1972- | sub r4, 8
1973- |.else
1974- | sub r4, 12
1975- |.endif
1976- | mov r0, EX->opline
1977- | mov ecx, dword OP:r0->result.var
1978- | cmp byte OP:r0->op2_type, IS_CONST
1979- | SET_Z_TYPE_INFO FP + r1, IS_NULL
1980- | jne >2
1981- |.if X64
1982- | movsxd r1, dword OP:r0->op2.constant
1983- | add r0, r1
1984- |.else
1985- | mov r0, aword OP:r0->op2.zv
1986- |.endif
1987- | jmp >3
1988- |2:
1989- | mov eax, dword OP:r0->op2.var
1990- | add r0, FP
1991- |3:
1992- |.if X64WIN
1993- | mov CARG1, E_WARNING
1994- | LOAD_ADDR CARG2, "Undefined array key " ZEND_LONG_FMT
1995- | mov CARG3, aword [r0]
1996- | EXT_CALL zend_error, r0
1997- | add r4, 0x28 // stack alignment
1998- |.elif X64
1999- | mov CARG1, E_WARNING
2000- | LOAD_ADDR CARG2, "Undefined array key " ZEND_LONG_FMT
2001- | mov CARG3, aword [r0]
2002- | EXT_CALL zend_error, r0
2003- | add r4, 8 // stack alignment
2004- |.else
2005- | sub r4, 4
2006- | push aword [r0]
2007- | push "Undefined array key " ZEND_LONG_FMT
2008- | push E_WARNING
2009- | EXT_CALL zend_error, r0
2010- | add r4, 28
2011- |.endif
2012- | ret
1969+ || if (!GCC_GLOBAL_REGS) {
1970+ | mov FCARG1a, FP
1971+ || }
1972+ | EXT_JMP zend_jit_undefined_long_key, r0
20131973
20141974 return 1;
20151975}
@@ -2026,54 +1986,10 @@ static int zend_jit_undefined_index_ex_stub(dasm_State **Dst)
20261986static int zend_jit_undefined_index_stub(dasm_State **Dst)
20271987{
20281988 |->undefined_index:
2029- |.if X64WIN
2030- | sub r4, 0x28
2031- |.elif X64
2032- | sub r4, 8
2033- |.else
2034- | sub r4, 12
2035- |.endif
2036- | mov r0, EX->opline
2037- | mov ecx, dword OP:r0->result.var
2038- | cmp byte OP:r0->op2_type, IS_CONST
2039- | SET_Z_TYPE_INFO FP + r1, IS_NULL
2040- | jne >2
2041- |.if X64
2042- | movsxd r1, dword OP:r0->op2.constant
2043- | add r0, r1
2044- |.else
2045- | mov r0, aword OP:r0->op2.zv
2046- |.endif
2047- | jmp >3
2048- |2:
2049- | mov eax, dword OP:r0->op2.var
2050- | add r0, FP
2051- |3:
2052- |.if X64WIN
2053- | mov CARG1, E_WARNING
2054- | LOAD_ADDR CARG2, "Undefined array key \"%s\""
2055- | mov CARG3, aword [r0]
2056- | add CARG3, offsetof(zend_string, val)
2057- | EXT_CALL zend_error, r0
2058- | add r4, 0x28
2059- |.elif X64
2060- | mov CARG1, E_WARNING
2061- | LOAD_ADDR CARG2, "Undefined array key \"%s\""
2062- | mov CARG3, aword [r0]
2063- | add CARG3, offsetof(zend_string, val)
2064- | EXT_CALL zend_error, r0
2065- | add r4, 8
2066- |.else
2067- | sub r4, 4
2068- | mov r0, aword [r0]
2069- | add r0, offsetof(zend_string, val)
2070- | push r0
2071- | push "Undefined array key \"%s\""
2072- | push E_WARNING
2073- | EXT_CALL zend_error, r0
2074- | add r4, 28
2075- |.endif
2076- | ret
1989+ || if (!GCC_GLOBAL_REGS) {
1990+ | mov FCARG1a, FP
1991+ || }
1992+ | EXT_JMP zend_jit_undefined_string_key, r0
20771993
20781994 return 1;
20791995}
0 commit comments