}
return SUCCESS;
}
-#endif
\ No newline at end of file
+#endif
+
+static void ZEND_FASTCALL zend_jit_free_trampoline_helper(zend_function *func)
+{
+ ZEND_ASSERT(func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE);
+ zend_string_release_ex(func->common.function_name, 0);
+ zend_free_trampoline(func);
+}
return 1;
}
+static int zend_jit_free_trampoline(dasm_State **Dst)
+{
+ | /// if (UNEXPECTED(func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE))
+ | test dword [r0 + offsetof(zend_function, common.fn_flags)], ZEND_ACC_CALL_VIA_TRAMPOLINE
+ | jz >1
+ | mov FCARG1a, r0
+ | EXT_CALL zend_jit_free_trampoline_helper, r0
+ |1:
+ return 1;
+}
+
static int zend_jit_inc_dec(dasm_State **Dst, const zend_op *opline, uint32_t op1_info, zend_jit_addr op1_addr, uint32_t op1_def_info, zend_jit_addr op1_def_addr, uint32_t res_use_info, uint32_t res_info, zend_jit_addr res_addr, int may_overflow, int may_throw)
{
if (op1_info & ((MAY_BE_UNDEF|MAY_BE_ANY)-MAY_BE_LONG)) {