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

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

[dotgnu-pnet-commits] pnet ChangeLog image/class.c image/member.c ima...


From: Klaus Treichel
Subject: [dotgnu-pnet-commits] pnet ChangeLog image/class.c image/member.c ima...
Date: Mon, 10 Sep 2007 19:16:43 +0000

CVSROOT:        /cvsroot/dotgnu-pnet
Module name:    pnet
Changes by:     Klaus Treichel <ktreichel>      07/09/10 19:16:42

Modified files:
        .              : ChangeLog 
        image          : class.c member.c misc_token.c 
        include        : il_program.h 

Log message:
        Revert the changes in ILTypeSpecGetClass and ILTypeSpecGetClassRef and 
add the
        new function ILTypeSpecGetClassWrapper instead.
        Call the new function ILTypeSpecGetClassWrapper for creating the member 
owner
        if the passed owner is a TypeSpec in ILMemberRefCreate.
        Optimize ILClassNextMember and ILClassNextMemberByKind.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnet/ChangeLog?cvsroot=dotgnu-pnet&r1=1.3492&r2=1.3493
http://cvs.savannah.gnu.org/viewcvs/pnet/image/class.c?cvsroot=dotgnu-pnet&r1=1.37&r2=1.38
http://cvs.savannah.gnu.org/viewcvs/pnet/image/member.c?cvsroot=dotgnu-pnet&r1=1.31&r2=1.32
http://cvs.savannah.gnu.org/viewcvs/pnet/image/misc_token.c?cvsroot=dotgnu-pnet&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/pnet/include/il_program.h?cvsroot=dotgnu-pnet&r1=1.58&r2=1.59

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ChangeLog,v
retrieving revision 1.3492
retrieving revision 1.3493
diff -u -b -r1.3492 -r1.3493
--- ChangeLog   10 Sep 2007 08:38:23 -0000      1.3492
+++ ChangeLog   10 Sep 2007 19:16:41 -0000      1.3493
@@ -1,3 +1,13 @@
+2007-09-10  Klaus Treichel  <address@hidden>
+
+       * image/misc_token.c, include/il_program.h: Revert the changes in
+       ILTypeSpecGetClass and ILTypeSpecGetClassRef. Add the new function
+       ILTypeSpecGetClassWrapper instead.
+
+       * image/member.c Call the new function ILTypeSpecGetClassWrapper for
+       creating the member owner if the passed owner is a TypeSpec in
+       ILMemberRefCreate.
+
 2007-09-10  Radek Polak  <address@hidden>
 
        * configure.in: Added check for clock_gettime.

Index: image/class.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/image/class.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -b -r1.37 -r1.38
--- image/class.c       21 Jul 2007 13:05:07 -0000      1.37
+++ image/class.c       10 Sep 2007 19:16:42 -0000      1.38
@@ -1355,15 +1355,18 @@
 
 ILMember *ILClassNextMember(ILClass *info, ILMember *last)
 {
-       info = ILClassGetUnderlying(info);
        if(last)
        {
                return last->nextMember;
        }
        else if(info)
        {
+               info = ILClassGetUnderlying(info);
+               if(info)
+               {
                return info->firstMember;
        }
+       }
        else
        {
                return 0;
@@ -1372,15 +1375,18 @@
 
 ILMember *ILClassNextMemberByKind(ILClass *info, ILMember *last, int kind)
 {
-       info = ILClassGetUnderlying(info);
        if(last)
        {
                last = last->nextMember;
        }
        else if(info)
        {
+               info = ILClassGetUnderlying(info);
+               if(info)
+               {
                last = info->firstMember;
        }
+       }
        else
        {
                return 0;
@@ -1399,15 +1405,18 @@
 ILMember *ILClassNextMemberMatch(ILClass *info, ILMember *last, int kind,
                                                                 const char 
*name, ILType *signature)
 {
-       info = ILClassGetUnderlying(info);
        if(last)
        {
                last = last->nextMember;
        }
        else if(info)
        {
+               info = ILClassGetUnderlying(info);
+               if(info)
+               {
                last = info->firstMember;
        }
+       }
        else
        {
                return 0;

Index: image/member.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/image/member.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -b -r1.31 -r1.32
--- image/member.c      15 Jul 2007 19:55:24 -0000      1.31
+++ image/member.c      10 Sep 2007 19:16:42 -0000      1.32
@@ -298,7 +298,7 @@
 
        if((spec = ILProgramItemToTypeSpec(owner)) != 0)
        {
-               memberRef->member.owner = ILTypeSpecGetClass(spec);
+               memberRef->member.owner = ILTypeSpecGetClassWrapper(spec);
        }
        else if((member = ILProgramItemToMember(owner)) != 0)
        {

Index: image/misc_token.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/image/misc_token.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- image/misc_token.c  15 Aug 2007 18:55:18 -0000      1.12
+++ image/misc_token.c  10 Sep 2007 19:16:42 -0000      1.13
@@ -80,17 +80,16 @@
 }
 
 ILClass *ILTypeSpecGetClass(ILTypeSpec *spec)
-{
+ {
        if(spec)
        {
-               if(!(spec->classInfo))
+               if(!(spec->refInfo))
                {
-                       /* Make a wrapper class that corresponds to the type */
-                       spec->classInfo = 
ILClassCreateWrapper(ILToProgramItem(spec),
-                                                                               
                   spec->programItem.token,
-                                                                               
                   spec->type);
+                       /* Make a synthetic class that corresponds to the type 
*/
+                       spec->refInfo = 
ILClassFromType(spec->programItem.image, 0,
+                                                                               
        spec->type, ILClassResolveSystem);
                }
-               return spec->classInfo;
+               return spec->refInfo;
        }
        return 0;
 }
@@ -99,28 +98,35 @@
 {
        if(spec)
        {
-               if(!(spec->refInfo))
-               {
-                       ILClass *info = 
ILClassFromType(spec->programItem.image, 0,
-                                                                               
        spec->type, ILClassResolveSystem);
+               ILClass *info = ILTypeSpecGetClass(spec);
 
                        if(!info || info->programItem.image == 
spec->programItem.image)
                        {
-                               spec->refInfo = info;
+                       return info;
                        }
-                       else
-                       {
                                info = ILClassImport(spec->programItem.image, 
info);
-                               if(!info)
+               if(info)
                                {
-                                       return 0;
-                               }
                                info->programItem.token = 
spec->programItem.token;
                                info->synthetic = spec->type;
-                               spec->refInfo = info;
                        }
+               return info;
                }
-               return spec->refInfo;
+       return 0;
+}
+
+ILClass *ILTypeSpecGetClassWrapper(ILTypeSpec *spec)
+{
+       if(spec)
+       {
+               if(!(spec->classInfo))
+               {
+                       /* Make a wrapper class that corresponds to the type */
+                       spec->classInfo = 
ILClassCreateWrapper(ILToProgramItem(spec),
+                                                                               
                   spec->programItem.token,
+                                                                               
                   spec->type);
+               }
+               return spec->classInfo;
        }
        return 0;
 }

Index: include/il_program.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/include/il_program.h,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -b -r1.58 -r1.59
--- include/il_program.h        17 Jul 2007 17:30:29 -0000      1.58
+++ include/il_program.h        10 Sep 2007 19:16:42 -0000      1.59
@@ -1860,6 +1860,14 @@
 ILClass *ILTypeSpecGetClassRef(ILTypeSpec *spec);
 
 /*
+ * Get the wrapper class information block that correspondends to the TypeSpec.
+ * The returned wrapper class is guaranteed to be in the same image.
+ * The wrapper class in intended to be used as owner of MemberRefs during
+ * image building.
+ */
+ILClass *ILTypeSpecGetClassWrapper(ILTypeSpec *spec);
+
+/*
  * Helper macros for querying information about a TypeSpec's.
  */
 #define        ILTypeSpec_FromToken(image,token)       \




reply via email to

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