Author: zoltan
Date: 2005-11-23 16:51:54 -0500 (Wed, 23 Nov 2005)
New Revision: 53418

Modified:
   trunk/mono/mono/metadata/ChangeLog
   trunk/mono/mono/metadata/icall.c
   trunk/mono/mono/metadata/threads-types.h
   trunk/mono/mono/metadata/threads.c
Log:
2005-11-23  Zoltan Varga  <[EMAIL PROTECTED]>

        * icall.c threads-types.h threads.c: Add Exchange<T> icall.


Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2005-11-23 21:48:58 UTC (rev 53417)
+++ trunk/mono/mono/metadata/ChangeLog  2005-11-23 21:51:54 UTC (rev 53418)
@@ -1,3 +1,7 @@
+2005-11-23  Zoltan Varga  <[EMAIL PROTECTED]>
+
+       * icall.c threads-types.h threads.c: Add Exchange<T> icall.
+
 2005-11-23  Raja R Harinath  <[EMAIL PROTECTED]>
            Ankit Jain  <[EMAIL PROTECTED]>
 

Modified: trunk/mono/mono/metadata/icall.c
===================================================================
--- trunk/mono/mono/metadata/icall.c    2005-11-23 21:48:58 UTC (rev 53417)
+++ trunk/mono/mono/metadata/icall.c    2005-11-23 21:51:54 UTC (rev 53418)
@@ -6819,6 +6819,7 @@
        {"CompareExchange(single&,single,single)", 
ves_icall_System_Threading_Interlocked_CompareExchange_Single},
        {"Decrement(int&)", 
ves_icall_System_Threading_Interlocked_Decrement_Int},
        {"Decrement(long&)", 
ves_icall_System_Threading_Interlocked_Decrement_Long},
+       {"Exchange(T&,T)", ves_icall_System_Threading_Interlocked_Exchange_T},
        {"Exchange(double&,double)", 
ves_icall_System_Threading_Interlocked_Exchange_Double},
        {"Exchange(int&,int)", 
ves_icall_System_Threading_Interlocked_Exchange_Int},
        {"Exchange(intptr&,intptr)", 
ves_icall_System_Threading_Interlocked_Exchange_Object},

Modified: trunk/mono/mono/metadata/threads-types.h
===================================================================
--- trunk/mono/mono/metadata/threads-types.h    2005-11-23 21:48:58 UTC (rev 
53417)
+++ trunk/mono/mono/metadata/threads-types.h    2005-11-23 21:51:54 UTC (rev 
53418)
@@ -75,7 +75,8 @@
 extern MonoObject 
*ves_icall_System_Threading_Interlocked_CompareExchange_Object(MonoObject 
**location, MonoObject *value, MonoObject *comparand);
 extern gfloat 
ves_icall_System_Threading_Interlocked_CompareExchange_Single(gfloat *location, 
gfloat value, gfloat comparand);
 extern gdouble 
ves_icall_System_Threading_Interlocked_CompareExchange_Double(gdouble 
*location, gdouble value, gdouble comparand);
-extern gpointer 
ves_icall_System_Threading_Interlocked_CompareExchange_T(gpointer *location, 
gpointer value, gpointer comparand);
+extern MonoObject* 
ves_icall_System_Threading_Interlocked_CompareExchange_T(MonoObject **location, 
MonoObject *value, MonoObject *comparand);
+extern MonoObject* 
ves_icall_System_Threading_Interlocked_Exchange_T(MonoObject **location, 
MonoObject *value);
 
 extern gint32 ves_icall_System_Threading_Interlocked_Add_Int(gint32 *location, 
gint32 value);
 extern gint64 ves_icall_System_Threading_Interlocked_Add_Long(gint64 
*location, gint64 value);

Modified: trunk/mono/mono/metadata/threads.c
===================================================================
--- trunk/mono/mono/metadata/threads.c  2005-11-23 21:48:58 UTC (rev 53417)
+++ trunk/mono/mono/metadata/threads.c  2005-11-23 21:51:54 UTC (rev 53418)
@@ -1253,13 +1253,22 @@
 #endif
 }
 
-gpointer ves_icall_System_Threading_Interlocked_CompareExchange_T (gpointer 
*location, gpointer value, gpointer comparand)
+MonoObject*
+ves_icall_System_Threading_Interlocked_CompareExchange_T (MonoObject 
**location, MonoObject *value, MonoObject *comparand)
 {
        MONO_ARCH_SAVE_REGS;
 
-       return InterlockedCompareExchangePointer (location, value, comparand);
+       return InterlockedCompareExchangePointer ((gpointer *)location, value, 
comparand);
 }
 
+MonoObject*
+ves_icall_System_Threading_Interlocked_Exchange_T (MonoObject **location, 
MonoObject *value)
+{
+       MONO_ARCH_SAVE_REGS;
+
+       return InterlockedExchangePointer ((gpointer *)location, value);
+}
+
 gint32 
 ves_icall_System_Threading_Interlocked_Add_Int (gint32 *location, gint32 value)
 {

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to