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

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

[Dotgnu-pnet-commits] CVS: pnet/codegen cg_decls.tc,1.48,1.49


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnet/codegen cg_decls.tc,1.48,1.49
Date: Tue, 06 May 2003 05:53:23 -0400

Update of /cvsroot/dotgnu-pnet/pnet/codegen
In directory subversions:/tmp/cvs-serv17226/codegen

Modified Files:
        cg_decls.tc 
Log Message:


Implement PInvoke lookups for fields so that global variables
within shared objects can be accessed.


Index: cg_decls.tc
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/codegen/cg_decls.tc,v
retrieving revision 1.48
retrieving revision 1.49
diff -C2 -r1.48 -r1.49
*** cg_decls.tc 27 Feb 2003 06:19:22 -0000      1.48
--- cg_decls.tc 6 May 2003 09:53:20 -0000       1.49
***************
*** 335,338 ****
--- 335,359 ----
  
  /*
+  * Dump PInvoke information for a method or field.
+  */
+ static void DumpPInvoke(ILGenInfo *info, FILE *outstream,
+                                               ILPInvoke *pinvoke, ILMember 
*member)
+ {
+       fputs("pinvokeimpl(", outstream);
+       ILDumpString(outstream,
+                                ILModule_Name(ILPInvoke_Module(pinvoke)));
+       putc(' ', outstream);
+       if(strcmp(ILPInvoke_Alias(pinvoke), ILMember_Name(member)) != 0)
+       {
+               fputs("as ", outstream);
+               ILDumpString(outstream, ILPInvoke_Alias(pinvoke));
+               putc(' ', outstream);
+       }
+       ILDumpFlags(outstream, ILPInvoke_Attrs(pinvoke),
+                               ILPInvokeImplementationFlags, 0);
+       fputs(") ", outstream);
+ }
+ 
+ /*
   * Dump information about a field to the output stream.
   */
***************
*** 340,343 ****
--- 361,375 ----
  {
        ILFieldLayout *layout;
+       ILPInvoke *pinvoke;
+ 
+       /* Does the field have PInvoke information associated with it? */
+       if(ILField_HasPInvokeImpl(field))
+       {
+               pinvoke = ILPInvokeFindField(field);
+       }
+       else
+       {
+               pinvoke = 0;
+       }
  
        /* Dump the field signature and name */
***************
*** 351,354 ****
--- 383,390 ----
        ILDumpFlags(info->asmOutput, ILField_Attrs(field),
                            ILFieldDefinitionFlags, 0);
+       if(pinvoke)
+       {
+               DumpPInvoke(info, info->asmOutput, pinvoke, (ILMember *)field);
+       }
        ILDumpType(info->asmOutput, info->image, 
ILFieldGetTypeWithPrefixes(field),
                           IL_DUMP_QUOTE_NAMES);
***************
*** 713,729 ****
        {
                /* Dump PInvoke information for the method */
!               fputs("pinvokeimpl(", info->asmOutput);
!               ILDumpString(outstream,
!                                        
ILModule_Name(ILPInvoke_Module(pinvoke)));
!               putc(' ', outstream);
!               if(strcmp(ILPInvoke_Alias(pinvoke), ILMethod_Name(method)) != 0)
!               {
!                       fputs("as ", outstream);
!                       ILDumpString(outstream, ILPInvoke_Alias(pinvoke));
!                       putc(' ', outstream);
!               }
!               ILDumpFlags(outstream, ILPInvoke_Attrs(pinvoke),
!                                       ILPInvokeImplementationFlags, 0);
!               fputs(") ", outstream);
        }
        ILDumpMethodType(outstream, info->image,
--- 749,753 ----
        {
                /* Dump PInvoke information for the method */
!               DumpPInvoke(info, outstream, pinvoke, (ILMember *)method);
        }
        ILDumpMethodType(outstream, info->image,





reply via email to

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