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

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

[dotgnu-pnet-commits] pnet ChangeLog engine/jitc_array.c


From: Klaus Treichel
Subject: [dotgnu-pnet-commits] pnet ChangeLog engine/jitc_array.c
Date: Sun, 21 Jan 2007 11:46:39 +0000

CVSROOT:        /cvsroot/dotgnu-pnet
Module name:    pnet
Changes by:     Klaus Treichel <ktreichel>      07/01/21 11:46:39

Modified files:
        .              : ChangeLog 
        engine         : jitc_array.c 

Log message:
        2007-01-21  Klaus Treichel  <address@hidden>
        
                * engine/jitc_array.c: Fix a deadlock if the object array for 
varargs or
                async delegate invokation is created and the class for the 
object array
                doesn't exist yet.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnet/ChangeLog?cvsroot=dotgnu-pnet&r1=1.3404&r2=1.3405
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/jitc_array.c?cvsroot=dotgnu-pnet&r1=1.7&r2=1.8

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ChangeLog,v
retrieving revision 1.3404
retrieving revision 1.3405
diff -u -b -r1.3404 -r1.3405
--- ChangeLog   19 Jan 2007 18:42:11 -0000      1.3404
+++ ChangeLog   21 Jan 2007 11:46:38 -0000      1.3405
@@ -1,3 +1,9 @@
+2007-01-21  Klaus Treichel  <address@hidden>
+
+       * engine/jitc_array.c: Fix a deadlock if the object array for varargs or
+       async delegate invokation is created and the class for the object array
+       doesn't exist yet.
+
 2007-01-19  Klaus Treichel  <address@hidden>
 
        * engine/cvmc_call.c: Check for running a cctor too if a function 
pointer

Index: engine/jitc_array.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/jitc_array.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- engine/jitc_array.c 16 Jan 2007 06:46:08 -0000      1.7
+++ engine/jitc_array.c 21 Jan 2007 11:46:39 -0000      1.8
@@ -426,19 +426,33 @@
                                                                                
   ILJitValue thread,
                                                                                
   ILUInt32 numElements)
 {
-       ILMethod *ctor;
+       ILClass *objectClass = _ILExecThreadProcess(_thread)->objectClass;
+       ILType *objectType = ILType_FromClass(objectClass);
+       ILType *arrayType = 
ILTypeFindOrCreateArray(_ILExecThreadProcess(_thread)->context,
+                                                                               
                1, objectType);
+       ILClass *arrayClass;
 
-       /* Find the constructor for the array. */
-       ctor = ILExecThreadLookupMethod(_thread, "[oSystem.Object;", ".ctor",
-                                                                       
"(Ti)V");
-       if(!ctor)
+       /* Find the object array class. */
+       if(!arrayType)
+       {
+               return 0;
+       }
+       arrayClass = 
ILClassFromType(ILContextNextImage(_ILExecThreadProcess(_thread)->context, 0),
+                                                                0, arrayType, 
0);
+       if(!arrayClass)
+       {
+               return 0;
+       }
+
+       arrayClass = ILClassResolve(arrayClass);
+       if(!arrayClass)
        {
                return 0;
        }
 
        return _ILJitSArrayNewWithConstantSize(jitFunction,
                                                                                
   _thread,
-                                                                               
   ILMethod_Owner(ctor),
+                                                                               
   arrayClass,
                                                                                
   numElements);
 }
 




reply via email to

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