Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions mono/metadata/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -231,10 +231,6 @@ boehm_sources = \
boehm-gc.c

sgen_sources = \
sgen-os-posix.c \
sgen-os-mach.c \
sgen-os-win32.c \
sgen-os-coop.c \
sgen-bridge.c \
sgen-bridge.h \
sgen-bridge-internal.h \
Expand Down
22 changes: 15 additions & 7 deletions mono/metadata/marshal.c
Original file line number Diff line number Diff line change
Expand Up @@ -242,10 +242,10 @@ mono_marshal_init (void)
mono_remoting_init ();

#ifdef USE_COOP_GC
register_icall (mono_threads_prepare_blocking, "mono_threads_prepare_blocking", "int", FALSE);
register_icall (mono_threads_finish_blocking, "mono_threads_finish_blocking", "void int", FALSE);
register_icall (mono_threads_reset_blocking_start, "mono_threads_reset_blocking_start","int", TRUE);
register_icall (mono_threads_reset_blocking_end, "mono_threads_reset_blocking_end","void int", TRUE);
register_icall (mono_threads_prepare_blocking, "mono_threads_prepare_blocking", "ptr ptr", FALSE);
register_icall (mono_threads_finish_blocking, "mono_threads_finish_blocking", "void ptr ptr", FALSE);
register_icall (mono_threads_reset_blocking_start, "mono_threads_reset_blocking_start","ptr ptr", TRUE);
register_icall (mono_threads_reset_blocking_end, "mono_threads_reset_blocking_end","void ptr ptr", TRUE);
#endif
}
}
Expand Down Expand Up @@ -7061,7 +7061,7 @@ mono_marshal_emit_native_wrapper (MonoImage *image, MonoMethodBuilder *mb, MonoM
int type, param_shift = 0;
static MonoMethodSignature *get_last_error_sig = NULL;
#ifdef USE_COOP_GC
int coop_gc_var;
int coop_gc_stack_dummy, coop_gc_var;
#endif

memset (&m, 0, sizeof (m));
Expand Down Expand Up @@ -7101,7 +7101,9 @@ mono_marshal_emit_native_wrapper (MonoImage *image, MonoMethodBuilder *mb, MonoM
}

#ifdef USE_COOP_GC
/* local 4, the local to be used when calling the suspend funcs */
/* local 4, dummy local used to get a stack address for suspend funcs */
coop_gc_stack_dummy = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
/* local 5, the local to be used when calling the suspend funcs */
coop_gc_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
#endif

Expand Down Expand Up @@ -7133,6 +7135,7 @@ mono_marshal_emit_native_wrapper (MonoImage *image, MonoMethodBuilder *mb, MonoM
}

#ifdef USE_COOP_GC
mono_mb_emit_ldloc_addr (mb, coop_gc_stack_dummy);
mono_mb_emit_icall (mb, mono_threads_prepare_blocking);
mono_mb_emit_stloc (mb, coop_gc_var);
#endif
Expand Down Expand Up @@ -7183,6 +7186,7 @@ mono_marshal_emit_native_wrapper (MonoImage *image, MonoMethodBuilder *mb, MonoM

#ifdef USE_COOP_GC
mono_mb_emit_ldloc (mb, coop_gc_var);
mono_mb_emit_ldloc_addr (mb, coop_gc_stack_dummy);
mono_mb_emit_icall (mb, mono_threads_finish_blocking);
#endif

Expand Down Expand Up @@ -7686,7 +7690,7 @@ mono_marshal_emit_managed_wrapper (MonoMethodBuilder *mb, MonoMethodSignature *i
int i, *tmp_locals;
gboolean closed = FALSE;
#ifdef USE_COOP_GC
int coop_gc_var;
int coop_gc_var, coop_gc_dummy_local;
#endif

sig = m->sig;
Expand Down Expand Up @@ -7717,6 +7721,8 @@ mono_marshal_emit_managed_wrapper (MonoMethodBuilder *mb, MonoMethodSignature *i
/* local 4, the local to be used when calling the reset_blocking funcs */
/* tons of code hardcode 3 to be the return var */
coop_gc_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
/* local 5, the local used to get a stack address for suspend funcs */
coop_gc_dummy_local = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
#endif

mono_mb_emit_icon (mb, 0);
Expand All @@ -7731,6 +7737,7 @@ mono_marshal_emit_managed_wrapper (MonoMethodBuilder *mb, MonoMethodSignature *i

#ifdef USE_COOP_GC
/* XXX can we merge reset_blocking_start with JIT_ATTACH above and save one call? */
mono_mb_emit_ldloc_addr (mb, coop_gc_dummy_local);
mono_mb_emit_icall (mb, mono_threads_reset_blocking_start);
mono_mb_emit_stloc (mb, coop_gc_var);
#endif
Expand Down Expand Up @@ -7866,6 +7873,7 @@ mono_marshal_emit_managed_wrapper (MonoMethodBuilder *mb, MonoMethodSignature *i
#ifdef USE_COOP_GC
/* XXX merge reset_blocking_end with detach */
mono_mb_emit_ldloc (mb, coop_gc_var);
mono_mb_emit_ldloc_addr (mb, coop_gc_dummy_local);
mono_mb_emit_icall (mb, mono_threads_reset_blocking_end);
#endif

Expand Down
5 changes: 0 additions & 5 deletions mono/metadata/sgen-client-mono.h
Original file line number Diff line number Diff line change
Expand Up @@ -655,11 +655,6 @@ sgen_client_binary_protocol_gray_dequeue (gpointer queue, gpointer cursor, gpoin
{
}

int sgen_thread_handshake (BOOL suspend);
gboolean sgen_suspend_thread (SgenThreadInfo *info);
gboolean sgen_resume_thread (SgenThreadInfo *info);
void sgen_wait_for_suspend_ack (int count);

#ifdef HAVE_KW_THREAD
extern __thread SgenThreadInfo *sgen_thread_info;
#define TLAB_ACCESS_INIT
Expand Down
20 changes: 13 additions & 7 deletions mono/metadata/sgen-mono.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
#include "metadata/gc-internal.h"
#include "utils/mono-memory-model.h"
#include "utils/mono-logger-internal.h"
#include "utils/mono-threads.h"

#ifdef HEAVY_STATISTICS
static guint64 stat_wbarrier_set_arrayref = 0;
Expand Down Expand Up @@ -190,6 +191,18 @@ mono_gc_wbarrier_value_copy_bitmap (gpointer _dest, gpointer _src, int size, uns
sgen_wbarrier_value_copy_bitmap (_dest, _src, size, bitmap);
}

int
mono_gc_get_suspend_signal (void)
{
return mono_threads_posix_get_suspend_signal ();
}

int
mono_gc_get_restart_signal (void)
{
return mono_threads_posix_get_restart_signal ();
}

static MonoMethod *write_barrier_conc_method;
static MonoMethod *write_barrier_noconc_method;

Expand Down Expand Up @@ -2864,13 +2877,6 @@ sgen_client_init (void)
}
#endif

/*
* This needs to happen before any internal allocations because
* it inits the small id which is required for hazard pointer
* operations.
*/
sgen_os_init ();

mono_gc_register_thread (&dummy);
}

Expand Down
81 changes: 0 additions & 81 deletions mono/metadata/sgen-os-coop.c

This file was deleted.

159 changes: 0 additions & 159 deletions mono/metadata/sgen-os-mach.c

This file was deleted.

Loading