[cxx] externC for some icalls, for wasm and ios. (mono/mono#17444)
authorJay Krell <jaykrell@microsoft.com>
Thu, 24 Oct 2019 21:59:11 +0000 (14:59 -0700)
committerAleksey Kliger (λgeek) <alklig@microsoft.com>
Thu, 24 Oct 2019 21:59:11 +0000 (17:59 -0400)
Maybe all JIT icalls?

Commit migrated from https://github.com/mono/mono/commit/4ef7c566af91722821031f11d704cae2061937e3

src/mono/mono/metadata/icall-table.h
src/mono/mono/metadata/icalls.h
src/mono/mono/metadata/marshal.h
src/mono/mono/metadata/monitor.h
src/mono/mono/metadata/object-internals.h
src/mono/mono/metadata/threads-types.h
src/mono/mono/mini/trace.h
src/mono/mono/utils/mono-threads-coop.h

index acc3872..47a8d87 100644 (file)
@@ -10,6 +10,7 @@
 #include <glib.h>
 #include <mono/utils/mono-publib.h>
 #include "marshal.h"
+#include "icalls.h"
 
 #define MONO_ICALL_TABLE_CALLBACKS_VERSION 2
 
@@ -19,6 +20,7 @@ typedef struct {
        const char* (*lookup_icall_symbol) (gpointer func);
 } MonoIcallTableCallbacks;
 
+ICALL_EXTERN_C
 void
 mono_install_icall_table_callbacks (const MonoIcallTableCallbacks *cb);
 
index 281020f..4d389a6 100644 (file)
@@ -9,9 +9,11 @@
 
 #ifdef ENABLE_ICALL_EXPORT
 #define ICALL_EXPORT MONO_API
+#define ICALL_EXTERN_C G_EXTERN_C
 #else
 /* Can't be static as icall.c defines icalls referenced by icall-tables.c */
 #define ICALL_EXPORT /* nothing */
+#define ICALL_EXTERN_C /* nothing */
 #endif
 
 #endif // __MONO_METADATA_ICALLS_H__
index c361e5f..50094c4 100644 (file)
@@ -390,6 +390,7 @@ mono_marshal_ftnptr_eh_callback (guint32 gchandle);
 MONO_PAL_API void
 mono_marshal_set_last_error (void);
 
+ICALL_EXTERN_C
 void
 mono_marshal_clear_last_error (void);
 
@@ -529,9 +530,11 @@ mono_marshal_unlock_internal (void);
 void * 
 mono_marshal_alloc (gsize size, MonoError *error);
 
+ICALL_EXTERN_C
 void 
 mono_marshal_free (gpointer ptr);
 
+ICALL_EXTERN_C
 void
 mono_marshal_free_array (gpointer *ptr, int size);
 
@@ -544,9 +547,11 @@ mono_cominterop_release_all_rcws (void);
 MONO_API void *
 mono_marshal_string_to_utf16 (MonoString *s);
 
+ICALL_EXTERN_C
 void
 mono_marshal_set_last_error_windows (int error);
 
+ICALL_EXTERN_C
 void 
 mono_struct_delete_old (MonoClass *klass, char *ptr);
 
@@ -555,12 +560,15 @@ mono_emit_marshal (EmitMarshalContext *m, int argnum, MonoType *t,
              MonoMarshalSpec *spec, int conv_arg, 
              MonoType **conv_arg_type, MarshalAction action);
 
+ICALL_EXTERN_C
 MonoObject *
 mono_marshal_isinst_with_cache (MonoObject *obj, MonoClass *klass, uintptr_t *cache);
 
+ICALL_EXTERN_C
 MonoAsyncResult *
 mono_delegate_begin_invoke (MonoDelegate *delegate, gpointer *params);
 
+ICALL_EXTERN_C
 MonoObject *
 mono_delegate_end_invoke (MonoDelegate *delegate, gpointer *params);
 
@@ -591,6 +599,7 @@ mono_pinvoke_is_unicode (MonoMethodPInvoke *piinfo);
 gboolean
 mono_marshal_need_free (MonoType *t, MonoMethodPInvoke *piinfo, MonoMarshalSpec *spec);
 
+ICALL_EXTERN_C
 MonoObject* mono_marshal_get_type_object (MonoClass *klass);
 
 ICALL_EXPORT
index 8646a58..711fe17 100644 (file)
@@ -106,15 +106,19 @@ mono_monitor_init (void);
 void
 mono_monitor_cleanup (void);
 
+ICALL_EXTERN_C
 MonoBoolean
 mono_monitor_enter_internal (MonoObject *obj);
 
+ICALL_EXTERN_C
 void
 mono_monitor_enter_v4_internal (MonoObject *obj, MonoBoolean *lock_taken);
 
+ICALL_EXTERN_C
 guint32
 mono_monitor_enter_fast (MonoObject *obj);
 
+ICALL_EXTERN_C
 guint32
 mono_monitor_enter_v4_fast (MonoObject *obj, MonoBoolean *lock_taken);
 
index a65a164..c737141 100644 (file)
@@ -2292,6 +2292,7 @@ mono_string_hash_internal (MonoString *s);
 int
 mono_object_hash_internal (MonoObject* obj);
 
+ICALL_EXTERN_C
 void
 mono_value_copy_internal (void* dest, const void* src, MonoClass *klass);
 
@@ -2376,6 +2377,7 @@ mono_gchandle_new_internal (MonoObject *obj, mono_bool pinned);
 uint32_t
 mono_gchandle_new_weakref_internal (MonoObject *obj, mono_bool track_resurrection);
 
+ICALL_EXTERN_C
 MonoObject*
 mono_gchandle_get_target_internal (uint32_t gchandle);
 
@@ -2417,6 +2419,7 @@ mono_gc_wbarrier_generic_store_internal (void volatile* ptr, MonoObject* value);
 void
 mono_gc_wbarrier_generic_store_atomic_internal (void *ptr, MonoObject *value);
 
+ICALL_EXTERN_C
 void
 mono_gc_wbarrier_generic_nostore_internal (void* ptr);
 
index 2986739..909ad4f 100644 (file)
@@ -371,6 +371,7 @@ gboolean mono_thread_has_appdomain_ref (MonoThread *thread, MonoDomain *domain);
 
 gboolean mono_thread_interruption_requested (void);
 
+ICALL_EXTERN_C
 MonoException*
 mono_thread_interruption_checkpoint (void);
 
@@ -383,6 +384,7 @@ mono_thread_interruption_checkpoint_void (void);
 MonoExceptionHandle
 mono_thread_interruption_checkpoint_handle (void);
 
+ICALL_EXTERN_C
 MonoException* mono_thread_force_interruption_checkpoint_noraise (void);
 
 /**
@@ -397,7 +399,10 @@ MonoException* mono_thread_force_interruption_checkpoint_noraise (void);
 extern gint32 mono_thread_interruption_request_flag;
 
 uint32_t mono_alloc_special_static_data (uint32_t static_type, uint32_t size, uint32_t align, uintptr_t *bitmap, int numbits);
+
+ICALL_EXTERN_C
 void*    mono_get_special_static_data   (uint32_t offset);
+
 gpointer mono_get_special_static_data_for_thread (MonoInternalThread *thread, guint32 offset);
 
 void
index 40eb7e0..86be5f9 100644 (file)
@@ -6,10 +6,13 @@
 #define __MONO_TRACE_H__
 #include <glib.h>
 #include "mono/utils/mono-compiler.h"
+#include "mono/metadata/icalls.h"
 
+ICALL_EXTERN_C
 void
 mono_trace_enter_method (MonoMethod *method, MonoProfilerCallContext *ctx);
 
+ICALL_EXTERN_C
 void 
 mono_trace_leave_method (MonoMethod *method, MonoProfilerCallContext *ctx);
 
index 14975a0..1939302 100644 (file)
 #include "checked-build.h"
 #include "mono-threads.h"
 #include "mono-threads-api.h"
+#include "mono/metadata/icalls.h"
 
 /* JIT specific interface */
 extern volatile size_t mono_polling_required;
 
 /* Internal API */
 
+ICALL_EXTERN_C
 void
 mono_threads_state_poll (void);