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.
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>
18 #define MONO_EE_API_VERSION 0x8
20 typedef struct _MonoInterpStackIter MonoInterpStackIter
;
22 /* Needed for stack allocation */
23 struct _MonoInterpStackIter
{
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__ */