From 22b07f548866252372cb0b4a705ee9c6daf8807d Mon Sep 17 00:00:00 2001 From: ttate Date: Sat, 11 May 2002 23:13:34 +0000 Subject: enable dl's stack emulation for constructing function call. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/dl/dl.h | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'ext/dl/dl.h') diff --git a/ext/dl/dl.h b/ext/dl/dl.h index a88e95d66f..ceee8c5384 100644 --- a/ext/dl/dl.h +++ b/ext/dl/dl.h @@ -142,8 +142,8 @@ #if defined(USE_INLINE_ASM) # if defined(__i386__) && defined(__GNUC__) -# define ASM_START(type) -# define ASM_END(type) +# define ASM_START(sym) +# define ASM_END(sym) # define ASM_PUSH_C(x) asm volatile ("pushl %0" :: "g" (x)); # define ASM_PUSH_H(x) asm volatile ("pushl %0" :: "g" (x)); # define ASM_PUSH_I(x) asm volatile ("pushl %0" :: "g" (x)); @@ -158,15 +158,16 @@ # else # error --with-asm is not supported on this machine # endif -#else -# define ASM_START(type) -# define ASM_END(type) -# define ASM_PUSH_C(x) -# define ASM_PUSH_I(x) -# define ASM_PUSH_L(x) -# define ASM_PUSH_P(x) -# define ASM_PUSH_F(x) -# define ASM_PUSH_D(x) +#elif defined(USE_DLSTACK) +# define ASM_START(sym) +# define ASM_END(sym) +# define ASM_PUSH_C(x) memcpy(sp,&x,1); sp++; +# define ASM_PUSH_H(x) memcpy(sp,&x,sizeof(short)); sp++; +# define ASM_PUSH_I(x) memcpy(sp,&x,sizeof(int)); sp++; +# define ASM_PUSH_L(x) memcpy(sp,&x,sizeof(long)); sp++; +# define ASM_PUSH_P(x) memcpy(sp,&x,sizeof(void*)); sp++; +# define ASM_PUSH_F(x) memcpy(sp,&x,sizeof(float)); sp+=sizeof(float)/sizeof(long); +# define ASM_PUSH_D(x) memcpy(sp,&x,sizeof(double)); sp+=sizeof(double)/sizeof(long); #endif extern VALUE rb_mDL; -- cgit v1.2.3