* configure.in (RUBY_FUNC_ATTRIBUTE): check for function attribute.
[ruby-dev:26109] * eval.c, gc.c: moved noinline to configure.in. * rubyio.h (DEPRECATED): moved to configure.in. * ruby.h (DEPRECATED, NOINLINE): default definition. * win{32,ce}/Makefile.sub (config.h): deprecated and noinline for __declspec() are available for VC++7 or later. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8394 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
6d69a240b8
commit
27a9df2a6b
16
ChangeLog
16
ChangeLog
@ -1,3 +1,17 @@
|
|||||||
|
Sat Apr 30 11:59:25 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* configure.in (RUBY_FUNC_ATTRIBUTE): check for function attribute.
|
||||||
|
[ruby-dev:26109]
|
||||||
|
|
||||||
|
* eval.c, gc.c: moved noinline to configure.in.
|
||||||
|
|
||||||
|
* rubyio.h (DEPRECATED): moved to configure.in.
|
||||||
|
|
||||||
|
* ruby.h (DEPRECATED, NOINLINE): default definition.
|
||||||
|
|
||||||
|
* win{32,ce}/Makefile.sub (config.h): deprecated and noinline for
|
||||||
|
__declspec() are available for VC++7 or later.
|
||||||
|
|
||||||
Sat Apr 30 06:57:39 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
|
Sat Apr 30 06:57:39 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
|
||||||
|
|
||||||
* lib/webrick/cgi.rb: new methods WEBrick::CGI#[], WEBrick::CGI#logger
|
* lib/webrick/cgi.rb: new methods WEBrick::CGI#[], WEBrick::CGI#logger
|
||||||
@ -10,7 +24,7 @@ Sat Apr 30 06:57:39 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
|
|||||||
if SERVER_SOFTWARE environment variable is not given.
|
if SERVER_SOFTWARE environment variable is not given.
|
||||||
(WEBrick::CGI#start): req.path_info must be a String.
|
(WEBrick::CGI#start): req.path_info must be a String.
|
||||||
(WEBrick::CGI::Socket#request_line): treat REQUEST_METHOD, PATH_INFO
|
(WEBrick::CGI::Socket#request_line): treat REQUEST_METHOD, PATH_INFO
|
||||||
and SCRIPT_NAME to run in console.
|
and SCRIPT_NAME to run in console.
|
||||||
|
|
||||||
* lib/webrick/httputils.rb (WEBrick::HTTPUtils.escape_path): should
|
* lib/webrick/httputils.rb (WEBrick::HTTPUtils.escape_path): should
|
||||||
not use String#split("/"). it removes trailing empty path component.
|
not use String#split("/"). it removes trailing empty path component.
|
||||||
|
47
configure.in
47
configure.in
@ -263,16 +263,45 @@ if test "$rb_cv_stdarg" = yes; then
|
|||||||
AC_DEFINE(HAVE_STDARG_PROTOTYPES)
|
AC_DEFINE(HAVE_STDARG_PROTOTYPES)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_CACHE_CHECK([for noreturn], rb_cv_noreturn,
|
AC_DEFUN(RUBY_FUNC_ATTRIBUTE, [dnl
|
||||||
[rb_cv_noreturn=x
|
m4_ifval([$2], dnl
|
||||||
for mac in "x __attribute__ ((noreturn))" "__declspec(noreturn) x" x; do
|
[AS_VAR_PUSHDEF([attrib],[$2])], dnl
|
||||||
|
[AS_VAR_PUSHDEF([attrib],[FUNC_]AS_TR_CPP($1))] dnl
|
||||||
|
)dnl
|
||||||
|
m4_ifval([$3], dnl
|
||||||
|
[AS_VAR_PUSHDEF([rbcv],[$3])], dnl
|
||||||
|
[AS_VAR_PUSHDEF([rbcv],[rb_cv_func_][$1])]dnl
|
||||||
|
)dnl
|
||||||
|
AC_CACHE_CHECK(for [$1] function attribute, rbcv,
|
||||||
|
[rbcv=x
|
||||||
|
if test "${ac_c_werror_flag+set}"; then
|
||||||
|
rb_c_werror_flag="$ac_c_werror_flag"
|
||||||
|
else
|
||||||
|
unset rb_c_werror_flag
|
||||||
|
fi
|
||||||
|
ac_c_werror_flag=yes
|
||||||
|
for mac in "x __attribute__ (($1))" "__declspec($1) x" x; do
|
||||||
AC_TRY_COMPILE(
|
AC_TRY_COMPILE(
|
||||||
[#define NORETURN(x) $mac
|
[#define ]attrib[(x) $mac
|
||||||
NORETURN(void exit(int x));],
|
]attrib[(void conftest_attribute_check(void));], [],
|
||||||
[],
|
[rbcv="$mac"; break])
|
||||||
[rb_cv_noreturn="$mac"; break])
|
done
|
||||||
done])
|
if test "${rb_c_werror_flag+set}"; then
|
||||||
AC_DEFINE_UNQUOTED([NORETURN(x)], $rb_cv_noreturn)
|
ac_c_werror_flag="$rb_c_werror_flag"
|
||||||
|
else
|
||||||
|
unset ac_c_werror_flag
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
AC_DEFINE_UNQUOTED(attrib[(x)], $rbcv)
|
||||||
|
AS_VAR_POPDEF([attrib])
|
||||||
|
AS_VAR_POPDEF([rbcv])
|
||||||
|
])
|
||||||
|
|
||||||
|
RUBY_FUNC_ATTRIBUTE(noreturn, NORETURN)
|
||||||
|
RUBY_FUNC_ATTRIBUTE(deprecated, DEPRECATED)
|
||||||
|
RUBY_FUNC_ATTRIBUTE(noinline, NOINLINE)
|
||||||
|
RUBY_FUNC_ATTRIBUTE(stdcall)
|
||||||
|
RUBY_FUNC_ATTRIBUTE(cdecl)
|
||||||
|
|
||||||
dnl Check whether we need to define sys_nerr locally
|
dnl Check whether we need to define sys_nerr locally
|
||||||
AC_CHECK_DECLS([sys_nerr], [], [], [$ac_includes_default
|
AC_CHECK_DECLS([sys_nerr], [], [], [$ac_includes_default
|
||||||
|
4
eval.c
4
eval.c
@ -10255,10 +10255,8 @@ rb_thread_switch(n)
|
|||||||
rb_thread_switch((FLUSH_REGISTER_WINDOWS, setjmp((th)->context))))
|
rb_thread_switch((FLUSH_REGISTER_WINDOWS, setjmp((th)->context))))
|
||||||
|
|
||||||
NORETURN(static void rb_thread_restore_context _((rb_thread_t,int)));
|
NORETURN(static void rb_thread_restore_context _((rb_thread_t,int)));
|
||||||
|
NOINLINE(static void stack_extend _((rb_thread_t, int)));
|
||||||
|
|
||||||
# if _MSC_VER >= 1300
|
|
||||||
__declspec(noinline) static void stack_extend(rb_thread_t, int);
|
|
||||||
# endif
|
|
||||||
static void
|
static void
|
||||||
stack_extend(th, exit)
|
stack_extend(th, exit)
|
||||||
rb_thread_t th;
|
rb_thread_t th;
|
||||||
|
9
gc.c
9
gc.c
@ -429,11 +429,8 @@ static unsigned int STACK_LEVEL_MAX = 655300;
|
|||||||
# define STACK_LEVEL_MAX 655300
|
# define STACK_LEVEL_MAX 655300
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __GNUC__
|
NOINLINE(static void set_stack_end _((VALUE **stack_end_p)));
|
||||||
# if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3
|
|
||||||
__attribute__ ((noinline))
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
static void
|
static void
|
||||||
set_stack_end(VALUE **stack_end_p)
|
set_stack_end(VALUE **stack_end_p)
|
||||||
{
|
{
|
||||||
@ -510,7 +507,7 @@ init_mark_stack()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define MARK_STACK_EMPTY (mark_stack_ptr == mark_stack)
|
#define MARK_STACK_EMPTY (mark_stack_ptr == mark_stack)
|
||||||
|
|
||||||
static st_table *source_filenames;
|
static st_table *source_filenames;
|
||||||
|
|
||||||
char *
|
char *
|
||||||
|
14
ruby.h
14
ruby.h
@ -56,6 +56,12 @@ extern "C" {
|
|||||||
#ifndef NORETURN
|
#ifndef NORETURN
|
||||||
# define NORETURN(x) x
|
# define NORETURN(x) x
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef DEPRECATED
|
||||||
|
# define DEPRECATED(x) x
|
||||||
|
#endif
|
||||||
|
#ifndef NOINLINE
|
||||||
|
# define NOINLINE(x) x
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(HAVE_ALLOCA_H)
|
#if defined(HAVE_ALLOCA_H)
|
||||||
#include <alloca.h>
|
#include <alloca.h>
|
||||||
@ -633,12 +639,12 @@ rb_class_of(obj)
|
|||||||
VALUE obj;
|
VALUE obj;
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if(IMMEDIATE_P(obj)){
|
if (IMMEDIATE_P(obj)) {
|
||||||
if (FIXNUM_P(obj)) return rb_cFixnum;
|
if (FIXNUM_P(obj)) return rb_cFixnum;
|
||||||
if (obj == Qtrue) return rb_cTrueClass;
|
if (obj == Qtrue) return rb_cTrueClass;
|
||||||
if (SYMBOL_P(obj)) return rb_cSymbol;
|
if (SYMBOL_P(obj)) return rb_cSymbol;
|
||||||
}
|
}
|
||||||
else if(!RTEST(obj)){
|
else if (!RTEST(obj)) {
|
||||||
if (obj == Qnil) return rb_cNilClass;
|
if (obj == Qnil) return rb_cNilClass;
|
||||||
if (obj == Qfalse) return rb_cFalseClass;
|
if (obj == Qfalse) return rb_cFalseClass;
|
||||||
}
|
}
|
||||||
@ -653,13 +659,13 @@ rb_type(obj)
|
|||||||
VALUE obj;
|
VALUE obj;
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if(IMMEDIATE_P(obj)){
|
if (IMMEDIATE_P(obj)) {
|
||||||
if (FIXNUM_P(obj)) return T_FIXNUM;
|
if (FIXNUM_P(obj)) return T_FIXNUM;
|
||||||
if (obj == Qtrue) return T_TRUE;
|
if (obj == Qtrue) return T_TRUE;
|
||||||
if (SYMBOL_P(obj)) return T_SYMBOL;
|
if (SYMBOL_P(obj)) return T_SYMBOL;
|
||||||
if (obj == Qundef) return T_UNDEF;
|
if (obj == Qundef) return T_UNDEF;
|
||||||
}
|
}
|
||||||
else if(!RTEST(obj)){
|
else if (!RTEST(obj)) {
|
||||||
if (obj == Qnil) return T_NIL;
|
if (obj == Qnil) return T_NIL;
|
||||||
if (obj == Qfalse) return T_FALSE;
|
if (obj == Qfalse) return T_FALSE;
|
||||||
}
|
}
|
||||||
|
9
rubyio.h
9
rubyio.h
@ -99,15 +99,6 @@ void rb_io_read_check _((OpenFile*));
|
|||||||
int rb_io_read_pending _((OpenFile*));
|
int rb_io_read_pending _((OpenFile*));
|
||||||
void rb_read_check _((FILE*));
|
void rb_read_check _((FILE*));
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
# if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3
|
|
||||||
# define DEPRECATED(x) x __attribute__ ((deprecated))
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#ifndef DEPRECATED
|
|
||||||
# define DEPRECATED(x) x
|
|
||||||
#endif
|
|
||||||
|
|
||||||
DEPRECATED(int rb_getc _((FILE*)));
|
DEPRECATED(int rb_getc _((FILE*)));
|
||||||
DEPRECATED(long rb_io_fread _((char *, long, FILE *)));
|
DEPRECATED(long rb_io_fread _((char *, long, FILE *)));
|
||||||
DEPRECATED(long rb_io_fwrite _((const char *, long, FILE *)));
|
DEPRECATED(long rb_io_fwrite _((const char *, long, FILE *)));
|
||||||
|
@ -220,6 +220,10 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub
|
|||||||
#if _MSC_VER > 1100
|
#if _MSC_VER > 1100
|
||||||
#define NORETURN(x) __declspec(noreturn) x
|
#define NORETURN(x) __declspec(noreturn) x
|
||||||
#endif
|
#endif
|
||||||
|
#if _MSC_VER >= 1300
|
||||||
|
#define DEPRECATED(x) __declspec(deprecated) x
|
||||||
|
#define NOINLINE(x) __declspec(noinline) x
|
||||||
|
#endif
|
||||||
#define HAVE_DECL_SYS_NERR 1
|
#define HAVE_DECL_SYS_NERR 1
|
||||||
#define HAVE_LIMITS_H 1
|
#define HAVE_LIMITS_H 1
|
||||||
#define HAVE_FCNTL_H 1
|
#define HAVE_FCNTL_H 1
|
||||||
|
@ -223,6 +223,10 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/wince/Makefile.sub
|
|||||||
#if _MSC_VER > 1100
|
#if _MSC_VER > 1100
|
||||||
#define NORETURN(x) __declspec(noreturn) x
|
#define NORETURN(x) __declspec(noreturn) x
|
||||||
#endif
|
#endif
|
||||||
|
#if _MSC_VER >= 1300
|
||||||
|
#define DEPRECATED(x) __declspec(deprecated) x
|
||||||
|
#define NOINLINE(x) __declspec(noinline) x
|
||||||
|
#endif
|
||||||
#define HAVE_DECL_SYS_NERR 1
|
#define HAVE_DECL_SYS_NERR 1
|
||||||
#define HAVE_FCNTL_H 1
|
#define HAVE_FCNTL_H 1
|
||||||
#define HAVE_SYS_UTIME_H 1
|
#define HAVE_SYS_UTIME_H 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user