[interp/tramp] use MONO_STRUCT_OFFSET infrastructure and extract constants
[mono.git] / mono / mini / interp / interp.h
index 59428a882f28fc100fec9cd0abd4e9055d4713fc..8ec9862e2e5a7c4d13f1f0960a0e691406ace07c 100644 (file)
@@ -1,7 +1,33 @@
+/**
+ * \file
+ */
+
 #ifndef __MONO_MINI_INTERPRETER_H__
 #define __MONO_MINI_INTERPRETER_H__
 #include <mono/mini/mini.h>
 
+#define INTERP_ICALL_TRAMP_IARGS 12
+#define INTERP_ICALL_TRAMP_FARGS 3
+
+struct _InterpMethodArguments {
+       size_t ilen;
+       gpointer *iargs;
+       size_t flen;
+       double *fargs;
+       gpointer *retval;
+       size_t is_float_ret;
+};
+
+typedef struct _InterpMethodArguments InterpMethodArguments;
+
+
+typedef struct _MonoInterpStackIter MonoInterpStackIter;
+
+/* Needed for stack allocation */
+struct _MonoInterpStackIter {
+       gpointer dummy [8];
+};
+
 int
 mono_interp_regression_list (int verbose, int count, char *images []);
 
@@ -17,6 +43,25 @@ mono_interp_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoOb
 void
 mono_interp_init_delegate (MonoDelegate *del);
 
+gpointer
+mono_interp_create_trampoline (MonoDomain *domain, MonoMethod *method, MonoError *error);
+
+void
+mono_interp_parse_options (const char *options);
+
 void
 interp_walk_stack_with_ctx (MonoInternalStackWalk func, MonoContext *ctx, MonoUnwindOptions options, void *user_data);
+
+void
+mono_interp_set_resume_state (MonoException *ex, StackFrameInfo *frame, gpointer handler_ip);
+
+void
+mono_interp_run_finally (StackFrameInfo *frame, int clause_index, gpointer handler_ip);
+
+void
+mono_interp_frame_iter_init (MonoInterpStackIter *iter, gpointer interp_exit_data);
+
+gboolean
+mono_interp_frame_iter_next (MonoInterpStackIter *iter, StackFrameInfo *frame);
+
 #endif /* __MONO_MINI_INTERPRETER_H__ */