From: Jay Krell Date: Thu, 24 Oct 2019 21:59:11 +0000 (-0700) Subject: [cxx] externC for some icalls, for wasm and ios. (mono/mono#17444) X-Git-Tag: submit/tizen/20210909.063632~10331^2~5^2~288 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ee3b5b27db493abc6440337a5bb360e6c235882b;p=platform%2Fupstream%2Fdotnet%2Fruntime.git [cxx] externC for some icalls, for wasm and ios. (mono/mono#17444) Maybe all JIT icalls? Commit migrated from https://github.com/mono/mono/commit/4ef7c566af91722821031f11d704cae2061937e3 --- diff --git a/src/mono/mono/metadata/icall-table.h b/src/mono/mono/metadata/icall-table.h index acc3872..47a8d87 100644 --- a/src/mono/mono/metadata/icall-table.h +++ b/src/mono/mono/metadata/icall-table.h @@ -10,6 +10,7 @@ #include #include #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); diff --git a/src/mono/mono/metadata/icalls.h b/src/mono/mono/metadata/icalls.h index 281020f..4d389a6 100644 --- a/src/mono/mono/metadata/icalls.h +++ b/src/mono/mono/metadata/icalls.h @@ -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__ diff --git a/src/mono/mono/metadata/marshal.h b/src/mono/mono/metadata/marshal.h index c361e5f..50094c4 100644 --- a/src/mono/mono/metadata/marshal.h +++ b/src/mono/mono/metadata/marshal.h @@ -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 diff --git a/src/mono/mono/metadata/monitor.h b/src/mono/mono/metadata/monitor.h index 8646a58..711fe17 100644 --- a/src/mono/mono/metadata/monitor.h +++ b/src/mono/mono/metadata/monitor.h @@ -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); diff --git a/src/mono/mono/metadata/object-internals.h b/src/mono/mono/metadata/object-internals.h index a65a164..c7371413 100644 --- a/src/mono/mono/metadata/object-internals.h +++ b/src/mono/mono/metadata/object-internals.h @@ -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); diff --git a/src/mono/mono/metadata/threads-types.h b/src/mono/mono/metadata/threads-types.h index 2986739..909ad4f 100644 --- a/src/mono/mono/metadata/threads-types.h +++ b/src/mono/mono/metadata/threads-types.h @@ -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 diff --git a/src/mono/mono/mini/trace.h b/src/mono/mono/mini/trace.h index 40eb7e0..86be5f9 100644 --- a/src/mono/mono/mini/trace.h +++ b/src/mono/mono/mini/trace.h @@ -6,10 +6,13 @@ #define __MONO_TRACE_H__ #include #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); diff --git a/src/mono/mono/utils/mono-threads-coop.h b/src/mono/mono/utils/mono-threads-coop.h index 14975a0..1939302 100644 --- a/src/mono/mono/utils/mono-threads-coop.h +++ b/src/mono/mono/utils/mono-threads-coop.h @@ -17,12 +17,14 @@ #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);