Repository : ssh://darcs.haskell.org//srv/darcs/ghc On branch : ghc-7.2
http://hackage.haskell.org/trac/ghc/changeset/f76b47f3e9e086a6204561bc22da5e1f503fa00d >--------------------------------------------------------------- commit f76b47f3e9e086a6204561bc22da5e1f503fa00d Author: Simon Marlow <[email protected]> Date: Thu Jun 30 15:50:19 2011 +0100 update freeHaskellFuncationPtr following changes to x86 adjustors (fixes various ffi test failures on x86. This change was supposed to be part of 9f61598ce7b0cb3448e8f0c3d627c0ca47b7f55f, but somehow it got lost). >--------------------------------------------------------------- rts/Adjustor.c | 16 ++++------------ 1 files changed, 4 insertions(+), 12 deletions(-) diff --git a/rts/Adjustor.c b/rts/Adjustor.c index 0d58293..038c649 100644 --- a/rts/Adjustor.c +++ b/rts/Adjustor.c @@ -1067,25 +1067,17 @@ TODO: Depending on how much allocation overhead stgMallocBytes uses for void freeHaskellFunctionPtr(void* ptr) { -#if defined(i386_HOST_ARCH) && !defined(darwin_HOST_OS) - if ( *(unsigned char*)ptr != 0x68 && +#if defined(i386_HOST_ARCH) + if ( *(unsigned char*)ptr != 0xe8 && *(unsigned char*)ptr != 0x58 ) { errorBelch("freeHaskellFunctionPtr: not for me, guv! %p\n", ptr); return; } - - /* Free the stable pointer first..*/ - if (*(unsigned char*)ptr == 0x68) { /* Aha, a ccall adjustor! */ - freeStablePtr(*((StgStablePtr*)((unsigned char*)ptr + 0x01))); + if (*(unsigned char*)ptr == 0xe8) { /* Aha, a ccall adjustor! */ + freeStablePtr(((AdjustorStub*)ptr)->hptr); } else { freeStablePtr(*((StgStablePtr*)((unsigned char*)ptr + 0x02))); } -#elif defined(i386_HOST_ARCH) && defined(darwin_HOST_OS) -if ( *(unsigned char*)ptr != 0xe8 ) { - errorBelch("freeHaskellFunctionPtr: not for me, guv! %p\n", ptr); - return; - } - freeStablePtr(((AdjustorStub*)ptr)->hptr); #elif defined(x86_64_HOST_ARCH) if ( *(StgWord16 *)ptr == 0x894d ) { freeStablePtr(*(StgStablePtr*)((StgWord8*)ptr+0x20)); _______________________________________________ Cvs-ghc mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-ghc
