[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Dotgnu-pnet-commits] CVS: pnet/ilasm ilasm_build.c,1.18,1.19
From: |
Rhys Weatherley <address@hidden> |
Subject: |
[Dotgnu-pnet-commits] CVS: pnet/ilasm ilasm_build.c,1.18,1.19 |
Date: |
Fri, 14 Feb 2003 20:57:54 -0500 |
Update of /cvsroot/dotgnu-pnet/pnet/ilasm
In directory subversions:/tmp/cvs-serv9268/ilasm
Modified Files:
ilasm_build.c
Log Message:
Add the new helper function ILClassNextMemberMatch and use it to speed
up method/field resolution in ilasm and ilalink.
Index: ilasm_build.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ilasm/ilasm_build.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -r1.18 -r1.19
*** ilasm_build.c 3 Jan 2003 12:34:15 -0000 1.18
--- ilasm_build.c 15 Feb 2003 01:57:52 -0000 1.19
***************
*** 765,776 ****
/* Look for a name and signature match on a member */
! member = 0;
! while((member = ILClassNextMemberByKind(classInfo, member, kind)) != 0)
{
! if(!strcmp(ILMember_Name(member), name) &&
! ILTypeIdentical(ILMember_Signature(member), sig))
! {
! return ILMember_Token(member);
! }
}
--- 765,771 ----
/* Look for a name and signature match on a member */
! if((member = ILClassNextMemberMatch(classInfo, 0, kind, name, sig)) !=
0)
{
! return ILMember_Token(member);
}
***************
*** 818,852 ****
/* See if there is already a method with a matching signature */
! method = 0;
! while((method = (ILMethod *)ILClassNextMemberByKind
! (classInfo, (ILMember *)method,
IL_META_MEMBERKIND_METHOD)) != 0)
! {
! if(!strcmp(ILMethod_Name(method), name) &&
! ILTypeIdentical(ILMethod_Signature(method), sig))
{
! /* We already have a definition */
if((ILMethod_Token(method) & IL_META_TOKEN_MASK)
! == IL_META_TOKEN_METHOD_DEF &&
! ILMethod_RVA(method) != 0)
! {
! /* This is a duplicate */
! ILAsmPrintMessage(ILAsmFilename, ILAsmLineNum,
! "duplicate
definition for `%s'", name);
! ILAsmErrors = 1;
! }
! else
{
! /* Convert the MemberRef into a MethodDef */
! ILMethodSetCallConv(method,
ILType_CallConv(sig));
! ILMemberSetAttrs((ILMember *)method,
!
~((ILUInt32)0), attributes);
! if((ILMethod_Token(method) & IL_META_TOKEN_MASK)
! == IL_META_TOKEN_MEMBER_REF)
! {
! ILMethodNewToken(method);
! }
}
- return method;
}
}
--- 813,843 ----
/* See if there is already a method with a matching signature */
! if((method = (ILMethod *)ILClassNextMemberMatch
! (classInfo, (ILMember *)0,
! IL_META_MEMBERKIND_METHOD, name, sig)) != 0)
! {
! /* We already have a definition */
! if((ILMethod_Token(method) & IL_META_TOKEN_MASK)
! == IL_META_TOKEN_METHOD_DEF &&
! ILMethod_RVA(method) != 0)
{
! /* This is a duplicate */
! ILAsmPrintMessage(ILAsmFilename, ILAsmLineNum,
! "duplicate definition
for `%s'", name);
! ILAsmErrors = 1;
! }
! else
! {
! /* Convert the MemberRef into a MethodDef */
! ILMethodSetCallConv(method, ILType_CallConv(sig));
! ILMemberSetAttrs((ILMember *)method,
! ~((ILUInt32)0),
attributes);
if((ILMethod_Token(method) & IL_META_TOKEN_MASK)
! == IL_META_TOKEN_MEMBER_REF)
{
! ILMethodNewToken(method);
}
}
+ return method;
}
***************
*** 868,901 ****
/* See if there is already a field with a matching signature */
! field = 0;
! while((field = (ILField *)ILClassNextMemberByKind
! (classInfo, (ILMember *)field,
IL_META_MEMBERKIND_FIELD)) != 0)
! {
! if(!strcmp(ILField_Name(field), name) &&
! ILTypeIdentical(ILField_Type(field), sig))
{
! /* We already have a definition */
if((ILField_Token(field) & IL_META_TOKEN_MASK)
! == IL_META_TOKEN_FIELD_DEF)
! {
! /* This is a duplicate */
! ILAsmPrintMessage(ILAsmFilename, ILAsmLineNum,
! "duplicate
definition for `%s'", name);
! ILAsmErrors = 1;
! }
! else
{
! /* Convert the MemberRef into a FieldDef */
! ILMemberSetSignature((ILMember *)field, sig);
! ILMemberSetAttrs((ILMember *)field,
!
~((ILUInt32)0), attributes);
! if((ILField_Token(field) & IL_META_TOKEN_MASK)
! == IL_META_TOKEN_MEMBER_REF)
! {
! ILFieldNewToken(field);
! }
}
- return field;
}
}
--- 859,888 ----
/* See if there is already a field with a matching signature */
! if((field = (ILField *)ILClassNextMemberMatch
! (classInfo, (ILMember *)0,
! IL_META_MEMBERKIND_FIELD, name, sig)) != 0)
! {
! /* We already have a definition */
! if((ILField_Token(field) & IL_META_TOKEN_MASK)
! == IL_META_TOKEN_FIELD_DEF)
! {
! /* This is a duplicate */
! ILAsmPrintMessage(ILAsmFilename, ILAsmLineNum,
! "duplicate definition
for `%s'", name);
! ILAsmErrors = 1;
! }
! else
{
! /* Convert the MemberRef into a FieldDef */
! ILMemberSetSignature((ILMember *)field, sig);
! ILMemberSetAttrs((ILMember *)field,
! ~((ILUInt32)0),
attributes);
if((ILField_Token(field) & IL_META_TOKEN_MASK)
! == IL_META_TOKEN_MEMBER_REF)
{
! ILFieldNewToken(field);
}
}
+ return field;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-pnet-commits] CVS: pnet/ilasm ilasm_build.c,1.18,1.19,
Rhys Weatherley <address@hidden> <=
- Prev by Date:
[Dotgnu-pnet-commits] CVS: pnet/ilalink link_field.c,1.8,1.9 link_method.c,1.22,1.23
- Next by Date:
[Dotgnu-pnet-commits] CVS: pnet ChangeLog,1.2135,1.2136
- Previous by thread:
[Dotgnu-pnet-commits] CVS: pnet/ilalink link_field.c,1.8,1.9 link_method.c,1.22,1.23
- Next by thread:
[Dotgnu-pnet-commits] CVS: pnet ChangeLog,1.2135,1.2136
- Index(es):