mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
typedef rb_jmpbuf_t to void *[5] if __builtin_setjmp is used
The built-in version operates on a buffer of 5 words, much smaller than the size of jmp_buf defined in libc. Note, powerpc requires 5 words, while arm and x86_64 just require 3.
This commit is contained in:
parent
27144de2bd
commit
e006b992c2
Notes:
git
2019-09-21 13:25:23 +09:00
2 changed files with 5 additions and 1 deletions
|
@ -47,6 +47,6 @@ AS_IF([test x$setjmp_prefix:$setjmp_sigmask = xsig:], [
|
||||||
AC_MSG_RESULT(${setjmp_prefix}setjmp${setjmp_suffix}${setjmp_cast:+\($setjmp_cast\)}${setjmp_sigmask})
|
AC_MSG_RESULT(${setjmp_prefix}setjmp${setjmp_suffix}${setjmp_cast:+\($setjmp_cast\)}${setjmp_sigmask})
|
||||||
AC_DEFINE_UNQUOTED([RUBY_SETJMP(env)], [${setjmp_prefix}setjmp${setjmp_suffix}($setjmp_cast(env)${setjmp_sigmask})])
|
AC_DEFINE_UNQUOTED([RUBY_SETJMP(env)], [${setjmp_prefix}setjmp${setjmp_suffix}($setjmp_cast(env)${setjmp_sigmask})])
|
||||||
AC_DEFINE_UNQUOTED([RUBY_LONGJMP(env,val)], [${setjmp_prefix}longjmp($setjmp_cast(env),val)])
|
AC_DEFINE_UNQUOTED([RUBY_LONGJMP(env,val)], [${setjmp_prefix}longjmp($setjmp_cast(env),val)])
|
||||||
AC_DEFINE_UNQUOTED(RUBY_JMP_BUF, ${setjmp_sigmask+${setjmp_prefix}}jmp_buf)
|
AS_IF([test x$setjmp_prefix != x__builtin_], AC_DEFINE_UNQUOTED(RUBY_JMP_BUF, ${setjmp_sigmask+${setjmp_prefix}}jmp_buf))
|
||||||
AS_IF([test x$setjmp_suffix = xex], [AC_DEFINE_UNQUOTED(RUBY_USE_SETJMPEX, 1)])
|
AS_IF([test x$setjmp_suffix = xex], [AC_DEFINE_UNQUOTED(RUBY_USE_SETJMPEX, 1)])
|
||||||
])dnl
|
])dnl
|
||||||
|
|
|
@ -775,7 +775,11 @@ enum rb_thread_status {
|
||||||
THREAD_KILLED
|
THREAD_KILLED
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef RUBY_JMP_BUF
|
||||||
typedef RUBY_JMP_BUF rb_jmpbuf_t;
|
typedef RUBY_JMP_BUF rb_jmpbuf_t;
|
||||||
|
#else
|
||||||
|
typedef void *rb_jmpbuf_t[5];
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
the members which are written in EC_PUSH_TAG() should be placed at
|
the members which are written in EC_PUSH_TAG() should be placed at
|
||||||
|
|
Loading…
Add table
Reference in a new issue