@@ -1890,6 +1890,18 @@ static void zend_jit_check_timeout(zend_jit_ctx *jit, const zend_op *opline, con
1890
1890
}
1891
1891
}
1892
1892
1893
+ static void zend_jit_vm_enter(zend_jit_ctx *jit, ir_ref to_opline)
1894
+ {
1895
+ // ZEND_VM_ENTER()
1896
+ ir_RETURN(ir_OR_A(to_opline, ir_CONST_ADDR((uintptr_t)1ULL<<63)));
1897
+ }
1898
+
1899
+ static void zend_jit_vm_leave(zend_jit_ctx *jit, ir_ref to_opline)
1900
+ {
1901
+ // ZEND_VM_LEAVE()
1902
+ ir_RETURN(ir_OR_A(to_opline, ir_CONST_ADDR((uintptr_t)1ULL<<63)));
1903
+ }
1904
+
1893
1905
/* stubs */
1894
1906
1895
1907
static int zend_jit_exception_handler_stub(zend_jit_ctx *jit)
@@ -1902,15 +1914,13 @@ static int zend_jit_exception_handler_stub(zend_jit_ctx *jit)
1902
1914
ir_CALL(IR_VOID, ir_CONST_FUNC(handler));
1903
1915
ir_TAILCALL(IR_VOID, ir_LOAD_A(jit_IP(jit)));
1904
1916
} else {
1905
- // TODO: zend_get_opcode_handler_func
1906
1917
handler = EG(exception_op)->handler;
1907
1918
1908
1919
if (GCC_GLOBAL_REGS) {
1909
1920
ir_TAILCALL(IR_VOID, ir_CONST_FUNC(handler));
1910
1921
} else {
1911
- // TODO: tail call?
1912
1922
ir_ref ref = ir_CALL_2(IR_ADDR, ir_CONST_FC_FUNC(handler), jit_FP(jit), jit_IP(jit));
1913
- ir_RETURN( ref);
1923
+ zend_jit_vm_enter(jit, ref);
1914
1924
}
1915
1925
}
1916
1926
return 1;
@@ -1984,16 +1994,6 @@ static int zend_jit_exception_handler_free_op2_stub(zend_jit_ctx *jit)
1984
1994
return 1;
1985
1995
}
1986
1996
1987
- static void zend_jit_vm_enter(zend_jit_ctx *jit, ir_ref to_opline)
1988
- {
1989
- ir_RETURN(ir_OR_A(to_opline, ir_CONST_ADDR((uintptr_t)1ULL<<63)));
1990
- }
1991
-
1992
- static void zend_jit_vm_leave(zend_jit_ctx *jit, ir_ref to_opline)
1993
- {
1994
- ir_RETURN(ir_OR_A(to_opline, ir_CONST_ADDR((uintptr_t)1ULL<<63)));
1995
- }
1996
-
1997
1997
static int zend_jit_interrupt_handler_stub(zend_jit_ctx *jit)
1998
1998
{
1999
1999
ir_ref if_timeout, if_exception;
@@ -17355,7 +17355,7 @@ static int zend_jit_trace_return(zend_jit_ctx *jit, bool original_handler, const
17355
17355
|| opline->opcode == ZEND_GENERATOR_CREATE
17356
17356
|| opline->opcode == ZEND_YIELD
17357
17357
|| opline->opcode == ZEND_YIELD_FROM)) {
17358
- ir_RETURN( ref);
17358
+ zend_jit_vm_enter(jit, ref);
17359
17359
return 1;
17360
17360
}
17361
17361
}
0 commit comments