[Top][All Lists]
[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 ----
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-pnet-commits] CVS: pnet/image meta_build.c,1.15,1.16,
Rhys Weatherley <address@hidden> <=