* defines.h (FLUSH_REGISTER_WINDOWS): defined for IA64.

(flush_register_windows): declare flush_register_windows.

* eval.c (flush_register_windows): new function.

* ruby.h (NOINLINE): move up to be effective in defines.h.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8696 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akr 2005-07-02 08:11:24 +00:00
Родитель 12bed479ec
Коммит 7215b72363
4 изменённых файлов: 27 добавлений и 3 удалений

Просмотреть файл

@ -1,3 +1,12 @@
Sat Jul 2 17:06:23 2005 Tanaka Akira <akr@m17n.org>
* defines.h (FLUSH_REGISTER_WINDOWS): defined for IA64.
(flush_register_windows): declare flush_register_windows.
* eval.c (flush_register_windows): new function.
* ruby.h (NOINLINE): move up to be effective in defines.h.
Sat Jul 2 15:19:41 2005 Tanaka Akira <akr@m17n.org>
* configure.in: check select_large_fdset.

Просмотреть файл

@ -229,6 +229,9 @@ flush_register_windows(void)
;
}
# define FLUSH_REGISTER_WINDOWS flush_register_windows()
#elif defined(__ia64__)
NOINLINE(void flush_register_windows(void));
# define FLUSH_REGISTER_WINDOWS flush_register_windows()
#else
# define FLUSH_REGISTER_WINDOWS ((void)0)
#endif

10
eval.c
Просмотреть файл

@ -13410,3 +13410,13 @@ rb_exec_recursive(func, obj, arg)
return result;
}
}
/* flush_register_windows must not be inlined because flushrs doesn't flush
* current frame in register stack. */
#ifdef __ia64__
void flush_register_windows(void)
{
__asm__ ("flushrs");
}
#endif

8
ruby.h
Просмотреть файл

@ -19,6 +19,11 @@ extern "C" {
#endif
#include "config.h"
#ifndef NOINLINE
# define NOINLINE(x) x
#endif
#include "defines.h"
#ifdef HAVE_STDLIB_H
@ -59,9 +64,6 @@ extern "C" {
#ifndef DEPRECATED
# define DEPRECATED(x) x
#endif
#ifndef NOINLINE
# define NOINLINE(x) x
#endif
#if defined(HAVE_ALLOCA_H)
#include <alloca.h>