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

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

[Dotgnu-pnet-commits] CVS: pnet/image meta_build.c,1.15,1.16


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnet/image meta_build.c,1.15,1.16
Date: Thu, 13 Feb 2003 17:31:20 -0500

Update of /cvsroot/dotgnu-pnet/pnet/image
In directory subversions:/tmp/cvs-serv12526/image

Modified Files:
        meta_build.c 
Log Message:


Load_MethodDef: use "LoadTokenRange" to load the parameter information
because it is possible that not all method parameters will have ParamDef
blocks.


Index: meta_build.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/image/meta_build.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -r1.15 -r1.16
*** meta_build.c        7 Feb 2003 11:31:30 -0000       1.15
--- meta_build.c        13 Feb 2003 22:31:17 -0000      1.16
***************
*** 109,112 ****
--- 109,113 ----
  {
        unsigned long maxToken;
+       unsigned long tableMaxToken;
        unsigned long token;
        ILUInt32 values[IL_IMAGE_TOKEN_COLUMNS];
***************
*** 125,128 ****
--- 126,130 ----
        /* Parse and load the tokens */
        maxToken = firstToken + num - 1;
+       tableMaxToken = image->tokenCount[tokenType >> 24] | tokenType;
        if(!_ILImageRawTokenData(image, firstToken, values))
        {
***************
*** 133,137 ****
        for(token = firstToken; token <= maxToken; ++token)
        {
!               if((token + 1) <= maxToken)
                {
                        if(!_ILImageRawTokenData(image, token + 1, nextValues))
--- 135,139 ----
        for(token = firstToken; token <= maxToken; ++token)
        {
!               if((token + 1) <= tableMaxToken)
                {
                        if(!_ILImageRawTokenData(image, token + 1, nextValues))
***************
*** 1093,1096 ****
--- 1095,1127 ----
  
  /*
+  * Determine the number of items in a token range.
+  */
+ static int SizeOfRange(ILImage *image, unsigned long tokenKind,
+                                          ILUInt32 *values, ILUInt32 
*valuesNext,
+                                          int index, ILUInt32 *num)
+ {
+       if(!(values[index]))
+       {
+               *num = 0;
+               return 1;
+       }
+       else if(valuesNext && valuesNext[index] != 0)
+       {
+               if(valuesNext[index] < values[index])
+               {
+                       return 0;
+               }
+               *num = valuesNext[index] - values[index];
+               return 1;
+       }
+       else
+       {
+               *num = (image->tokenCount[tokenKind >> 24] + 1) -
+                          (values[index] & ~IL_META_TOKEN_MASK);
+               return 1;
+       }
+ }
+ 
+ /*
   * Load a method definition token.
   */
***************
*** 1102,1106 ****
        ILUInt32 num;
        int error;
-       unsigned char *temp;
        ILType *signature;
  
--- 1133,1136 ----
***************
*** 1145,1173 ****
  
        /* Parse the parameter definitions */
!       if(!(values[IL_OFFSET_METHODDEF_FIRST_PARAM]) ||
!          (values[IL_OFFSET_METHODDEF_FIRST_PARAM] &
!                               ~IL_META_TOKEN_MASK) >
!                                               
image->tokenCount[IL_META_TOKEN_PARAM_DEF >> 24])
!       {
!               num = 0;
!       }
!       else
        {
!               /* Get the number of real parameters from the signature */
!               num = ILTypeNumParams(signature);
!               if((ILType_Kind(signature) & IL_TYPE_COMPLEX_METHOD_SENTINEL) 
!= 0)
!               {
!                       --num;
!               }
! 
!               /* Add 1 if the return value has a parameter definition */
!               temp = image->tokenStart[IL_META_TOKEN_PARAM_DEF >> 24];
!               temp += image->tokenSize[IL_META_TOKEN_PARAM_DEF >> 24] *
!                                       
((values[IL_OFFSET_METHODDEF_FIRST_PARAM] - 1) &
!                                                               
~IL_META_TOKEN_MASK);
!               if((IL_READ_UINT16(temp) & IL_META_PARAMDEF_RETVAL) != 0)
!               {
!                       ++num;
!               }
        }
        EXIT_IF_ERROR(LoadTokenRange(image, IL_META_TOKEN_PARAM_DEF,
--- 1175,1183 ----
  
        /* Parse the parameter definitions */
!       if(!SizeOfRange(image, IL_META_TOKEN_PARAM_DEF,
!                                       values, valuesNext, 
IL_OFFSET_METHODDEF_FIRST_PARAM, &num))
        {
!               META_VAL_ERROR("invalid parameter count");
!               return IL_LOADERR_BAD_META;
        }
        EXIT_IF_ERROR(LoadTokenRange(image, IL_META_TOKEN_PARAM_DEF,
***************
*** 1177,1209 ****
        /* Done */
        return 0;
- }
- 
- /*
-  * Determine the number of items in a token range.
-  */
- static int SizeOfRange(ILImage *image, unsigned long tokenKind,
-                                          ILUInt32 *values, ILUInt32 
*valuesNext,
-                                          int index, ILUInt32 *num)
- {
-       if(!(values[index]))
-       {
-               *num = 0;
-               return 1;
-       }
-       else if(valuesNext && valuesNext[index] != 0)
-       {
-               if(valuesNext[index] < values[index])
-               {
-                       return 0;
-               }
-               *num = valuesNext[index] - values[index];
-               return 1;
-       }
-       else
-       {
-               *num = (image->tokenCount[tokenKind >> 24] + 1) -
-                          (values[index] & ~IL_META_TOKEN_MASK);
-               return 1;
-       }
  }
  
--- 1187,1190 ----





reply via email to

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