Interp sdb (#4911)
[mono.git] / mono / mini / interp / interp.h
1 /**
2  * \file
3  */
4
5 #ifndef __MONO_MINI_INTERPRETER_H__
6 #define __MONO_MINI_INTERPRETER_H__
7 #include <mono/mini/mini.h>
8
9 #define INTERP_ICALL_TRAMP_IARGS 12
10 #define INTERP_ICALL_TRAMP_FARGS 4
11
12 struct _InterpMethodArguments {
13         size_t ilen;
14         gpointer *iargs;
15         size_t flen;
16         double *fargs;
17         gpointer *retval;
18         size_t is_float_ret;
19 };
20
21 typedef struct _InterpMethodArguments InterpMethodArguments;
22
23
24 typedef struct _MonoInterpStackIter MonoInterpStackIter;
25
26 /* Needed for stack allocation */
27 struct _MonoInterpStackIter {
28         gpointer dummy [8];
29 };
30
31 typedef gpointer MonoInterpFrameHandle;
32
33 int
34 mono_interp_regression_list (int verbose, int count, char *images []);
35
36 void
37 mono_interp_init (void);
38
39 gpointer
40 mono_interp_create_method_pointer (MonoMethod *method, MonoError *error);
41
42 MonoObject*
43 mono_interp_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObject **exc, MonoError *error);
44
45 void
46 mono_interp_init_delegate (MonoDelegate *del);
47
48 gpointer
49 mono_interp_create_trampoline (MonoDomain *domain, MonoMethod *method, MonoError *error);
50
51 void
52 mono_interp_parse_options (const char *options);
53
54 void
55 interp_walk_stack_with_ctx (MonoInternalStackWalk func, MonoContext *ctx, MonoUnwindOptions options, void *user_data);
56
57 void
58 mono_interp_set_resume_state (MonoJitTlsData *jit_tls, MonoException *ex, MonoInterpFrameHandle interp_frame, gpointer handler_ip);
59
60 void
61 mono_interp_run_finally (StackFrameInfo *frame, int clause_index, gpointer handler_ip);
62
63 void
64 mono_interp_frame_iter_init (MonoInterpStackIter *iter, gpointer interp_exit_data);
65
66 gboolean
67 mono_interp_frame_iter_next (MonoInterpStackIter *iter, StackFrameInfo *frame);
68
69 MonoJitInfo*
70 mono_interp_find_jit_info (MonoDomain *domain, MonoMethod *method);
71
72 void
73 mono_interp_set_breakpoint (MonoJitInfo *jinfo, gpointer ip);
74
75 void
76 mono_interp_clear_breakpoint (MonoJitInfo *jinfo, gpointer ip);
77
78 MonoJitInfo*
79 mono_interp_frame_get_jit_info (MonoInterpFrameHandle frame);
80
81 gpointer
82 mono_interp_frame_get_ip (MonoInterpFrameHandle frame);
83
84 gpointer
85 mono_interp_frame_get_arg (MonoInterpFrameHandle frame, int pos);
86
87 gpointer
88 mono_interp_frame_get_local (MonoInterpFrameHandle frame, int pos);
89
90 gpointer
91 mono_interp_frame_get_this (MonoInterpFrameHandle frame);
92
93 void
94 mono_interp_start_single_stepping (void);
95
96 void
97 mono_interp_stop_single_stepping (void);
98
99 #endif /* __MONO_MINI_INTERPRETER_H__ */