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/cvm_conv.c engine/cvm_ptr...


From: Klaus Treichel
Subject: [dotgnu-pnet-commits] pnet ChangeLog engine/cvm_conv.c engine/cvm_ptr...
Date: Sun, 17 Dec 2006 10:31:32 +0000

CVSROOT:        /cvsroot/dotgnu-pnet
Module name:    pnet
Changes by:     Klaus Treichel <ktreichel>      06/12/17 10:31:32

Modified files:
        .              : ChangeLog 
        engine         : cvm_conv.c cvm_ptr.c jitc_array.c jitc_diag.c 
                         lib_array.c lib_crypt.c lib_defs.h 
                         lib_delegate.c lib_diag.c lib_emit.c 
                         lib_encoding.c lib_helpers.c lib_marshal.c 
                         lib_misc.c lib_reflect.c lib_socket.c 
                         lib_string.c lib_stringbuilder.c lib_task.c 
                         lib_thread.c lib_type.c throw.c 

Log message:
        2006-12-16  Klaus Treichel  <address@hidden>
        
                * engine/lib_defs.c: Add the structure SArrayHeader and use it 
in the
                header of simple zero based arrays. Add the macro ArrayLength 
to access
                the array length.
        
                * engine/cvm_conv.c, engine/cvm_ptr.c, engine/jitc_diag.c,
                engine/lib_array.c, engine/lib_crypt.c, engine/lib_delegate.c,
                engine/lib_diag.c, engine/lib_emit.c, engine/lib_encoding.c,
                engine/lib_helpers.c, engine/lib_marshal.c, engine/lib_misc.c,
                engine/lib_reflect.c, engine/lib_socket.c, engine/lib_string.c,
                engine/lib_stringbuilder.c, engine/lib_task.c, 
engine/lib_thread.c,
                engine/lib_type.c, engine/throw.c: Use the new macro 
ArrayLength where
                ever the length of a simple array is accessed.
        
                * engine/jitc_array.c: Use the new structure SArrayHeader to 
access the
                length field of a simple array.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnet/ChangeLog?cvsroot=dotgnu-pnet&r1=1.3396&r2=1.3397
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/cvm_conv.c?cvsroot=dotgnu-pnet&r1=1.30&r2=1.31
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/cvm_ptr.c?cvsroot=dotgnu-pnet&r1=1.48&r2=1.49
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/jitc_array.c?cvsroot=dotgnu-pnet&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/jitc_diag.c?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_array.c?cvsroot=dotgnu-pnet&r1=1.31&r2=1.32
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_crypt.c?cvsroot=dotgnu-pnet&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_defs.h?cvsroot=dotgnu-pnet&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_delegate.c?cvsroot=dotgnu-pnet&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_diag.c?cvsroot=dotgnu-pnet&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_emit.c?cvsroot=dotgnu-pnet&r1=1.29&r2=1.30
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_encoding.c?cvsroot=dotgnu-pnet&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_helpers.c?cvsroot=dotgnu-pnet&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_marshal.c?cvsroot=dotgnu-pnet&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_misc.c?cvsroot=dotgnu-pnet&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_reflect.c?cvsroot=dotgnu-pnet&r1=1.80&r2=1.81
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_socket.c?cvsroot=dotgnu-pnet&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_string.c?cvsroot=dotgnu-pnet&r1=1.39&r2=1.40
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_stringbuilder.c?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_task.c?cvsroot=dotgnu-pnet&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_thread.c?cvsroot=dotgnu-pnet&r1=1.36&r2=1.37
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_type.c?cvsroot=dotgnu-pnet&r1=1.52&r2=1.53
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/throw.c?cvsroot=dotgnu-pnet&r1=1.11&r2=1.12

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ChangeLog,v
retrieving revision 1.3396
retrieving revision 1.3397
diff -u -b -r1.3396 -r1.3397
--- ChangeLog   11 Dec 2006 20:40:11 -0000      1.3396
+++ ChangeLog   17 Dec 2006 10:31:31 -0000      1.3397
@@ -1,3 +1,21 @@
+2006-12-16  Klaus Treichel  <address@hidden>
+
+       * engine/lib_defs.c: Add the structure SArrayHeader and use it in the
+       header of simple zero based arrays. Add the macro ArrayLength to access
+       the array length.
+
+       * engine/cvm_conv.c, engine/cvm_ptr.c, engine/jitc_diag.c,
+       engine/lib_array.c, engine/lib_crypt.c, engine/lib_delegate.c,
+       engine/lib_diag.c, engine/lib_emit.c, engine/lib_encoding.c,
+       engine/lib_helpers.c, engine/lib_marshal.c, engine/lib_misc.c,
+       engine/lib_reflect.c, engine/lib_socket.c, engine/lib_string.c,
+       engine/lib_stringbuilder.c, engine/lib_task.c, engine/lib_thread.c,
+       engine/lib_type.c, engine/throw.c: Use the new macro ArrayLength where
+       ever the length of a simple array is accessed.
+
+       * engine/jitc_array.c: Use the new structure SArrayHeader to access the
+       length field of a simple array.
+
 2006-12-11  Klaus Treichel  <address@hidden>
 
        * engine/Makefile.am: Add jitc_inline.c to the jit coder sources.

Index: engine/cvm_conv.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/cvm_conv.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -b -r1.30 -r1.31
--- engine/cvm_conv.c   8 Oct 2003 09:42:42 -0000       1.30
+++ engine/cvm_conv.c   17 Dec 2006 10:31:32 -0000      1.31
@@ -225,7 +225,7 @@
        {
                array = (System_Array *)ref;
        }
-       result = ILGCAlloc(sizeof(void *) * (array->length + 2));
+       result = ILGCAlloc(sizeof(void *) * (ArrayLength(array) + 2));
        if(!result)
        {
                ILExecThreadThrowOutOfMemory(thread);
@@ -237,7 +237,7 @@
 
        /* Copy the array elements */
        newArray = &(((void **)result)[1]);
-       for(index = 0; index < array->length; ++index)
+       for(index = 0; index < ArrayLength(array); ++index)
        {
                *newArray = (void *)((*conv)
                        (thread, ((ILString **)(ArrayToBuffer(array)))[index]));

Index: engine/cvm_ptr.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/cvm_ptr.c,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -b -r1.48 -r1.49
--- engine/cvm_ptr.c    17 Jun 2006 09:24:38 -0000      1.48
+++ engine/cvm_ptr.c    17 Dec 2006 10:31:32 -0000      1.49
@@ -24,7 +24,7 @@
                                                                        
ILUInt32 valueSize, ILUInt32 elemSize)
 {
        ILUInt64 index = ReadULong(posn);
-       if(index < (ILUInt64)(ILUInt32)(((System_Array *)tempptr)->length))
+       if(index < (ILUInt64)(ILUInt32)(ArrayLength(tempptr)))
        {
                /* Convert the array pointer into an element pointer.
                   Note: this assumes that the array can never be
@@ -1226,7 +1226,7 @@
        BEGIN_NULL_CHECK_STMT((tempptr = stacktop[-2].ptrValue)) \
        { \
                if(stacktop[-1].uintValue < \
-                               ((ILUInt32)(((System_Array 
*)tempptr)->length))) \
+                               ((ILUInt32)(ArrayLength(tempptr)))) \
                { \
                        stacktop[-2].intValue = \
                                (ILInt32)(((type *)(ArrayToBuffer(tempptr))) \
@@ -1420,7 +1420,7 @@
        BEGIN_NULL_CHECK_STMT((tempptr = stacktop[-2].ptrValue))
        {
                if(stacktop[-1].uintValue <
-                               ((ILUInt32)(((System_Array *)tempptr)->length)))
+                               ((ILUInt32)(ArrayLength(tempptr))))
                {
                        stacktop[-2].ptrValue =
                                ((void 
**)(ArrayToBuffer(tempptr)))[stacktop[-1].uintValue];
@@ -1442,7 +1442,7 @@
        BEGIN_NULL_CHECK_STMT((tempptr = stacktop[-3].ptrValue)) \
        { \
                if(stacktop[-2].uintValue < \
-                               ((ILUInt32)(((System_Array 
*)tempptr)->length))) \
+                               ((ILUInt32)(ArrayLength(tempptr)))) \
                { \
                        ((type 
*)(ArrayToBuffer(tempptr)))[stacktop[-2].uintValue] = \
                                        (type)(stacktop[-1].intValue); \
@@ -1578,7 +1578,7 @@
        BEGIN_NULL_CHECK_STMT((tempptr = stacktop[-3].ptrValue))
        {
                if(stacktop[-2].uintValue <
-                               ((ILUInt32)(((System_Array *)tempptr)->length)))
+                               ((ILUInt32)(ArrayLength(tempptr))))
                {
                        ((void 
**)(ArrayToBuffer(tempptr)))[stacktop[-2].uintValue] =
                                        stacktop[-1].ptrValue;
@@ -1635,7 +1635,7 @@
        BEGIN_NULL_CHECK_STMT((tempptr = stacktop[-2].ptrValue))
        {
                if(stacktop[-1].uintValue <
-                               ((ILUInt32)(((System_Array *)tempptr)->length)))
+                               ((ILUInt32)(ArrayLength(tempptr))))
                {
                        /* Adjust the pointer to address the first array 
element */
                        stacktop[-2].ptrValue = (void *)(((unsigned char 
*)tempptr) +
@@ -1693,7 +1693,7 @@
        BEGIN_NULL_CHECK_STMT((tempptr = stacktop[-(CVM_WORDS_PER_LONG + 
1)].ptrValue))
        {
                if(ReadULong(&(stacktop[-CVM_WORDS_PER_LONG])) <
-                               ((ILUInt64)(ILUInt32)(((System_Array 
*)tempptr)->length)))
+                               ((ILUInt64)(ILUInt32)(ArrayLength(tempptr))))
                {
                        /* Adjust the pointer to address the first array 
element */
                        stacktop[-(CVM_WORDS_PER_LONG + 1)].ptrValue =
@@ -1794,10 +1794,10 @@
        {
        #ifdef IL_NATIVE_INT32
                stacktop[-1].intValue =
-                       ((System_Array *)(stacktop[-1].ptrValue))->length;
+                       ArrayLength(stacktop[-1].ptrValue);
        #else
                WriteLong(&(stacktop[-1]),
-                                 (ILInt64)(((System_Array 
*)(stacktop[-1].ptrValue))->length));
+                                 
(ILInt64)(ArrayLength(stacktop[-1].ptrValue)));
        #endif
                MODIFY_PC_AND_STACK(CVM_LEN_NONE, CVM_WORDS_PER_NATIVE_INT - 1);
        }
@@ -3000,7 +3000,7 @@
        BEGIN_NULL_CHECK_STMT((tempptr = stacktop[-2].ptrValue)) \
        { \
                if(stacktop[-1].uintValue < \
-                               ((ILUInt32)(((System_Array 
*)tempptr)->length))) \
+                               ((ILUInt32)(ArrayLength(tempptr)))) \
                { \
                        write(&(stacktop[-2]), \
                                  read((CVMWord *)&(((type 
*)(ArrayToBuffer(tempptr))) \
@@ -3116,7 +3116,7 @@
        BEGIN_NULL_CHECK_STMT((tempptr = stacktop[-(size + 2)].ptrValue)) \
        { \
                if(stacktop[-(size + 1)].uintValue < \
-                               ((ILUInt32)(((System_Array 
*)tempptr)->length))) \
+                               ((ILUInt32)(ArrayLength(tempptr)))) \
                { \
                        write(((CVMWord *)&(((type *)(ArrayToBuffer(tempptr))) \
                                                [stacktop[-(size + 
1)].uintValue])), \

Index: engine/jitc_array.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/jitc_array.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- engine/jitc_array.c 28 Nov 2006 19:15:23 -0000      1.5
+++ engine/jitc_array.c 17 Dec 2006 10:31:32 -0000      1.6
@@ -124,7 +124,7 @@
                return (System_Array *)0;
        }
        ptr = (System_Array *)_ILJitAlloc(arrayClass, (ILUInt32)totalSize);
-       ptr->length = numElements;
+       ArrayLength(ptr) = numElements;
        return ptr;
 }
 
@@ -147,7 +147,7 @@
                return (System_Array *)0;
        }
        ptr = (System_Array *)_ILJitAllocAtomic(arrayClass, 
(ILUInt32)totalSize);
-       ptr->length = numElements;
+       ArrayLength(ptr) = numElements;
        return ptr;
 }
 
@@ -249,7 +249,7 @@
        /* Set the length in the array. */
        jit_insn_store_relative(jitFunction,
                                                        newArray, 
-                                                       offsetof(System_Array, 
length),
+                                                       offsetof(SArrayHeader, 
length),
                                                        arrayLength);
        return newArray;
 }
@@ -678,7 +678,9 @@
 {
        ILJitValue len;
 
-       len = jit_insn_load_relative(coder->jitFunction, array, 0,
+       len = jit_insn_load_relative(coder->jitFunction,
+                                                                array,
+                                                                
offsetof(SArrayHeader, length),
                                                                 
_IL_JIT_TYPE_INT32);
        return len;
 }

Index: engine/jitc_diag.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/jitc_diag.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- engine/jitc_diag.c  26 Jun 2006 19:29:49 -0000      1.2
+++ engine/jitc_diag.c  17 Dec 2006 10:31:32 -0000      1.3
@@ -183,7 +183,7 @@
                {
                        return 0;
                }
-               ((System_Array *)array)->length = num;
+               ArrayLength(array) = num;
 
                /* Fill the array with the packed stack data */
                data = (PackedStackFrame *)ArrayToBuffer(array);

Index: engine/lib_array.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_array.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -b -r1.31 -r1.32
--- engine/lib_array.c  29 Oct 2006 09:19:39 -0000      1.31
+++ engine/lib_array.c  17 Dec 2006 10:31:32 -0000      1.32
@@ -132,7 +132,7 @@
        }
        if(array)
        {
-               array->length = (ILInt32)length;
+               ArrayLength(array) = (ILInt32)length;
        }
        return array;
 }
@@ -2613,7 +2613,7 @@
                        return;
                }
                else if(length < 0 ||
-                       (array->length - index) < length)
+                       (ArrayLength(array) - index) < length)
                {
                        ILExecThreadThrowArgRange(thread, "index", 
"Arg_InvalidArrayRange");
                        return;
@@ -2700,7 +2700,7 @@
        if(_ILIsSArray(_this))
        {
                start = ArrayToBuffer(_this);
-               totalLen = _this->length;
+               totalLen = ArrayLength(_this);
        }
 #ifdef IL_CONFIG_NON_VECTOR_ARRAYS
        else if(_ILIsMArray(_this))
@@ -2860,7 +2860,7 @@
                }
                if(array)
                {
-                       array->length = (ILInt32)length1;
+                       ArrayLength(array) = (ILInt32)length1;
                }
                return (ILObject *)array;
        }
@@ -3011,7 +3011,7 @@
 #endif
 
        /* Handle the single-dimensional, zero lower bound, case specially */
-       if(lengths->length == 1 &&
+       if(ArrayLength(lengths) == 1 &&
           (!lowerBounds || ((ILInt32 *)ArrayToBuffer(lowerBounds))[0] == 0))
        {
                return _IL_Array_CreateArray_jiiii(thread, elementType, 1,
@@ -3020,7 +3020,7 @@
 
 #ifdef IL_CONFIG_NON_VECTOR_ARRAYS
        /* Create the array type and class structures */
-       rank = lengths->length;
+       rank = ArrayLength(lengths);
        elemType = ILClassToType((ILClass *)elementType);
        if(lowerBounds)
        {
@@ -3135,7 +3135,7 @@
        System_Array *_this = (System_Array *)thisObj;
        if(_ILIsSArray(_this))
        {
-               return _this->length;
+               return ArrayLength(_this);
        }
 #ifdef IL_CONFIG_NON_VECTOR_ARRAYS
        else if(_ILIsMArray(_this))
@@ -3167,7 +3167,7 @@
        {
                if(dimension == 0)
                {
-                       return _this->length;
+                       return ArrayLength(_this);
                }
        }
 #ifdef IL_CONFIG_NON_VECTOR_ARRAYS
@@ -3229,7 +3229,7 @@
        {
                if(dimension == 0)
                {
-                       return _this->length - 1;
+                       return ArrayLength(_this) - 1;
                }
        }
 #ifdef IL_CONFIG_NON_VECTOR_ARRAYS
@@ -3286,7 +3286,7 @@
        ILUInt32 elemSize = ILSizeOfType(thread, elemType);
        if(_ILIsSArray(_this))
        {
-               if(index1 < 0 || index1 >= _this->length)
+               if(index1 < 0 || index1 >= ArrayLength(_this))
                {
                        ILExecThreadThrowSystem(thread, 
"System.IndexOutOfRangeException",
                                                                        
"Arg_InvalidArrayIndex");
@@ -3414,7 +3414,7 @@
        ILInt32 *ind = (ILInt32 *)ArrayToBuffer(indices);
 
        /* Handle the single-dimensional case specially */
-       if(indices->length == 1)
+       if(ArrayLength(indices) == 1)
        {
                return _IL_Array_Get_iii(thread, thisObj, ind[0], 0, 0);
        }
@@ -3537,7 +3537,7 @@
 
        if(_ILIsSArray(_this))
        {
-               if(index1 < 0 || index1 >= _this->length)
+               if(index1 < 0 || index1 >= ArrayLength(_this))
                {
                        ILExecThreadThrowSystem(thread, 
"System.IndexOutOfRangeException",
                                                                        
"Arg_InvalidArrayIndex");
@@ -3658,7 +3658,7 @@
        ILInt32 *ind = (ILInt32 *)ArrayToBuffer(indices);
 
        /* Handle the single-dimensional case specially */
-       if(indices->length == 1)
+       if(ArrayLength(indices) == 1)
        {
                _IL_Array_Set_Objectiii(thread, thisObj, value, ind[0], 0, 0);
                return;
@@ -3804,7 +3804,7 @@
        if(_ILIsSArray(array))
        {
                ILType *synType = ILClassGetSynType(GetObjectClass(array));
-               return array->length * ILSizeOfType(thread, 
ILType_ElemType(synType));
+               return ArrayLength(array) * ILSizeOfType(thread, 
ILType_ElemType(synType));
        }
 #ifdef IL_CONFIG_NON_VECTOR_ARRAYS
        else if(_ILIsMArray(array))
@@ -3871,7 +3871,7 @@
                System_Array *array = (System_Array *)_array;
                ILType *type;
                ILInt32 elemSize;
-               if(index >= 0 && index < array->length)
+               if(index >= 0 && index < ArrayLength(array))
                {
                        /* Get the element size */
                        type = ILClassGetSynType(GetObjectClass(array));
@@ -3912,7 +3912,7 @@
                System_Array *array = (System_Array *)_array;
                ILType *type;
                ILInt32 elemSize;
-               if(index >= 0 && index < array->length)
+               if(index >= 0 && index < ArrayLength(array))
                {
                        /* Get the element size */
                        type = ILClassGetSynType(GetObjectClass(array));
@@ -4037,7 +4037,7 @@
        elemSize = ILSizeOfType(thread, elemType);
 
        /* Get the total length of the array object */
-       totalLen = sizeof(System_Array) + elemSize * 
((ILUInt32)(array->length));
+       totalLen = sizeof(System_Array) + elemSize * 
((ILUInt32)(ArrayLength(array)));
 
        /* Allocate differently for primitive and non-primitive arrays */
        if(ILType_IsPrimitive(elemType) && elemType != ILType_TypedRef)

Index: engine/lib_crypt.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_crypt.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- engine/lib_crypt.c  28 Nov 2003 03:59:47 -0000      1.14
+++ engine/lib_crypt.c  17 Dec 2006 10:31:32 -0000      1.15
@@ -582,7 +582,7 @@
                        context->encrypt = (SymCryptFunc)ILDES3Process;
                        context->decrypt = (SymCryptFunc)ILDES3Process;
                        ILDES3Init(&(((DES3Context *)context)->des3),
-                                          ArrayToBuffer(key), 
(int)(key->length * 8), 0);
+                                          ArrayToBuffer(key), 
(int)(ArrayLength(key) * 8), 0);
                        return (ILNativeInt)context;
                }
                /* Not reached */
@@ -600,7 +600,7 @@
                        context->encrypt = (SymCryptFunc)ILRC2Encrypt;
                        context->decrypt = (SymCryptFunc)ILRC2Decrypt;
                        ILRC2Init(&(((RC2Context *)context)->rc2),
-                                         ArrayToBuffer(key), (int)(key->length 
* 8));
+                                         ArrayToBuffer(key), 
(int)(ArrayLength(key) * 8));
                        return (ILNativeInt)context;
                }
                /* Not reached */
@@ -618,7 +618,7 @@
                        context->encrypt = (SymCryptFunc)ILAESEncrypt;
                        context->decrypt = (SymCryptFunc)ILAESDecrypt;
                        ILAESInit(&(((AESContext *)context)->aes),
-                                         ArrayToBuffer(key), (int)(key->length 
* 8));
+                                         ArrayToBuffer(key), 
(int)(ArrayLength(key) * 8));
                        return (ILNativeInt)context;
                }
                /* Not reached */
@@ -672,7 +672,7 @@
                        context->encrypt = (SymCryptFunc)ILDES3Process;
                        context->decrypt = (SymCryptFunc)ILDES3Process;
                        ILDES3Init(&(((DES3Context *)context)->des3),
-                                          ArrayToBuffer(key), 
(int)(key->length * 8), 1);
+                                          ArrayToBuffer(key), 
(int)(ArrayLength(key) * 8), 1);
                        return (ILNativeInt)context;
                }
                /* Not reached */
@@ -743,7 +743,7 @@
        if(x)
        {
                *xbig = ILBigNumFromBytes((unsigned char *)(ArrayToBuffer(x)),
-                                                                 x->length);
+                                                                 
ArrayLength(x));
                if(!(*xbig))
                {
                        ILExecThreadThrowOutOfMemory(_thread);
@@ -757,7 +757,7 @@
        if(y)
        {
                *ybig = ILBigNumFromBytes((unsigned char *)(ArrayToBuffer(y)),
-                                                                 y->length);
+                                                                 
ArrayLength(y));
                if(!(*ybig))
                {
                        if(x)
@@ -775,7 +775,7 @@
        if(z)
        {
                *zbig = ILBigNumFromBytes((unsigned char *)(ArrayToBuffer(z)),
-                                                                 z->length);
+                                                                 
ArrayLength(z));
                if(!(*zbig))
                {
                        if(x)

Index: engine/lib_defs.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_defs.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- engine/lib_defs.h   1 May 2006 17:30:50 -0000       1.28
+++ engine/lib_defs.h   17 Dec 2006 10:31:32 -0000      1.29
@@ -181,12 +181,20 @@
 
 /*
  * Internal structure of an array header, padded to the best alignment.
+ * TODO: We can enable the rank once the changed structure can be fixed
+ * in the unroller.
  */
-typedef union
+typedef struct
 {
+       /* ILInt32                      rank; */                /* Allways 0 
for simple arrays. */
        ILInt32                 length;
+} SArrayHeader;
+
+typedef union
+{
+       SArrayHeader    __header;
 #if !defined(__i386) && !defined(__i386__)
-       unsigned char   pad[IL_BEST_ALIGNMENT];
+       unsigned char   pad[(sizeof(SArrayHeader) & ~(IL_BEST_ALIGNMENT - 1)) + 
IL_BEST_ALIGNMENT];
 #endif
 
 } System_Array;
@@ -197,6 +205,11 @@
 #define        ArrayToBuffer(array)    ((void *)(((System_Array *)(array)) + 
1))
 
 /*
+ * Get the length (number of elements) in a simple array.
+ */
+#define ArrayLength(array)             (((System_Array 
*)(array))->__header.length)
+
+/*
  * Determine if an array inherits from "$Synthetic.SArray".
  */
 int _ILIsSArray(System_Array *array);

Index: engine/lib_delegate.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_delegate.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- engine/lib_delegate.c       17 Jun 2006 09:24:38 -0000      1.15
+++ engine/lib_delegate.c       17 Dec 2006 10:31:32 -0000      1.16
@@ -117,7 +117,7 @@
 
        paramcount = ILTypeNumParams(invokeSignature);
 
-       if (args->length < paramcount || outParams->length < paramcount)
+       if (ArrayLength(args) < paramcount || ArrayLength(outParams) < 
paramcount)
        {
                return;
        }
@@ -136,7 +136,7 @@
                {
                        paramType = ILType_Ref(paramType);
 
-                       if (j >= outParams->length)
+                       if (j >= ArrayLength(outParams))
                        {
                                break;
                        }

Index: engine/lib_diag.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_diag.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- engine/lib_diag.c   30 Aug 2006 17:33:25 -0000      1.15
+++ engine/lib_diag.c   17 Dec 2006 10:31:32 -0000      1.16
@@ -463,7 +463,7 @@
        {
                return 0;
        }
-       ((System_Array *)array)->length = num;
+       ArrayLength(array) = num;
 
        /* Fill the array with the packed stack data */
        data = (PackedStackFrame *)ArrayToBuffer(array);

Index: engine/lib_emit.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_emit.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -b -r1.29 -r1.30
--- engine/lib_emit.c   23 Aug 2005 10:45:52 -0000      1.29
+++ engine/lib_emit.c   17 Dec 2006 10:31:32 -0000      1.30
@@ -284,7 +284,7 @@
 
        /* write out the header */
        buf = (unsigned char *)ArrayToBuffer(_header);
-       length = (unsigned long)_header->length;
+       length = (unsigned long)ArrayLength(_header);
        ILWriterTextWrite(writer, buf, length);
 
        /* get the rva of the code section */
@@ -292,7 +292,7 @@
 
        /* write out the code section */
        buf = (unsigned char *)ArrayToBuffer(_code);
-       length = (unsigned long)_code->length;
+       length = (unsigned long)ArrayLength(_code);
        ILWriterTextWrite(writer, buf, length);
 
        /* register token fixups for the code section */
@@ -300,7 +300,7 @@
        {
                ptrs = (ILNativeInt *)ArrayToBuffer(_codeFixupPtrs);
                offsets = (ILInt32 *)ArrayToBuffer(_codeFixupOffsets);
-               length = (unsigned long)_codeFixupPtrs->length;
+               length = (unsigned long)ArrayLength(_codeFixupPtrs);
                for (i = 0; i < length; ++i)
                {
                        ILWriterSetFixup(writer, rva+offsets[i], (ILProgramItem 
*)ptrs[i]);
@@ -322,11 +322,11 @@
 
        /* write out the exception block section */
        eBlocks = (System_Array **)ArrayToBuffer(_exceptionBlocks);
-       len = (unsigned long)_exceptionBlocks->length;
+       len = (unsigned long)ArrayLength(_exceptionBlocks);
        for (i = 0; i < len; ++i)
        {
                buf = (unsigned char *)ArrayToBuffer(eBlocks[i]);
-               length = (unsigned long)eBlocks[i]->length;
+               length = (unsigned long)ArrayLength(eBlocks[i]);
                ILWriterTextWrite(writer, buf, length);
        }
 
@@ -335,7 +335,7 @@
        {
                ptrs = (ILNativeInt *)ArrayToBuffer(_exceptionBlockFixupPtrs);
                offsets = (ILInt32 *)ArrayToBuffer(_exceptionBlockFixupOffsets);
-               length = (unsigned long)_exceptionBlockFixupPtrs->length;
+               length = (unsigned long)ArrayLength(_exceptionBlockFixupPtrs);
                for (i = 0; i < length; ++i)
                {
                        ILWriterSetFixup(writer, rva+offsets[i], (ILProgramItem 
*)ptrs[i]);
@@ -400,7 +400,7 @@
                }
                ILAttributeSetType(attr, ILToProgramItem(member));
                if(!ILAttributeSetValue(attr, ArrayToBuffer(blob),
-                                                               (unsigned 
long)(long)(blob->length)))
+                                                               (unsigned 
long)(long)(ArrayLength(blob))))
                {
                        return 0;
                }
@@ -689,7 +689,7 @@
        owner = (ILProgramItem *)item;
        image = ILProgramItem_Image(owner);
        blob = (ILUInt8 *)ArrayToBuffer(data);
-       length = (unsigned long)data->length;
+       length = (unsigned long)ArrayLength(data);
        if (!(marshal = ILFieldMarshalCreate(image, 0, owner)))
        {
                IL_METADATA_UNLOCK(_ILExecThreadProcess(_thread));

Index: engine/lib_encoding.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_encoding.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- engine/lib_encoding.c       14 Nov 2002 04:07:25 -0000      1.6
+++ engine/lib_encoding.c       17 Dec 2006 10:31:32 -0000      1.7
@@ -62,7 +62,7 @@
                (((ILUInt16 *)ArrayToBuffer(chars)) + charIndex,
                 (unsigned long)charCount,
                 ((ILUInt8 *)ArrayToBuffer(bytes)) + byteIndex,
-                (unsigned long)(bytes->length - byteIndex));
+                (unsigned long)(ArrayLength(bytes) - byteIndex));
 }
 
 /*
@@ -79,7 +79,7 @@
                (StringToBuffer(s) + charIndex,
                 (unsigned long)charCount,
                 ((ILUInt8 *)ArrayToBuffer(bytes)) + byteIndex,
-                (unsigned long)(bytes->length - byteIndex));
+                (unsigned long)(ArrayLength(bytes) - byteIndex));
 }
 
 /*
@@ -107,7 +107,7 @@
                (((ILUInt8 *)ArrayToBuffer(bytes)) + byteIndex,
                 (unsigned long)byteCount,
                 ((ILUInt16 *)ArrayToBuffer(chars)) + charIndex,
-                (unsigned long)(chars->length - charIndex));
+                (unsigned long)(ArrayLength(chars) - charIndex));
 }
 
 /*

Index: engine/lib_helpers.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_helpers.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- engine/lib_helpers.c        16 Jun 2006 09:51:23 -0000      1.12
+++ engine/lib_helpers.c        17 Dec 2006 10:31:32 -0000      1.13
@@ -136,7 +136,7 @@
        if(_ILIsSArray(array))
        {
                buffer = ArrayToBuffer(array);
-               maxSize = (ILUInt32)(array->length * elemSize);
+               maxSize = (ILUInt32)(ArrayLength(array) * elemSize);
        }
 #ifdef IL_CONFIG_NON_VECTOR_ARRAYS
        else if(_ILIsMArray(array))

Index: engine/lib_marshal.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_marshal.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- engine/lib_marshal.c        24 Sep 2006 18:16:21 -0000      1.10
+++ engine/lib_marshal.c        17 Dec 2006 10:31:32 -0000      1.11
@@ -485,7 +485,7 @@
 
        if(UnmanagedOK(_thread) && arr && index >= 0 &&
           _ILIsSArray((System_Array *)arr) &&
-          index < ((System_Array *)arr)->length)
+          index < ArrayLength(arr))
        {
                type = ILClassGetSynType(GetObjectClass(arr));
                type = ILTypeGetEnumType(ILType_ElemType(type));

Index: engine/lib_misc.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_misc.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- engine/lib_misc.c   17 Oct 2006 12:24:18 -0000      1.15
+++ engine/lib_misc.c   17 Dec 2006 10:31:32 -0000      1.16
@@ -235,7 +235,7 @@
        ArgIterator *iter = (ArgIterator *)_this;
        if(iter->un.argIter.args)
        {
-               iter->un.argIter.posn = iter->un.argIter.args->length;
+               iter->un.argIter.posn = ArrayLength(iter->un.argIter.args);
        }
 }
 
@@ -250,7 +250,7 @@
        ILClass *classInfo;
 
        if(iter->un.argIter.args &&
-          iter->un.argIter.posn < iter->un.argIter.args->length)
+          iter->un.argIter.posn < ArrayLength(iter->un.argIter.args))
        {
                /* Extract the next object and unpack it */
                object = &(((ILObject **)ArrayToBuffer(iter->un.argIter.args))
@@ -425,7 +425,7 @@
        ILObject *object;
 
        if(iter->un.argIter.args &&
-          iter->un.argIter.posn < iter->un.argIter.args->length)
+          iter->un.argIter.posn < ArrayLength(iter->un.argIter.args))
        {
                /* Extract the next object and determine its type */
                object = ((ILObject **)ArrayToBuffer(iter->un.argIter.args))
@@ -458,7 +458,7 @@
        ArgIterator *iter = (ArgIterator *)_this;
        if(iter->un.argIter.args)
        {
-               return iter->un.argIter.args->length - iter->un.argIter.posn;
+               return ArrayLength(iter->un.argIter.args) - 
iter->un.argIter.posn;
        }
        else
        {
@@ -485,7 +485,7 @@
        offset = 0;
 
        /* Resolve the fields within the object, level by level */
-       for(index = 0; index < flds->length; ++index)
+       for(index = 0; index < ArrayLength(flds); ++index)
        {
                field = *((ILField **)(((ILObject 
**)(ArrayToBuffer(flds)))[index]));
                if(!field)
@@ -503,7 +503,7 @@
                         0, ILField_Type(field), 0);
                classInfo = ILClassResolve(classInfo);
                if(!classInfo ||
-                  (index < (flds->length - 1) && 
!ILClassIsValueType(classInfo)))
+                  (index < (ArrayLength(flds) - 1) && 
!ILClassIsValueType(classInfo)))
                {
                        ILExecThreadThrowSystem
                                (_thread, "System.ArgumentException",

Index: engine/lib_reflect.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_reflect.c,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -b -r1.80 -r1.81
--- engine/lib_reflect.c        13 Nov 2006 18:06:09 -0000      1.80
+++ engine/lib_reflect.c        17 Dec 2006 10:31:32 -0000      1.81
@@ -1581,7 +1581,7 @@
           to be able to modify the IL binary after we have loaded it.
           Or worse, have the garbage collector throw the "bytes" array away */
        loadError = ILImageLoadFromMemory(ArrayToBuffer(bytes),
-                                                                         
(unsigned long)(long)(bytes->length),
+                                                                         
(unsigned long)(long)(ArrayLength(bytes)),
                                                                          
thread->process->context,
                                                                          
&image, IL_LOADFLAG_FORCE_32BIT, 0);
        if(loadError == 0)
@@ -2852,7 +2852,7 @@
        numParams = (ILInt32)ILTypeNumParams(signature);
        if(numParams == 0)
        {
-               if(parameters && parameters->length != 0)
+               if(parameters && ArrayLength(parameters) != 0)
                {
                        ILExecThreadThrowSystem(thread, 
"System.ArgumentException", 0);
                        return 0;
@@ -2860,7 +2860,7 @@
        }
        else
        {
-               if(!parameters || parameters->length != numParams)
+               if(!parameters || ArrayLength(parameters) != numParams)
                {
                        ILExecThreadThrowSystem(thread, 
"System.ArgumentException", 0);
                        return 0;

Index: engine/lib_socket.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_socket.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- engine/lib_socket.c 18 Jun 2004 15:09:03 -0000      1.17
+++ engine/lib_socket.c 17 Dec 2006 10:31:32 -0000      1.18
@@ -78,7 +78,7 @@
        return (ILBool)(ILSysIOSocketBind
                                ((ILSysIOHandle)handle,
                                 (unsigned char *)ArrayToBuffer(addr),
-                                addr->length));
+                                ArrayLength(addr)));
 }
 
 /*
@@ -110,7 +110,7 @@
        *newHandle = (ILNativeInt)(ILSysIOSocketAccept
                                        ((ILSysIOHandle)handle,
                                     (unsigned char *)ArrayToBuffer(addrReturn),
-                                    addrReturn->length));
+                                    ArrayLength(addrReturn)));
 
        return (*newHandle != (ILNativeInt)ILSysIOHandle_Invalid);
 }
@@ -124,7 +124,7 @@
        return (ILBool)(ILSysIOSocketConnect
                                ((ILSysIOHandle)handle,
                                 (unsigned char *)ArrayToBuffer(addr),
-                                addr->length));
+                                ArrayLength(addr)));
 }
 
 /*
@@ -157,7 +157,7 @@
                             ((ILUInt8 *)(ArrayToBuffer(buffer))) + offset,
                                 size, flags,
                                 (unsigned char *)ArrayToBuffer(addrReturn),
-                                addrReturn->length);
+                                ArrayLength(addrReturn));
 }
 
 /*
@@ -188,7 +188,7 @@
                             ((ILUInt8 *)(ArrayToBuffer(buffer))) + offset,
                                 size, flags,
                                 (unsigned char *)ArrayToBuffer(addr),
-                                addr->length);
+                                ArrayLength(addr));
 }
 
 ILBool _IL_SocketMethods_Close(ILExecThread *_thread, ILNativeInt handle)
@@ -208,11 +208,11 @@
 {
        return ILSysIOSocketSelect
                ((readarray ? (ILSysIOHandle **)(ArrayToBuffer(readarray)) : 0),
-                (readarray ? readarray->length : 0),
+                (readarray ? ArrayLength(readarray) : 0),
                 (writearray ? (ILSysIOHandle **)(ArrayToBuffer(writearray)) : 
0),
-                (writearray ? writearray->length : 0),
+                (writearray ? ArrayLength(writearray) : 0),
                 (errorarray ? (ILSysIOHandle **)(ArrayToBuffer(errorarray)) : 
0),
-                (errorarray ? errorarray->length : 0), timeout);
+                (errorarray ? ArrayLength(errorarray) : 0), timeout);
 }
 
 /*
@@ -244,7 +244,7 @@
        return (ILBool)ILSysIOSocketGetName
                        ((ILSysIOHandle)handle,
                         (unsigned char *)ArrayToBuffer(addrReturn),
-                        addrReturn->length);
+                        ArrayLength(addrReturn));
 }
 
 /*
@@ -325,8 +325,8 @@
 {
        return (ILSysIOSocketSetMulticast
                                ((ILSysIOHandle)handle, af, name,
-                                (unsigned char *)ArrayToBuffer(group), 
group->length,
-                                (unsigned char *)ArrayToBuffer(mcint), 
mcint->length) != 0);
+                                (unsigned char *)ArrayToBuffer(group), 
ArrayLength(group),
+                                (unsigned char *)ArrayToBuffer(mcint), 
ArrayLength(mcint)) != 0);
 }
 
 /*
@@ -341,8 +341,8 @@
 {
        return (ILSysIOSocketGetMulticast
                                ((ILSysIOHandle)handle, af, name,
-                                (unsigned char *)ArrayToBuffer(group), 
group->length,
-                                (unsigned char *)ArrayToBuffer(mcint), 
mcint->length) != 0);
+                                (unsigned char *)ArrayToBuffer(group), 
ArrayLength(group),
+                                (unsigned char *)ArrayToBuffer(mcint), 
ArrayLength(mcint)) != 0);
 }
 
 ILBool _IL_SocketMethods_DiscoverIrDADevices(ILExecThread *_thread,
@@ -351,7 +351,7 @@
 {
        return (ILSysIODiscoverIrDADevices
                                ((ILSysIOHandle)handle,
-                                (unsigned char *)ArrayToBuffer(buf), 
buf->length) != 0);
+                                (unsigned char *)ArrayToBuffer(buf), 
ArrayLength(buf)) != 0);
 }
 
 /*

Index: engine/lib_string.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_string.c,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -b -r1.39 -r1.40
--- engine/lib_string.c 30 Oct 2006 21:56:22 -0000      1.39
+++ engine/lib_string.c 17 Dec 2006 10:31:32 -0000      1.40
@@ -71,7 +71,7 @@
                                                                  
"ArgRange_Array");
                return 0;
        }
-       if(length < 0 || (value->length - startIndex) < length)
+       if(length < 0 || (ArrayLength(value) - startIndex) < length)
        {
                ILExecThreadThrowArgRange(thread, "length",
                                                                  
"ArgRange_Array");
@@ -109,7 +109,7 @@
           indicates that the empty string should be constructed */
        if(value)
        {
-               length = value->length;
+               length = ArrayLength(value);
        }
        else
        {
@@ -879,7 +879,7 @@
 
        /* Get the start and extent of the "anyOf" array */
        anyBuf = ArrayToBuffer(anyOf);
-       anyLength = anyOf->length;
+       anyLength = ArrayLength(anyOf);
        if(!anyLength)
        {
                /* Bail out because there is nothing to find */
@@ -985,7 +985,7 @@
 
        /* Get the start and extent of the "anyOf" array */
        anyBuf = ArrayToBuffer(anyOf);
-       anyLength = anyOf->length;
+       anyLength = ArrayLength(anyOf);
        if(!anyLength)
        {
                /* Bail out because there is nothing to find */
@@ -1436,7 +1436,7 @@
 {
        if(trimChars)
        {
-               ILInt32 len = trimChars->length;
+               ILInt32 len = ArrayLength(trimChars);
                ILUInt16 *buf = (ILUInt16 *)(ArrayToBuffer(trimChars));
                while(len > 0)
                {

Index: engine/lib_stringbuilder.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_stringbuilder.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- engine/lib_stringbuilder.c  9 Feb 2005 10:14:31 -0000       1.2
+++ engine/lib_stringbuilder.c  17 Dec 2006 10:31:32 -0000      1.3
@@ -313,11 +313,11 @@
 {
        if(value)
        {
-               if(value->length > 0)
+               if(ArrayLength(value) > 0)
                {
                        return Append(_thread, (System_Text_StringBuilder 
*)_this,
                                                        (ILInt16 
*)ArrayToBuffer(value),
-                                                       value->length);
+                                                       ArrayLength(value));
                }
        }
        return _this;
@@ -333,7 +333,7 @@
 {
        if(value)
        {
-               if(startIndex < 0 || startIndex > value->length)
+               if(startIndex < 0 || startIndex > ArrayLength(value))
                {
                        ILExecThreadThrowArgRange(_thread,
                                                                         
"startIndex",
@@ -342,7 +342,7 @@
                }
                else
                {
-                       if(length < 0 || (value->length - startIndex) < length)
+                       if(length < 0 || (ArrayLength(value) - startIndex) < 
length)
                        {
                                ILExecThreadThrowArgRange(_thread,
                                                                                
 "length",
@@ -557,15 +557,15 @@
 {
        if(value)
        {
-               if(value->length)
+               if(ArrayLength(value))
                {
                        if(Insert(_thread, (System_Text_StringBuilder *)_this,
                                                        index,
-                                                       value->length))
+                                                       ArrayLength(value)))
                        {
                                ILMemCpy(StringToBuffer(BuildString(_this)) + 
index,
                                                ArrayToBuffer(value),
-                                               sizeof(ILUInt16) * 
value->length);
+                                               sizeof(ILUInt16) * 
ArrayLength(value));
        
                        }
                        else
@@ -590,14 +590,14 @@
 {
        if(value)
        {
-               if(startIndex < 0 || startIndex > value->length)
+               if(startIndex < 0 || startIndex > ArrayLength(value))
                {
                        ILExecThreadThrowArgRange(_thread,
                                                                         
"startIndex",
                                                                         
"ArgRange_Array");
                        return 0;
                }
-               if((value->length - startIndex) < length)
+               if((ArrayLength(value) - startIndex) < length)
                {
                        ILExecThreadThrowArgRange(_thread,
                                                                         
"length",

Index: engine/lib_task.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_task.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- engine/lib_task.c   13 Jul 2006 17:09:45 -0000      1.15
+++ engine/lib_task.c   17 Dec 2006 10:31:32 -0000      1.16
@@ -657,14 +657,14 @@
                        return 0;
                }
        }
-       args = (char **)ILCalloc(argv->length + 1, sizeof(char *));
+       args = (char **)ILCalloc(ArrayLength(argv) + 1, sizeof(char *));
        if(!args)
        {
                ILExecThreadThrowOutOfMemory(_thread);
                return 0;
        }
        argc = 0;
-       while(argc < argv->length)
+       while(argc < ArrayLength(argv))
        {
                ansi = ILStringToAnsi
                        (_thread, ((ILString **)ArrayToBuffer(argv))[argc]);
@@ -687,14 +687,14 @@
        /* Convert the environment */
        if(envVars)
        {
-               newEnviron = (char **)ILCalloc(envVars->length + 1, sizeof(char 
*));
+               newEnviron = (char **)ILCalloc(ArrayLength(envVars) + 1, 
sizeof(char *));
                if(!newEnviron)
                {
                        ILExecThreadThrowOutOfMemory(_thread);
                        FreeStringList(args, argc);
                        return 0;
                }
-               while(varNum < (int)(envVars->length))
+               while(varNum < (int)(ArrayLength(envVars)))
                {
                        ansi = ILStringToAnsi
                                (_thread, ((ILString 
**)ArrayToBuffer(envVars))[varNum]);

Index: engine/lib_thread.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_thread.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -b -r1.36 -r1.37
--- engine/lib_thread.c 31 Aug 2006 06:47:21 -0000      1.36
+++ engine/lib_thread.c 17 Dec 2006 10:31:32 -0000      1.37
@@ -961,7 +961,7 @@
        handles = (ILWaitHandle **)ArrayToBuffer(waitHandles);
 
        /* Perform the wait */
-       result = ILWaitAll(handles, (ILUInt32)(waitHandles->length), timeout);
+       result = ILWaitAll(handles, (ILUInt32)(ArrayLength(waitHandles)), 
timeout);
 
        if (result == IL_WAIT_TIMEOUT)
        {
@@ -1000,7 +1000,7 @@
        handles = (ILWaitHandle **)ArrayToBuffer(waitHandles);
 
        /* Perform the wait */
-       result = ILWaitAny(handles, (ILUInt32)(waitHandles->length), timeout);
+       result = ILWaitAny(handles, (ILUInt32)(ArrayLength(waitHandles)), 
timeout);
 
        if (result == IL_WAIT_TIMEOUT)
        {

Index: engine/lib_type.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_type.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -b -r1.52 -r1.53
--- engine/lib_type.c   28 Jan 2006 15:07:10 -0000      1.52
+++ engine/lib_type.c   17 Dec 2006 10:31:32 -0000      1.53
@@ -921,7 +921,7 @@
        }
 
        /* Shorten the array to its final length and return */
-       array->length = count;
+       ArrayLength(array) = count;
        return array;
 #else
        _ILClrNotImplemented(thread);
@@ -1894,14 +1894,14 @@
        ILType *typeInfo;
 
        /* Check the number of parameters */
-       if(ILTypeNumParams(signature) != types->length)
+       if(ILTypeNumParams(signature) != ArrayLength(types))
        {
                return 0;
        }
 
        /* Scan the parameters and check for matches */
        items = (ILObject **)ArrayToBuffer(types);
-       for(paramNum = 0; paramNum < types->length; ++paramNum)
+       for(paramNum = 0; paramNum < ArrayLength(types); ++paramNum)
        {
                if(items[paramNum] == 0 && !needExact)
                {
@@ -2347,7 +2347,7 @@
        {
                return 0;
        }
-       array->length = 4;
+       ArrayLength(array) = 4;
 
        /* Convert the type into an ILClass structure */
        classInfo = _ILGetClrClass(thread, _this);
@@ -2411,19 +2411,19 @@
                        {
                                return 0;
                        }
-                       if(numFound >= array->length)
+                       if(numFound >= ArrayLength(array))
                        {
                                newArray = (System_Array *)_ILEngineAlloc
                                                (thread, arrayClass,
                                             sizeof(System_Array) +
-                                                       sizeof(void *) * 
(array->length + 4));
+                                                       sizeof(void *) * 
(ArrayLength(array) + 4));
                                if(!newArray)
                                {
                                        return 0;
                                }
                                ILMemCpy(ArrayToBuffer(newArray), 
ArrayToBuffer(array),
-                                                sizeof(void *) * 
array->length);
-                               newArray->length = array->length + 4;
+                                                sizeof(void *) * 
ArrayLength(array));
+                               ArrayLength(newArray) = ArrayLength(array) + 4;
                                array = newArray;
                        }
                        ((void **)ArrayToBuffer(array))[numFound++] = 
foundObject;
@@ -2479,19 +2479,19 @@
                                        {
                                                return 0;
                                        }
-                                       if(numFound >= array->length)
+                                       if(numFound >= ArrayLength(array))
                                        {
                                                newArray = (System_Array 
*)_ILEngineAlloc
                                                                (thread, 
arrayClass,
                                                             
sizeof(System_Array) +
-                                                                       
sizeof(void *) * (array->length + 4));
+                                                                       
sizeof(void *) * (ArrayLength(array) + 4));
                                                if(!newArray)
                                                {
                                                        return 0;
                                                }
                                                
ILMemCpy(ArrayToBuffer(newArray), ArrayToBuffer(array),
-                                                                sizeof(void *) 
* array->length);
-                                               newArray->length = 
array->length + 4;
+                                                                sizeof(void *) 
* ArrayLength(array));
+                                               ArrayLength(newArray) = 
ArrayLength(array) + 4;
                                                array = newArray;
                                        }
                                        ((void 
**)ArrayToBuffer(array))[numFound++] = foundObject;
@@ -2506,7 +2506,7 @@
              (bindingAttrs & (ILInt32)BF_DeclaredOnly) == 0);
 
        /* Truncate the array to its actual length and return it */
-       array->length = numFound;
+       ArrayLength(array) = numFound;
        return (ILObject *)array;
 #else
        _ILClrNotImplemented(thread);

Index: engine/throw.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/throw.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- engine/throw.c      27 May 2004 23:50:53 -0000      1.11
+++ engine/throw.c      17 Dec 2006 10:31:32 -0000      1.12
@@ -306,7 +306,7 @@
        if(stackTrace)
        {
                frames = (PackedStackFrame *)ArrayToBuffer(stackTrace);
-               length = ((System_Array *)stackTrace)->length;
+               length = ArrayLength(stackTrace);
                for(posn = 0; posn < length; ++posn)
                {
                        method = frames[posn].method;




reply via email to

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