Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
authorPaolo Molaro <lupus@oddwiz.org>
Tue, 15 Jun 2004 13:55:28 +0000 (13:55 -0000)
committerPaolo Molaro <lupus@oddwiz.org>
Tue, 15 Jun 2004 13:55:28 +0000 (13:55 -0000)
* domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
threadpool.c, threads.c: first pass at the exported API cleanup.

svn path=/trunk/mono/; revision=29601

15 files changed:
mono/interpreter/interp.h
mono/metadata/ChangeLog
mono/metadata/Makefile.am
mono/metadata/appdomain.c
mono/metadata/appdomain.h
mono/metadata/domain-internals.h [new file with mode: 0644]
mono/metadata/domain.c
mono/metadata/gc.c
mono/metadata/icall.c
mono/metadata/mono-debug.c
mono/metadata/object.c
mono/metadata/reflection.c
mono/metadata/threadpool.c
mono/metadata/threads.c
mono/mini/mini.h

index c80d76bd45026bb4e2490e88f7c98ec7ebf4d361..3b5f1ad92b7f723db36b005e210fe15500610930 100644 (file)
@@ -2,6 +2,7 @@
 #include <glib.h>
 #include <mono/metadata/loader.h>
 #include <mono/metadata/object.h>
+#include <mono/metadata/domain-internals.h>
 #include "config.h"
 
 enum {
index a834cf116cc8b88a523e4dc45172db7483e0c57a..971abd632020f8b7a0cc6fd7bae037a0f2f34863 100644 (file)
@@ -1,4 +1,10 @@
 
+Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
+
+       * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
+       domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
+       threadpool.c, threads.c: first pass at the exported API cleanup.
+
 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
 
        * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
index 80c0e7ae141ace479a2a823a49d1034bfadb81f3..28be400bea6700bd742b3357684aad704eb0338f 100644 (file)
@@ -90,6 +90,7 @@ libmonoruntime_la_SOURCES = \
 libmetadata_la_SOURCES = \
        assembly.c      \
        domain.c        \
+       domain-internals.h      \
        opcodes.c       \
        image.c         \
        metadata.c      \
index 4ae2cbed348edd8cc6f65aade174a627819df129..7ddf4e3c05408739e9fa33881f98dec52635717f 100644 (file)
@@ -16,7 +16,7 @@
 #include <mono/os/gc_wrapper.h>
 
 #include <mono/metadata/object.h>
-#include <mono/metadata/appdomain.h>
+#include <mono/metadata/domain-internals.h>
 #include <mono/metadata/assembly.h>
 #include <mono/metadata/exception.h>
 #include <mono/metadata/threads.h>
index 1536b4e7edaf4709fe91e38380cb86c715a9e583..124e62eeeedb2a66af91d96c3af83aa34a13be25 100644 (file)
@@ -23,122 +23,12 @@ typedef void (*MonoThreadStartCB) (guint32 tid, gpointer stack_start,
                                   gpointer func);
 typedef void (*MonoThreadAttachCB) (guint32 tid, gpointer stack_start);
 
-/* This is a copy of System.AppDomainSetup */
-typedef struct {
-       MonoObject object;
-       MonoString *application_base;
-       MonoString *application_name;
-       MonoString *cache_path;
-       MonoString *configuration_file;
-       MonoString *dynamic_base;
-       MonoString *license_file;
-       MonoString *private_bin_path;
-       MonoString *private_bin_path_probe;
-       MonoString *shadow_copy_directories;
-       MonoString *shadow_copy_files;
-       MonoBoolean publisher_policy;
-       MonoBoolean path_changed;
-       int loader_optimization;
-       MonoBoolean disallow_binding_redirects;
-       MonoBoolean disallow_code_downloads;
-} MonoAppDomainSetup;
-
-typedef GArray MonoJitInfoTable;
-
-typedef struct {
-       guint32  flags;
-       gpointer try_start;
-       gpointer try_end;
-       gpointer handler_start;
-       union {
-               guint32 token;
-               gpointer filter;
-       } data;
-} MonoJitExceptionInfo;
-
-typedef struct {
-       MonoMethod *method;
-       gpointer    code_start;
-       int         code_size;
-       guint32     used_regs;
-       unsigned    num_clauses;
-       signed      exvar_offset;
-       /* Whenever the code is domain neutral or 'shared' */
-       gboolean    domain_neutral:1;
-       MonoJitExceptionInfo *clauses;
-} MonoJitInfo;
-
-typedef struct {
-       MonoObject obj;
-       gint32 domain_id;
-       gint32 context_id;
-       gpointer *static_data;
-} MonoAppContext;
-
-typedef enum {
-       MONO_APPDOMAIN_CREATED,
-       MONO_APPDOMAIN_UNLOADING,
-       MONO_APPDOMAIN_UNLOADED
-} MonoAppDomainState;
-
 typedef struct _MonoAppDomain MonoAppDomain;
-
-struct _MonoDomain {
-       MonoAppDomain      *domain;
-       CRITICAL_SECTION    lock;
-       MonoMemPool        *mp;
-       MonoCodeManager    *code_mp;
-       MonoGHashTable     *env;
-       GHashTable         *assemblies;
-       MonoAssembly       *entry_assembly;
-       MonoAppDomainSetup *setup;
-       char               *friendly_name;
-       guint32            state;
-       MonoGHashTable     *ldstr_table;
-       MonoGHashTable     *class_vtable_hash;
-       MonoGHashTable     *proxy_vtable_hash;
-       MonoGHashTable     *static_data_hash;
-       GHashTable         *jit_code_hash;
-       MonoJitInfoTable   *jit_info_table;
-       /* hashtables for Reflection handles */
-       MonoGHashTable     *type_hash;
-       MonoGHashTable     *refobject_hash;
-       /* Needed by Thread:GetDomainID() */
-       gint32             domain_id;
-       /* Used when loading assemblies */
-       gchar **search_path;
-       /* Used by remoting proxies */
-       MonoMethod         *create_proxy_for_type_method;
-       MonoMethod         *private_invoke_method;
-       MonoAppContext     *default_context;
-       MonoException      *out_of_memory_ex;
-       MonoException      *null_reference_ex;
-       MonoException      *stack_overflow_ex;
-       /* Used to store offsets of thread and context static fields */
-       GHashTable         *special_static_fields;
-       GHashTable         *jump_target_hash;
-       MonoGHashTable     *class_init_trampoline_hash;
-       /* 
-        * This must be a GHashTable, since these objects can't be finalized
-        * if the hashtable contains a GC visible reference to them.
-        */
-       GHashTable         *finalizable_objects_hash;
-};
-
-/* This is a copy of System.AppDomain */
-struct _MonoAppDomain {
-       MonoMarshalByRefObject mbr;
-       MonoDomain *data;
-};
+typedef struct _MonoAppContext MonoAppContext;
+typedef struct _MonoJitInfo MonoJitInfo;
 
 extern MonoDomain *mono_root_domain;
 
-extern HANDLE mono_delegate_semaphore;
-extern CRITICAL_SECTION mono_delegate_section;
-
-#define mono_domain_lock(domain)   EnterCriticalSection(&(domain)->lock)
-#define mono_domain_unlock(domain) LeaveCriticalSection(&(domain)->lock)
-
 typedef void (*MonoDomainFunc) (MonoDomain *domain, gpointer user_data);
 
 MonoDomain*
@@ -172,6 +62,9 @@ mono_domain_get            (void);
 inline MonoDomain *
 mono_domain_get_by_id      (gint32 domainid);
 
+gint32
+mono_domain_get_id         (MonoDomain *domain);
+
 inline gboolean
 mono_domain_set            (MonoDomain *domain, gboolean force);
 
@@ -199,63 +92,6 @@ mono_domain_has_type_resolve (MonoDomain *domain);
 MonoReflectionAssembly *
 mono_domain_try_type_resolve (MonoDomain *domain, char *name, MonoObject *tb);
 
-void
-mono_jit_info_table_add    (MonoDomain *domain, MonoJitInfo *ji);
-
-MonoJitInfo *
-mono_jit_info_table_find   (MonoDomain *domain, char *addr);
-
-MonoAppDomain *
-ves_icall_System_AppDomain_getCurDomain            (void);
-
-MonoAppDomain *
-ves_icall_System_AppDomain_createDomain            (MonoString         *friendly_name,
-                                                   MonoAppDomainSetup *setup);
-
-MonoObject *
-ves_icall_System_AppDomain_GetData                 (MonoAppDomain *ad, 
-                                                   MonoString    *name);
-
-MonoReflectionAssembly *
-ves_icall_System_AppDomain_LoadAssemblyRaw         (MonoAppDomain *ad,
-                                                   MonoArray *raw_assembly, 
-                                                   MonoArray *raw_symbol_store,
-                                                   MonoObject *evidence);
-
-void
-ves_icall_System_AppDomain_SetData                 (MonoAppDomain *ad, 
-                                                   MonoString    *name, 
-                                                   MonoObject    *data);
-
-MonoAppDomainSetup *
-ves_icall_System_AppDomain_getSetup                (MonoAppDomain *ad);
-
-MonoString *
-ves_icall_System_AppDomain_getFriendlyName         (MonoAppDomain *ad);
-
-MonoArray *
-ves_icall_System_AppDomain_GetAssemblies           (MonoAppDomain *ad);
-
-MonoReflectionAssembly *
-ves_icall_System_Reflection_Assembly_LoadFrom      (MonoString *fname);
-
-MonoReflectionAssembly *
-ves_icall_System_AppDomain_LoadAssembly            (MonoAppDomain *ad, 
-                                                   MonoString *assRef,
-                                                   MonoObject    *evidence);
-
-gboolean
-ves_icall_System_AppDomain_InternalIsFinalizingForUnload (gint32 domain_id);
-
-void
-ves_icall_System_AppDomain_InternalUnload          (gint32 domain_id);
-
-gint32
-ves_icall_System_AppDomain_ExecuteAssembly         (MonoAppDomain *ad, 
-                                                   MonoString    *file, 
-                                                   MonoObject    *evidence,
-                                                   MonoArray     *args);
-
 void
 mono_context_init                                 (MonoDomain *domain);
 
@@ -265,35 +101,7 @@ mono_context_set                              (MonoAppContext *new_context);
 inline MonoAppContext * 
 mono_context_get                                  (void);
 
-MonoAppDomain * 
-ves_icall_System_AppDomain_InternalSetDomain      (MonoAppDomain *ad);
-
-MonoAppDomain * 
-ves_icall_System_AppDomain_InternalSetDomainByID   (gint32 domainid);
-
-void
-ves_icall_System_AppDomain_InternalPushDomainRef (MonoAppDomain *ad);
-
-void
-ves_icall_System_AppDomain_InternalPushDomainRefByID (gint32 domain_id);
-
-void
-ves_icall_System_AppDomain_InternalPopDomainRef (void);
-
-MonoAppContext * 
-ves_icall_System_AppDomain_InternalGetContext      (void);
-
-MonoAppContext * 
-ves_icall_System_AppDomain_InternalGetDefaultContext      (void);
-
-MonoAppContext * 
-ves_icall_System_AppDomain_InternalSetContext     (MonoAppContext *mc);
-
-gint32 
-ves_icall_System_AppDomain_GetIDFromDomain (MonoAppDomain * ad);
-
-MonoString *
-ves_icall_System_AppDomain_InternalGetProcessGuid (MonoString* newguid);
-
+MonoJitInfo *
+mono_jit_info_table_find   (MonoDomain *domain, char *addr);
 
 #endif /* _MONO_METADATA_APPDOMAIN_H_ */
diff --git a/mono/metadata/domain-internals.h b/mono/metadata/domain-internals.h
new file mode 100644 (file)
index 0000000..d8a0846
--- /dev/null
@@ -0,0 +1,204 @@
+/*
+ * Appdomain-related internal data structures and functions.
+ */
+#ifndef __MONO_METADATA_DOMAIN_INTERNALS_H__
+#define __MONO_METADATA_DOMAIN_INTERNALS_H__
+
+#include <mono/metadata/appdomain.h>
+
+extern CRITICAL_SECTION mono_delegate_section;
+
+/* This is a copy of System.AppDomainSetup */
+typedef struct {
+       MonoObject object;
+       MonoString *application_base;
+       MonoString *application_name;
+       MonoString *cache_path;
+       MonoString *configuration_file;
+       MonoString *dynamic_base;
+       MonoString *license_file;
+       MonoString *private_bin_path;
+       MonoString *private_bin_path_probe;
+       MonoString *shadow_copy_directories;
+       MonoString *shadow_copy_files;
+       MonoBoolean publisher_policy;
+       MonoBoolean path_changed;
+       int loader_optimization;
+       MonoBoolean disallow_binding_redirects;
+       MonoBoolean disallow_code_downloads;
+} MonoAppDomainSetup;
+
+typedef GArray MonoJitInfoTable;
+
+typedef struct {
+       guint32  flags;
+       gpointer try_start;
+       gpointer try_end;
+       gpointer handler_start;
+       union {
+               guint32 token;
+               gpointer filter;
+       } data;
+} MonoJitExceptionInfo;
+
+struct _MonoJitInfo {
+       MonoMethod *method;
+       gpointer    code_start;
+       int         code_size;
+       guint32     used_regs;
+       unsigned    num_clauses;
+       signed      exvar_offset;
+       /* Whenever the code is domain neutral or 'shared' */
+       gboolean    domain_neutral:1;
+       MonoJitExceptionInfo *clauses;
+};
+
+struct _MonoAppContext {
+       MonoObject obj;
+       gint32 domain_id;
+       gint32 context_id;
+       gpointer *static_data;
+};
+
+typedef enum {
+       MONO_APPDOMAIN_CREATED,
+       MONO_APPDOMAIN_UNLOADING,
+       MONO_APPDOMAIN_UNLOADED
+} MonoAppDomainState;
+
+struct _MonoDomain {
+       MonoAppDomain      *domain;
+       CRITICAL_SECTION    lock;
+       MonoMemPool        *mp;
+       MonoCodeManager    *code_mp;
+       MonoGHashTable     *env;
+       GHashTable         *assemblies;
+       MonoAssembly       *entry_assembly;
+       MonoAppDomainSetup *setup;
+       char               *friendly_name;
+       guint32            state;
+       MonoGHashTable     *ldstr_table;
+       MonoGHashTable     *class_vtable_hash;
+       MonoGHashTable     *proxy_vtable_hash;
+       MonoGHashTable     *static_data_hash;
+       GHashTable         *jit_code_hash;
+       MonoJitInfoTable   *jit_info_table;
+       /* hashtables for Reflection handles */
+       MonoGHashTable     *type_hash;
+       MonoGHashTable     *refobject_hash;
+       /* Needed by Thread:GetDomainID() */
+       gint32             domain_id;
+       /* Used when loading assemblies */
+       gchar **search_path;
+       /* Used by remoting proxies */
+       MonoMethod         *create_proxy_for_type_method;
+       MonoMethod         *private_invoke_method;
+       MonoAppContext     *default_context;
+       MonoException      *out_of_memory_ex;
+       MonoException      *null_reference_ex;
+       MonoException      *stack_overflow_ex;
+       /* Used to store offsets of thread and context static fields */
+       GHashTable         *special_static_fields;
+       GHashTable         *jump_target_hash;
+       MonoGHashTable     *class_init_trampoline_hash;
+       /* 
+        * This must be a GHashTable, since these objects can't be finalized
+        * if the hashtable contains a GC visible reference to them.
+        */
+       GHashTable         *finalizable_objects_hash;
+};
+
+/* This is a copy of System.AppDomain */
+struct _MonoAppDomain {
+       MonoMarshalByRefObject mbr;
+       MonoDomain *data;
+};
+
+#define mono_domain_lock(domain)   EnterCriticalSection(&(domain)->lock)
+#define mono_domain_unlock(domain) LeaveCriticalSection(&(domain)->lock)
+
+void
+mono_jit_info_table_add    (MonoDomain *domain, MonoJitInfo *ji);
+
+MonoAppDomain *
+ves_icall_System_AppDomain_getCurDomain            (void);
+
+MonoAppDomain *
+ves_icall_System_AppDomain_createDomain            (MonoString         *friendly_name,
+                                                   MonoAppDomainSetup *setup);
+
+MonoObject *
+ves_icall_System_AppDomain_GetData                 (MonoAppDomain *ad, 
+                                                   MonoString    *name);
+
+MonoReflectionAssembly *
+ves_icall_System_AppDomain_LoadAssemblyRaw         (MonoAppDomain *ad,
+                                                   MonoArray *raw_assembly, 
+                                                   MonoArray *raw_symbol_store,
+                                                   MonoObject *evidence);
+
+void
+ves_icall_System_AppDomain_SetData                 (MonoAppDomain *ad, 
+                                                   MonoString    *name, 
+                                                   MonoObject    *data);
+
+MonoAppDomainSetup *
+ves_icall_System_AppDomain_getSetup                (MonoAppDomain *ad);
+
+MonoString *
+ves_icall_System_AppDomain_getFriendlyName         (MonoAppDomain *ad);
+
+MonoArray *
+ves_icall_System_AppDomain_GetAssemblies           (MonoAppDomain *ad);
+
+MonoReflectionAssembly *
+ves_icall_System_Reflection_Assembly_LoadFrom      (MonoString *fname);
+
+MonoReflectionAssembly *
+ves_icall_System_AppDomain_LoadAssembly            (MonoAppDomain *ad, 
+                                                   MonoString *assRef,
+                                                   MonoObject    *evidence);
+
+gboolean
+ves_icall_System_AppDomain_InternalIsFinalizingForUnload (gint32 domain_id);
+
+void
+ves_icall_System_AppDomain_InternalUnload          (gint32 domain_id);
+
+gint32
+ves_icall_System_AppDomain_ExecuteAssembly         (MonoAppDomain *ad, 
+                                                   MonoString    *file, 
+                                                   MonoObject    *evidence,
+                                                   MonoArray     *args);
+
+MonoAppDomain * 
+ves_icall_System_AppDomain_InternalSetDomain      (MonoAppDomain *ad);
+
+MonoAppDomain * 
+ves_icall_System_AppDomain_InternalSetDomainByID   (gint32 domainid);
+
+void
+ves_icall_System_AppDomain_InternalPushDomainRef (MonoAppDomain *ad);
+
+void
+ves_icall_System_AppDomain_InternalPushDomainRefByID (gint32 domain_id);
+
+void
+ves_icall_System_AppDomain_InternalPopDomainRef (void);
+
+MonoAppContext * 
+ves_icall_System_AppDomain_InternalGetContext      (void);
+
+MonoAppContext * 
+ves_icall_System_AppDomain_InternalGetDefaultContext      (void);
+
+MonoAppContext * 
+ves_icall_System_AppDomain_InternalSetContext     (MonoAppContext *mc);
+
+gint32 
+ves_icall_System_AppDomain_GetIDFromDomain (MonoAppDomain * ad);
+
+MonoString *
+ves_icall_System_AppDomain_InternalGetProcessGuid (MonoString* newguid);
+
+#endif /* __MONO_METADATA_DOMAIN_INTERNALS_H__ */
index 8eea630cf79897635adf5c2fb3c3cb730b1ac018..c4d31ead65c170f63200283d6b2d624969ed458e 100644 (file)
@@ -16,7 +16,7 @@
 #include <mono/os/gc_wrapper.h>
 
 #include <mono/metadata/object.h>
-#include <mono/metadata/appdomain.h>
+#include <mono/metadata/domain-internals.h>
 #include <mono/metadata/assembly.h>
 #include <mono/metadata/exception.h>
 #include <mono/metadata/cil-coff.h>
@@ -661,6 +661,12 @@ mono_domain_get_by_id (gint32 domainid)
        return domain;
 }
 
+gint32
+mono_domain_get_id (MonoDomain *domain)
+{
+       return domain->domain_id;
+}
+
 void 
 mono_context_set (MonoAppContext * new_context)
 {
index df2d07d57471e7ad323dc73886e29185675c2935..7c9641045851a14f4092206e07b299374f11967b 100644 (file)
@@ -14,6 +14,7 @@
 #include <mono/metadata/threads.h>
 #include <mono/metadata/tabledefs.h>
 #include <mono/metadata/exception.h>
+#include <mono/metadata/domain-internals.h>
 #define GC_I_HIDE_POINTERS
 #include <mono/os/gc_wrapper.h>
 
index 87ddf07786c685dc5f144ff4df9cad87e035f913..e5901140734e925e5fdac252be43b7604ae69546 100644 (file)
@@ -33,7 +33,7 @@
 #include <mono/metadata/mono-endian.h>
 #include <mono/metadata/tokentype.h>
 #include <mono/metadata/unicode.h>
-#include <mono/metadata/appdomain.h>
+#include <mono/metadata/domain-internals.h>
 #include <mono/metadata/marshal.h>
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/rand.h>
index bac2613f5255bb154571260b8635f18f5c369d08..8cf61e5719d668a249d97867fafb92396d114695 100644 (file)
@@ -421,13 +421,14 @@ MonoDebugDomainData *
 mono_debug_get_domain_data (MonoDebugHandle *handle, MonoDomain *domain)
 {
        MonoDebugDomainData *data;
+       int domain_id = mono_domain_get_id (domain);
 
        for (data = handle->_priv->domain_table; data; data = data->_priv->next)
-               if (data->domain_id == domain->domain_id)
+               if (data->domain_id == domain_id)
                        return data;
 
        data = g_new0 (MonoDebugDomainData, 1);
-       data->domain_id = domain->domain_id;
+       data->domain_id = domain_id;
        data->jit = g_new0 (MonoDebugMethodJitInfo *, read32(&(handle->symfile->offset_table->_method_count)) + 1);
 
        data->_priv = g_new0 (MonoDebugDomainDataPriv, 1);
index a1729b6519b907e3ed902ec23ed0c81020a73038..aa32f23815b4188f494cc301d7c42a4833f86142 100644 (file)
@@ -19,7 +19,7 @@
 #include <mono/metadata/object.h>
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/exception.h>
-#include <mono/metadata/appdomain.h>
+#include <mono/metadata/domain-internals.h>
 #include <mono/metadata/assembly.h>
 #include <mono/metadata/threadpool.h>
 #include <mono/metadata/marshal.h>
index 7691e4e21d3536e8ad86044883c87c54b6946bfa..145bc35ee4953dbd60542cd567cdb73f9e0ec1d1 100644 (file)
@@ -12,7 +12,7 @@
 #include "mono/metadata/reflection.h"
 #include "mono/metadata/tabledefs.h"
 #include "mono/metadata/tokentype.h"
-#include "mono/metadata/appdomain.h"
+#include "mono/metadata/domain-internals.h"
 #include "mono/metadata/opcodes.h"
 #include "mono/metadata/assembly.h"
 #include <mono/metadata/exception.h>
index 0b43eb88e31aeddcd788e6ce48e316f9fcb13c0c..d455a563436c52974bb5b1e2f680e80b72554e4f 100644 (file)
@@ -17,7 +17,7 @@
 #define _WIN32_WINNT 0x0500
 #endif
 
-#include <mono/metadata/appdomain.h>
+#include <mono/metadata/domain-internals.h>
 #include <mono/metadata/tabledefs.h>
 #include <mono/metadata/threads.h>
 #include <mono/metadata/exception.h>
index 5dd4d2a3f2403514f897f652a53c869ae1c7e051..43ff2bf115282b05cb04d8cd3571032cb3195036 100644 (file)
@@ -19,7 +19,7 @@
 #include <string.h>
 
 #include <mono/metadata/object.h>
-#include <mono/metadata/appdomain.h>
+#include <mono/metadata/domain-internals.h>
 #include <mono/metadata/profiler-private.h>
 #include <mono/metadata/threads.h>
 #include <mono/metadata/threadpool.h>
index 7d050708b58be92c5adffab3b20e97704dce6ee1..026cb4346faa4906e5d7dc000b5df023d605c9c8 100644 (file)
@@ -11,6 +11,7 @@
 #include <mono/metadata/object.h>
 #include <mono/metadata/opcodes.h>
 #include <mono/metadata/tabledefs.h>
+#include <mono/metadata/domain-internals.h>
 #include <mono/metadata/profiler-private.h>
 
 #include "mini-arch.h"