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

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

[dotgnu-pnet-commits] pnet ChangeLog ilalink/link_method.c ilalink/li...


From: Klaus Treichel
Subject: [dotgnu-pnet-commits] pnet ChangeLog ilalink/link_method.c ilalink/li...
Date: Sun, 05 Oct 2008 14:21:51 +0000

CVSROOT:        /cvsroot/dotgnu-pnet
Module name:    pnet
Changes by:     Klaus Treichel <ktreichel>      08/10/05 14:21:51

Modified files:
        .              : ChangeLog 
        ilalink        : link_method.c link_type.c 
        image          : debug_reader.c java_loader.c meta_build.c 
                         pecoff_loader.c 

Log message:
        Add handling of TypeSpecs for parent classes and implemented interfaces 
in
        ilalink.
        Fix some compiler warnings.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnet/ChangeLog?cvsroot=dotgnu-pnet&r1=1.3573&r2=1.3574
http://cvs.savannah.gnu.org/viewcvs/pnet/ilalink/link_method.c?cvsroot=dotgnu-pnet&r1=1.32&r2=1.33
http://cvs.savannah.gnu.org/viewcvs/pnet/ilalink/link_type.c?cvsroot=dotgnu-pnet&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/pnet/image/debug_reader.c?cvsroot=dotgnu-pnet&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/pnet/image/java_loader.c?cvsroot=dotgnu-pnet&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/pnet/image/meta_build.c?cvsroot=dotgnu-pnet&r1=1.50&r2=1.51
http://cvs.savannah.gnu.org/viewcvs/pnet/image/pecoff_loader.c?cvsroot=dotgnu-pnet&r1=1.24&r2=1.25

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ChangeLog,v
retrieving revision 1.3573
retrieving revision 1.3574
diff -u -b -r1.3573 -r1.3574
--- ChangeLog   4 Oct 2008 20:13:22 -0000       1.3573
+++ ChangeLog   5 Oct 2008 14:21:49 -0000       1.3574
@@ -1,3 +1,23 @@
+2008-10-05  Klaus Treichel  <address@hidden>
+
+       * ilalink/link_method.c (_ILLinkerConvertMemberRef): Use
+       ILTypeSpecGetClassWrapper instead of ILTypeSpecGetClassRef to avoid
+       creating a synthetic class here.
+
+       * ilalink/link_type.c (ConvertClassRef): Handle synthetic classes that
+       are actually TypeSpecs and create a wrapper class for them after the
+       TypeSpec is imported in the current image.
+
+       * image/debug_reader.c (ILDebugGetString): Fix a compiler warning.
+
+       * image/java_loader.c (LocateJarDirectory, LoadJarClasses): Fix compiler
+       warnings.
+
+       * image/meta_build.c (Load_InterfaceImpl): Handle generic interface
+       implementations.
+
+       * image/pecoff_loader.c (ImageLoad): Fix a compiler warning.
+
 2008-10-04  Klaus Treichel  <address@hidden>
 
        * ilalink/link_generics.c (_ILLinkerConvertGenerics): Add new file

Index: ilalink/link_method.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ilalink/link_method.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -b -r1.32 -r1.33
--- ilalink/link_method.c       4 Oct 2008 20:13:23 -0000       1.32
+++ ilalink/link_method.c       5 Oct 2008 14:21:50 -0000       1.33
@@ -907,11 +907,9 @@
                        return 0;
                }
 
-               /* Import the synthetic class and assign a TypeRef token
-                  to it.  We give this TypeRef the same token as the
-                  TypeSpec, which will cause it to be removed from the
-                  final table during metadata compaction */
-               owner = ILTypeSpecGetClassRef(spec);
+               /* Create a wrapper class for the TypeSpec that can serve as 
owner
+                  for the imported MemberRef. */
+               owner = ILTypeSpecGetClassWrapper(spec);
                if(!owner)
                {
                        _ILLinkerOutOfMemory(linker);

Index: ilalink/link_type.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ilalink/link_type.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- ilalink/link_type.c 6 Mar 2004 11:04:45 -0000       1.13
+++ ilalink/link_type.c 5 Oct 2008 14:21:50 -0000       1.14
@@ -44,6 +44,7 @@
        ILProgramItem *scope;
        ILAssembly *assem;
        ILLibrary *library;
+       ILType *synType;
        const char *name;
        const char *namespace;
        char *newName = 0;
@@ -92,6 +93,26 @@
                        return CONVERT_REF_LOCAL;
                }
        }
+       else if((synType = ILClass_SynType(classInfo)) != 0)
+       {
+               /* Import the synthetic type as a typespec in the current image 
*/
+               ILTypeSpec *spec;
+               
+               spec = _ILLinkerConvertTypeSpec(linker, synType);
+               if(!spec)
+               {
+                       return CONVERT_REF_MEMORY;
+               }
+
+               newClass = ILTypeSpecGetClassWrapper(spec);
+               if(!newClass)
+               {
+                       _ILLinkerOutOfMemory(linker);
+                       return CONVERT_REF_MEMORY;
+               }
+               *resultInfo = newClass;
+               return CONVERT_REF_LOCAL;
+       }
        else if(ILClassIsRef(classInfo))
        {
                /* Converting a top-level class reference to outside the image 
*/

Index: image/debug_reader.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/image/debug_reader.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- image/debug_reader.c        21 Mar 2007 08:37:04 -0000      1.5
+++ image/debug_reader.c        5 Oct 2008 14:21:50 -0000       1.6
@@ -140,7 +140,7 @@
 {
        if(offset < dbg->stringsLen)
        {
-               return dbg->strings + offset;
+               return (const char *)dbg->strings + offset;
        }
        else
        {

Index: image/java_loader.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/image/java_loader.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- image/java_loader.c 1 Jun 2007 07:35:35 -0000       1.10
+++ image/java_loader.c 5 Oct 2008 14:21:50 -0000       1.11
@@ -1322,7 +1322,7 @@
 static int LocateJarDirectory(ILImage *image, unsigned char **start,
                                                          unsigned long *length)
 {
-       unsigned char *data = image->data;
+       unsigned char *data = (unsigned char *)image->data;
        unsigned long posn;
        unsigned long count;
        unsigned long found;
@@ -1446,7 +1446,7 @@
                        }
 
                        /* Validate the local file header */
-                       data = image->data + filePosn;
+                       data = (unsigned char *)image->data + filePosn;
                        if((filePosn + 30) > image->len ||
                           data[0] != (unsigned char)'P' ||
                           data[1] != (unsigned char)'K' ||

Index: image/meta_build.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/image/meta_build.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -b -r1.50 -r1.51
--- image/meta_build.c  7 Nov 2007 16:39:42 -0000       1.50
+++ image/meta_build.c  5 Oct 2008 14:21:50 -0000       1.51
@@ -2025,7 +2025,11 @@
                                                          void *userData)
 {
        ILClass *info;
+       ILProgramItem *item;
        ILClass *interface;
+#if IL_VERSION_MAJOR > 1
+       ILTypeSpec *spec;
+#endif
 
        /* Get the type that is implementing the interface */
        info = ILClass_FromToken(image, values[IL_OFFSET_INTERFACE_TYPE]);
@@ -2036,26 +2040,27 @@
        }
 
        /* Get the interface type */
-       interface = ILClass_FromToken(image, 
values[IL_OFFSET_INTERFACE_INTERFACE]);
-       if(interface)
+       item = ILProgramItem_FromToken(image, 
values[IL_OFFSET_INTERFACE_INTERFACE]);
+       if(!item)
        {
-               /* Resolve TypeSpec's into ILClass structures */
-               interface = ILProgramItemToClass((ILProgramItem *)interface);
+               META_VAL_ERROR("invalid interface token");
+               return IL_LOADERR_BAD_META;
        }
-       if(!interface)
+#if IL_VERSION_MAJOR > 1
+       if((spec = ILProgramItemToTypeSpec(item)))
        {
-               META_VAL_ERROR("unknown interface");
-               return IL_LOADERR_BAD_META;
+               interface = ILTypeSpecGetClassWrapper(spec);
        }
-
-#if 0  /* TODO - properly recognise generic interfaces */
-       /* The second class must be an interface */
-       if(!ILClass_IsInterface(interface) && !ILClassIsRef(interface))
+       else
+#endif
+       {
+               interface = ILProgramItemToClass(item);
+       }
+       if(!interface)
        {
-               META_VAL_ERROR("interface type is not an interface");
+               META_VAL_ERROR("unknown interface");
                return IL_LOADERR_BAD_META;
        }
-#endif
        
        /* Add the "implements" clause to the class */
        if(!ILClassAddImplements(info, interface, token))

Index: image/pecoff_loader.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/image/pecoff_loader.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- image/pecoff_loader.c       1 Jun 2007 07:35:35 -0000       1.24
+++ image/pecoff_loader.c       5 Oct 2008 14:21:50 -0000       1.25
@@ -810,7 +810,7 @@
        }
 
        /* Find the IL runtime header, read it, and validate it */
-       runtimeHdr = data + base;
+       runtimeHdr = (unsigned char *)data + base;
        size = (maxAddress - minAddress) - base;
        if(runtimeHdrSize)
        {




reply via email to

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