[Top][All Lists]
[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)
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] pnet ChangeLog ilalink/link_method.c ilalink/li...,
Klaus Treichel <=