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

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

[Dotgnu-pnet-commits] pnet/libffi/src/x86 ffi.c,1.3,1.4


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] pnet/libffi/src/x86 ffi.c,1.3,1.4
Date: Tue, 07 Oct 2003 22:23:57 +0000

Update of /cvsroot/dotgnu-pnet/pnet/libffi/src/x86
In directory subversions:/tmp/cvs-serv23550/libffi/src/x86

Modified Files:
        ffi.c 
Log Message:


Use an alternative mechanism for getting the argument address in closures,
because the previous one didn't work on all platforms.


Index: ffi.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libffi/src/x86/ffi.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** ffi.c       6 Feb 2003 01:15:39 -0000       1.3
--- ffi.c       7 Oct 2003 22:23:55 -0000       1.4
***************
*** 225,229 ****
  
  static void
! ffi_closure_SYSV ()
  {
    // this is our return value storage
--- 225,229 ----
  
  static void
! ffi_closure_SYSV (int arg1)
  {
    // this is our return value storage
***************
*** 243,247 ****
    cif         = closure->cif;
    arg_area    = (void**) alloca (cif->nargs * sizeof (void*));  
!   asm ("leal 8(%%ebp),%0" : "=q" (args));  
  
    /* this call will initialize ARG_AREA, such that each
--- 243,248 ----
    cif         = closure->cif;
    arg_area    = (void**) alloca (cif->nargs * sizeof (void*));  
!   /*asm ("leal 8(%%ebp),%0" : "=q" (args));  */
!   args        = (void *)&arg1;
  
    /* this call will initialize ARG_AREA, such that each
***************
*** 365,369 ****
  
  static void
! ffi_closure_raw_SYSV ()
  {
    // this is our return value storage
--- 366,370 ----
  
  static void
! ffi_closure_raw_SYSV (int arg1)
  {
    // this is our return value storage
***************
*** 382,386 ****
  
    /* take the argument pointer */
!   asm ("leal 8(%%ebp),%0" : "=q" (args));  
  
    /* get the cif */
--- 383,388 ----
  
    /* take the argument pointer */
!   /*asm ("leal 8(%%ebp),%0" : "=q" (args));  */
!   args = (void *)&arg1;
  
    /* get the cif */





reply via email to

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