[runtime] Avoid using a static library initializer. (#4106)

Avoid using a static library initializer by using a constant recursive mutex
initializer.

Static initializers are bad because there's a significant overhead to executing them.
This commit is contained in:
Rolf Bjarne Kvinge 2018-05-22 08:53:19 -04:00 коммит произвёл GitHub
Родитель 07356b8391
Коммит 06834b2a14
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 1 добавлений и 12 удалений

Просмотреть файл

@ -41,18 +41,7 @@
#include "runtime-internal.h"
//#define DEBUG_REF_COUNTING
static pthread_mutex_t refcount_mutex;
static void
x_init_mutex () __attribute__ ((constructor));
static void
x_init_mutex ()
{
pthread_mutexattr_t attr;
pthread_mutexattr_init (&attr);
pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
pthread_mutex_init (&refcount_mutex, &attr);
}
static pthread_mutex_t refcount_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
void *
xamarin_marshal_return_value (MonoType *mtype, const char *type, MonoObject *retval, bool retain, MonoMethod *method, MethodDescription *desc, guint32 *exception_gchandle)