Bitcode mixed mode work. (#12312)
[mono-project.git] / mono / mini / ee.h
blob245d79ce5b342faa00dc78378b4a47449354be03
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 * See the LICENSE file in the project root for more information.
5 */
7 #include <config.h>
8 #include <mono/metadata/metadata.h>
9 #include <mono/metadata/object.h>
10 #include <mono/utils/mono-compiler.h>
11 #include <mono/utils/mono-error.h>
12 #include <mono/utils/mono-publib.h>
13 #include <mono/eglib/glib.h>
15 #ifndef __MONO_EE_H__
16 #define __MONO_EE_H__
18 #define MONO_EE_API_VERSION 0x8
20 typedef struct _MonoInterpStackIter MonoInterpStackIter;
22 /* Needed for stack allocation */
23 struct _MonoInterpStackIter {
24 gpointer dummy [8];
27 typedef gpointer MonoInterpFrameHandle;
29 struct _MonoEECallbacks {
30 void (*entry_from_trampoline) (gpointer ccontext, gpointer imethod);
31 gpointer (*create_method_pointer) (MonoMethod *method, gboolean compile, MonoError *error);
32 MonoObject* (*runtime_invoke) (MonoMethod *method, void *obj, void **params, MonoObject **exc, MonoError *error);
33 void (*init_delegate) (MonoDelegate *del);
34 void (*delegate_ctor) (MonoObjectHandle this_obj, MonoObjectHandle target, gpointer addr, MonoError *error);
35 gpointer (*get_remoting_invoke) (MonoMethod *method, gpointer imethod, MonoError *error);
36 void (*set_resume_state) (MonoJitTlsData *jit_tls, MonoException *ex, MonoJitExceptionInfo *ei, MonoInterpFrameHandle interp_frame, gpointer handler_ip);
37 gboolean (*run_finally) (StackFrameInfo *frame, int clause_index, gpointer handler_ip, gpointer handler_ip_end);
38 gboolean (*run_filter) (StackFrameInfo *frame, MonoException *ex, int clause_index, gpointer handler_ip, gpointer handler_ip_end);
39 void (*frame_iter_init) (MonoInterpStackIter *iter, gpointer interp_exit_data);
40 gboolean (*frame_iter_next) (MonoInterpStackIter *iter, StackFrameInfo *frame);
41 MonoJitInfo* (*find_jit_info) (MonoDomain *domain, MonoMethod *method);
42 void (*set_breakpoint) (MonoJitInfo *jinfo, gpointer ip);
43 void (*clear_breakpoint) (MonoJitInfo *jinfo, gpointer ip);
44 MonoJitInfo* (*frame_get_jit_info) (MonoInterpFrameHandle frame);
45 gpointer (*frame_get_ip) (MonoInterpFrameHandle frame);
46 gpointer (*frame_get_arg) (MonoInterpFrameHandle frame, int pos);
47 gpointer (*frame_get_local) (MonoInterpFrameHandle frame, int pos);
48 gpointer (*frame_get_this) (MonoInterpFrameHandle frame);
49 void (*frame_arg_to_data) (MonoInterpFrameHandle frame, MonoMethodSignature *sig, int index, gpointer data);
50 void (*data_to_frame_arg) (MonoInterpFrameHandle frame, MonoMethodSignature *sig, int index, gpointer data);
51 gpointer (*frame_arg_to_storage) (MonoInterpFrameHandle frame, MonoMethodSignature *sig, int index);
52 void (*frame_arg_set_storage) (MonoInterpFrameHandle frame, MonoMethodSignature *sig, int index, gpointer storage);
53 MonoInterpFrameHandle (*frame_get_parent) (MonoInterpFrameHandle frame);
54 void (*start_single_stepping) (void);
55 void (*stop_single_stepping) (void);
58 typedef struct _MonoEECallbacks MonoEECallbacks;
60 #endif /* __MONO_EE_H__ */