Aot runtime noraise3 (#3054)
[mono.git] / mono / mini / jit.h
index 080531b607606fb3cff37f9b19f1366bf77e3efb..ed5eca5248beb4e1d7bff51a183720e7cc3e2498 100644 (file)
 
 MONO_BEGIN_DECLS
 
-MonoDomain * 
+MONO_API MonoDomain * 
 mono_jit_init              (const char *file);
 
-MonoDomain * 
+MONO_API MonoDomain * 
 mono_jit_init_version      (const char *root_domain_name, const char *runtime_version);
 
-int
+MONO_API int
 mono_jit_exec              (MonoDomain *domain, MonoAssembly *assembly, 
                            int argc, char *argv[]);
-void        
+MONO_API void        
 mono_jit_cleanup           (MonoDomain *domain);
 
-mono_bool
+MONO_API mono_bool
 mono_jit_set_trace_options (const char* options);
 
-void
+MONO_API void
 mono_set_signal_chaining   (mono_bool chain_signals);
 
-void
+MONO_API void
+mono_set_crash_chaining   (mono_bool chain_signals);
+
+/**
+ * This function is deprecated, use mono_jit_set_aot_mode instead.
+ */
+MONO_API void
 mono_jit_set_aot_only      (mono_bool aot_only);
 
+/**
+ * Allows control over our AOT (Ahead-of-time) compilation mode.
+ */
+typedef enum {
+       /* Disables AOT mode */
+       MONO_AOT_MODE_NONE,
+       /* Enables normal AOT mode, equivalent to mono_jit_set_aot_only (false) */
+       MONO_AOT_MODE_NORMAL,
+       /* Enables hybrid AOT mode, JIT can still be used for wrappers */
+       MONO_AOT_MODE_HYBRID,
+       /* Enables full AOT mode, JIT is disabled and not allowed,
+        * equivalent to mono_jit_set_aot_only (true) */
+       MONO_AOT_MODE_FULL,
+       /* Same as full, but use only llvm compiled code */
+       MONO_AOT_MODE_LLVMONLY
+} MonoAotMode;
+
+MONO_API void
+mono_jit_set_aot_mode      (MonoAotMode mode);
+
 /* Allow embedders to decide wherther to actually obey breakpoint instructions
  * in specific methods (works for both break IL instructions and Debugger.Break ()
  * method calls).
@@ -50,12 +76,20 @@ typedef enum {
 } MonoBreakPolicy;
 
 typedef MonoBreakPolicy (*MonoBreakPolicyFunc) (MonoMethod *method);
-void mono_set_break_policy (MonoBreakPolicyFunc policy_callback);
+MONO_API void mono_set_break_policy (MonoBreakPolicyFunc policy_callback);
 
-void
+MONO_API void
 mono_jit_parse_options     (int argc, char * argv[]);
 
-char*       mono_get_runtime_build_info    (void);
+MONO_API char*       mono_get_runtime_build_info    (void);
+
+/* The following APIs are not stable. Avoid if possible. */
+
+MONO_API MonoJitInfo *
+mono_get_jit_info_from_method (MonoDomain *domain, MonoMethod *method);
+
+MONO_API MONO_RT_EXTERNAL_ONLY void *
+mono_aot_get_method (MonoDomain *domain, MonoMethod *method);
 
 MONO_END_DECLS