dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] CVS: pnet/engine heap.c,1.13,1.14


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnet/engine heap.c,1.13,1.14
Date: Mon, 14 Apr 2003 03:42:24 -0400

Update of /cvsroot/dotgnu-pnet/pnet/engine
In directory subversions:/tmp/cvs-serv12539/engine

Modified Files:
        heap.c 
Log Message:


InitializeClass: disable finalizers while laying out the class,
to prevent recursive locks.


Index: heap.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/heap.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -r1.13 -r1.14
*** heap.c      19 Jun 2002 01:23:00 -0000      1.13
--- heap.c      14 Apr 2003 07:42:21 -0000      1.14
***************
*** 37,42 ****
        }
  
!       /* Acquire the metadata write lock */
        IL_METADATA_WRLOCK(thread);
  
        /* Lay out the class's fields.  This will check for layout
--- 37,43 ----
        }
  
!       /* Acquire the metadata write lock and disable finalizers */
        IL_METADATA_WRLOCK(thread);
+       ILGCDisableFinalizers();
  
        /* Lay out the class's fields.  This will check for layout
***************
*** 45,49 ****
--- 46,52 ----
        {
                /* Throw a "TypeInitializationException" */
+               ILGCEnableFinalizers();
                IL_METADATA_UNLOCK(thread);
+               ILGCInvokeFinalizers();
                thread->thrownException = _ILSystemException
                        (thread, "System.TypeInitializationException");
***************
*** 51,56 ****
        }
  
!       /* The class has been initialized */
        IL_METADATA_UNLOCK(thread);
        return 1;
  }
--- 54,61 ----
        }
  
!       /* Re-enable finalizers and unlock the metadata write lock */
!       ILGCEnableFinalizers();
        IL_METADATA_UNLOCK(thread);
+       ILGCInvokeFinalizers();
        return 1;
  }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]