Apply changes from https://github.com/dotnet/runtime/commit/eb1756e97d23df13bc6fe798e...
[mono-project.git] / mono / mini / ee.h
blob70c2d47bcb720758bf65ecdab9ee21642a37a12d
1 /*
2 * Licensed to the .NET Foundation under one or more agreements.
3 * The .NET Foundation licenses this file to you under the MIT license.
4 */
6 #include <config.h>
7 #include <mono/metadata/metadata.h>
8 #include <mono/metadata/object.h>
9 #include <mono/utils/mono-compiler.h>
10 #include <mono/utils/mono-error.h>
11 #include <mono/utils/mono-publib.h>
12 #include <mono/eglib/glib.h>
14 #ifndef __MONO_EE_H__
15 #define __MONO_EE_H__
17 #define MONO_EE_API_VERSION 0xf
19 typedef struct _MonoInterpStackIter MonoInterpStackIter;
21 /* Needed for stack allocation */
22 struct _MonoInterpStackIter {
23 gpointer dummy [8];
26 typedef gpointer MonoInterpFrameHandle;
28 #define MONO_EE_CALLBACKS \
29 MONO_EE_CALLBACK (void, entry_from_trampoline, (gpointer ccontext, gpointer imethod)) \
30 MONO_EE_CALLBACK (void, to_native_trampoline, (gpointer addr, gpointer ccontext)) \
31 MONO_EE_CALLBACK (gpointer, create_method_pointer, (MonoMethod *method, gboolean compile, MonoError *error)) \
32 MONO_EE_CALLBACK (MonoFtnDesc*, create_method_pointer_llvmonly, (MonoMethod *method, gboolean unbox, MonoError *error)) \
33 MONO_EE_CALLBACK (void, free_method, (MonoDomain *domain, MonoMethod *method)) \
34 MONO_EE_CALLBACK (MonoObject*, runtime_invoke, (MonoMethod *method, void *obj, void **params, MonoObject **exc, MonoError *error)) \
35 MONO_EE_CALLBACK (void, init_delegate, (MonoDelegate *del, MonoError *error)) \
36 MONO_EE_CALLBACK (void, delegate_ctor, (MonoObjectHandle this_obj, MonoObjectHandle target, gpointer addr, MonoError *error)) \
37 MONO_EE_CALLBACK (gpointer, get_remoting_invoke, (MonoMethod *method, gpointer imethod, MonoError *error)) \
38 MONO_EE_CALLBACK (void, set_resume_state, (MonoJitTlsData *jit_tls, MonoObject *ex, MonoJitExceptionInfo *ei, MonoInterpFrameHandle interp_frame, gpointer handler_ip)) \
39 MONO_EE_CALLBACK (void, get_resume_state, (const MonoJitTlsData *jit_tls, gboolean *has_resume_state, MonoInterpFrameHandle *interp_frame, gpointer *handler_ip)) \
40 MONO_EE_CALLBACK (gboolean, run_finally, (StackFrameInfo *frame, int clause_index, gpointer handler_ip, gpointer handler_ip_end)) \
41 MONO_EE_CALLBACK (gboolean, run_filter, (StackFrameInfo *frame, MonoException *ex, int clause_index, gpointer handler_ip, gpointer handler_ip_end)) \
42 MONO_EE_CALLBACK (void, frame_iter_init, (MonoInterpStackIter *iter, gpointer interp_exit_data)) \
43 MONO_EE_CALLBACK (gboolean, frame_iter_next, (MonoInterpStackIter *iter, StackFrameInfo *frame)) \
44 MONO_EE_CALLBACK (MonoJitInfo*, find_jit_info, (MonoDomain *domain, MonoMethod *method)) \
45 MONO_EE_CALLBACK (void, set_breakpoint, (MonoJitInfo *jinfo, gpointer ip)) \
46 MONO_EE_CALLBACK (void, clear_breakpoint, (MonoJitInfo *jinfo, gpointer ip)) \
47 MONO_EE_CALLBACK (MonoJitInfo*, frame_get_jit_info, (MonoInterpFrameHandle frame)) \
48 MONO_EE_CALLBACK (gpointer, frame_get_ip, (MonoInterpFrameHandle frame)) \
49 MONO_EE_CALLBACK (gpointer, frame_get_arg, (MonoInterpFrameHandle frame, int pos)) \
50 MONO_EE_CALLBACK (gpointer, frame_get_local, (MonoInterpFrameHandle frame, int pos)) \
51 MONO_EE_CALLBACK (gpointer, frame_get_this, (MonoInterpFrameHandle frame)) \
52 MONO_EE_CALLBACK (gpointer, frame_get_res, (MonoInterpFrameHandle frame)) \
53 MONO_EE_CALLBACK (void, frame_arg_to_data, (MonoInterpFrameHandle frame, MonoMethodSignature *sig, int index, gpointer data)) \
54 MONO_EE_CALLBACK (void, data_to_frame_arg, (MonoInterpFrameHandle frame, MonoMethodSignature *sig, int index, gconstpointer data)) \
55 MONO_EE_CALLBACK (gpointer, frame_arg_to_storage, (MonoInterpFrameHandle frame, MonoMethodSignature *sig, int index)) \
56 MONO_EE_CALLBACK (void, frame_arg_set_storage, (MonoInterpFrameHandle frame, MonoMethodSignature *sig, int index, gpointer storage)) \
57 MONO_EE_CALLBACK (MonoInterpFrameHandle, frame_get_parent, (MonoInterpFrameHandle frame)) \
58 MONO_EE_CALLBACK (void, start_single_stepping, (void)) \
59 MONO_EE_CALLBACK (void, stop_single_stepping, (void)) \
60 MONO_EE_CALLBACK (void, free_context, (gpointer)) \
61 MONO_EE_CALLBACK (void, set_optimizations, (guint32)) \
62 MONO_EE_CALLBACK (void, invalidate_transformed, (MonoDomain *domain)) \
63 MONO_EE_CALLBACK (void, cleanup, (void)) \
64 MONO_EE_CALLBACK (void, mark_stack, (gpointer thread_info, GcScanFunc func, gpointer gc_data, gboolean precise)) \
66 typedef struct _MonoEECallbacks {
68 #undef MONO_EE_CALLBACK
69 #define MONO_EE_CALLBACK(ret, name, sig) ret (*name) sig;
71 MONO_EE_CALLBACKS
73 } MonoEECallbacks;
75 #endif /* __MONO_EE_H__ */