diff options
-rwxr-xr-x | common.mk | 2 | ||||
-rw-r--r-- | configure.ac | 33 | ||||
-rw-r--r-- | cont.c | 93 | ||||
-rw-r--r-- | dln.c | 4 | ||||
-rw-r--r-- | ext/etc/etc.c | 6 | ||||
-rw-r--r-- | gc.c | 25 | ||||
-rw-r--r-- | ia64.S | 42 | ||||
-rw-r--r-- | include/ruby/defines.h | 4 | ||||
-rw-r--r-- | include/ruby/ruby.h | 6 | ||||
-rw-r--r-- | thread.c | 22 | ||||
-rw-r--r-- | thread_pthread.c | 75 | ||||
-rw-r--r-- | thread_win32.c | 2 | ||||
-rw-r--r-- | tool/m4/ruby_stack_grow_direction.m4 | 2 | ||||
-rw-r--r-- | vm.c | 3 | ||||
-rw-r--r-- | vm_core.h | 5 | ||||
-rw-r--r-- | vm_dump.c | 8 | ||||
-rw-r--r-- | win32/Makefile.sub | 12 | ||||
-rw-r--r-- | win32/README.win32 | 4 | ||||
-rwxr-xr-x | win32/configure.bat | 3 | ||||
-rw-r--r-- | win32/setup.mak | 5 |
20 files changed, 24 insertions, 332 deletions
@@ -917,8 +917,6 @@ strlcat.$(OBJEXT): {$(VPATH)}strlcat.c strlcpy.$(OBJEXT): {$(VPATH)}strlcpy.c strstr.$(OBJEXT): {$(VPATH)}strstr.c nt.$(OBJEXT): {$(VPATH)}nt.c -ia64.$(OBJEXT): {$(VPATH)}ia64.s - $(CC) $(CFLAGS) -c $< .coroutine_obj $(COROUTINE_OBJ): \ {$(VPATH)}$(COROUTINE_H:.h=).$(ASMEXT) \ $(COROUTINE_H:/Context.h=/.time) diff --git a/configure.ac b/configure.ac index bed27c98f0..5d13a0af01 100644 --- a/configure.ac +++ b/configure.ac @@ -1687,24 +1687,6 @@ AS_IF([test "x$ALLOCA" = "x"], [ ]) AC_FUNC_MEMCMP -# http://sources.redhat.com/ml/libc-hacker/2005-08/msg00008.html -# Debian GNU/Linux Etch's libc6.1 2.3.6.ds1-13etch5 has this problem. -# Debian GNU/Linux Lenny's libc6.1 2.7-10 has no problem. -AC_CACHE_CHECK(for broken erfc of glibc-2.3.6 on IA64, rb_cv_broken_glibc_ia64_erfc, - [AC_TRY_RUN([ -#include <math.h> -int -main() -{ - erfc(10000.0); - return 0; -} -], - rb_cv_broken_glibc_ia64_erfc=no, - rb_cv_broken_glibc_ia64_erfc=yes, - rb_cv_broken_glibc_ia64_erfc=no)]) -AS_CASE([$rb_cv_broken_glibc_ia64_erfc],[yes],[ac_cv_func_erf=no]) - AS_CASE(["$target_os"],[freebsd*],[ AC_DEFINE(BROKEN_CLOSE) AC_REPLACE_FUNCS(close) @@ -2217,21 +2199,6 @@ AS_IF([test x"$ac_cv_func_dirfd" = xno], [ ])]) ]) -AS_IF([test x"$target_cpu" = xia64], [ - AC_LIBOBJ([ia64]) - AC_CACHE_CHECK(for __libc_ia64_register_backing_store_base, - rb_cv___libc_ia64_register_backing_store_base, - [rb_cv___libc_ia64_register_backing_store_base=no - AC_TRY_LINK( - [extern unsigned long __libc_ia64_register_backing_store_base;], - [unsigned long p = __libc_ia64_register_backing_store_base; - printf("%ld\n", p);], - [rb_cv___libc_ia64_register_backing_store_base=yes])]) - AS_IF([test $rb_cv___libc_ia64_register_backing_store_base = yes], [ - AC_DEFINE(HAVE___LIBC_IA64_REGISTER_BACKING_STORE_BASE) - ]) -]) - AC_CACHE_CHECK(whether right shift preserve sign bit, rb_cv_rshift_sign, [AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([], [(-1==(-1>>1))])], rb_cv_rshift_sign=yes, @@ -61,10 +61,6 @@ /* On Solaris because resuming any Fiber caused SEGV, for some reason. */ # define FIBER_USE_NATIVE 0 -# elif defined(__ia64) -/* At least, Linux/ia64's getcontext(3) doesn't save register window. - */ -# define FIBER_USE_NATIVE 0 # elif defined(__GNU__) /* GNU/Hurd doesn't fully support getcontext, setcontext, makecontext * and swapcontext functions. Disabling their usage till support is @@ -121,11 +117,6 @@ typedef struct rb_context_struct { VALUE *stack; VALUE *stack_src; size_t stack_size; -#ifdef __ia64 - VALUE *register_stack; - VALUE *register_stack_src; - int register_stack_size; -#endif } machine; rb_execution_context_t saved_ec; int free_vm_stack; @@ -386,12 +377,6 @@ cont_mark(void *ptr) } } } -#ifdef __ia64 - if (cont->machine.register_stack) { - rb_gc_mark_locations(cont->machine.register_stack, - cont->machine.register_stack + cont->machine.register_stack_size); - } -#endif RUBY_MARK_LEAVE("cont"); } @@ -453,9 +438,6 @@ cont_free(void *ptr) ruby_xfree(cont->ensure_array); RUBY_FREE_UNLESS_NULL(cont->machine.stack); #endif -#ifdef __ia64 - RUBY_FREE_UNLESS_NULL(cont->machine.register_stack); -#endif RUBY_FREE_UNLESS_NULL(cont->saved_vm_stack.ptr); if (mjit_enabled && cont->mjit_cont != NULL) { @@ -485,11 +467,7 @@ cont_memsize(const void *ptr) if (cont->machine.stack) { size += cont->machine.stack_size * sizeof(*cont->machine.stack); } -#ifdef __ia64 - if (cont->machine.register_stack) { - size += cont->machine.register_stack_size * sizeof(*cont->machine.register_stack); - } -#endif + return size; } @@ -598,9 +576,6 @@ cont_save_machine_stack(rb_thread_t *th, rb_context_t *cont) size_t size; SET_MACHINE_STACK_END(&th->ec->machine.stack_end); -#ifdef __ia64 - th->ec->machine.register_stack_end = rb_ia64_bsp(); -#endif if (th->ec->machine.stack_start > th->ec->machine.stack_end) { size = cont->machine.stack_size = th->ec->machine.stack_start - th->ec->machine.stack_end; @@ -620,20 +595,6 @@ cont_save_machine_stack(rb_thread_t *th, rb_context_t *cont) FLUSH_REGISTER_WINDOWS; MEMCPY(cont->machine.stack, cont->machine.stack_src, VALUE, size); - -#ifdef __ia64 - rb_ia64_flushrs(); - size = cont->machine.register_stack_size = th->ec->machine.register_stack_end - th->ec->machine.register_stack_start; - cont->machine.register_stack_src = th->ec->machine.register_stack_start; - if (cont->machine.register_stack) { - REALLOC_N(cont->machine.register_stack, VALUE, size); - } - else { - cont->machine.register_stack = ALLOC_N(VALUE, size); - } - - MEMCPY(cont->machine.register_stack, cont->machine.register_stack_src, VALUE, size); -#endif } static const rb_data_type_t cont_data_type = { @@ -655,10 +616,6 @@ cont_save_thread(rb_context_t *cont, rb_thread_t *th) /* saved_ec->machine.stack_end should be NULL */ /* because it may happen GC afterward */ sec->machine.stack_end = NULL; - -#ifdef __ia64 - sec->machine.register_stack_end = NULL; -#endif } static void @@ -993,9 +950,6 @@ fiber_initialize_machine_stack_context(rb_fiber_t *fib, size_t size) sec->machine.stack_start = (VALUE*)(ptr + STACK_DIR_UPPER(0, size)); sec->machine.stack_maxsize = size - RB_PAGE_SIZE; #endif -#ifdef __ia64 - sth->machine.register_stack_maxsize = sth->machine.stack_maxsize; -#endif } NOINLINE(static void fiber_setcontext(rb_fiber_t *newfib, rb_fiber_t *oldfib)); @@ -1065,53 +1019,11 @@ cont_restore_1(rb_context_t *cont) VALUE, cont->machine.stack_size); } -#ifdef __ia64 - if (cont->machine.register_stack_src) { - MEMCPY(cont->machine.register_stack_src, cont->machine.register_stack, - VALUE, cont->machine.register_stack_size); - } -#endif - ruby_longjmp(cont->jmpbuf, 1); } NORETURN(NOINLINE(static void cont_restore_0(rb_context_t *, VALUE *))); -#ifdef __ia64 -#define C(a) rse_##a##0, rse_##a##1, rse_##a##2, rse_##a##3, rse_##a##4 -#define E(a) rse_##a##0= rse_##a##1= rse_##a##2= rse_##a##3= rse_##a##4 -static volatile int C(a), C(b), C(c), C(d), C(e); -static volatile int C(f), C(g), C(h), C(i), C(j); -static volatile int C(k), C(l), C(m), C(n), C(o); -static volatile int C(p), C(q), C(r), C(s), C(t); -#if 0 -{/* the above lines make cc-mode.el confused so much */} -#endif -int rb_dummy_false = 0; -NORETURN(NOINLINE(static void register_stack_extend(rb_context_t *, VALUE *, VALUE *))); -static void -register_stack_extend(rb_context_t *cont, VALUE *vp, VALUE *curr_bsp) -{ - if (rb_dummy_false) { - /* use registers as much as possible */ - E(a) = E(b) = E(c) = E(d) = E(e) = - E(f) = E(g) = E(h) = E(i) = E(j) = - E(k) = E(l) = E(m) = E(n) = E(o) = - E(p) = E(q) = E(r) = E(s) = E(t) = 0; - E(a) = E(b) = E(c) = E(d) = E(e) = - E(f) = E(g) = E(h) = E(i) = E(j) = - E(k) = E(l) = E(m) = E(n) = E(o) = - E(p) = E(q) = E(r) = E(s) = E(t) = 0; - } - if (curr_bsp < cont->machine.register_stack_src+cont->machine.register_stack_size) { - register_stack_extend(cont, vp, (VALUE*)rb_ia64_bsp()); - } - cont_restore_0(cont, vp); -} -#undef C -#undef E -#endif - static void cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame) { @@ -1160,9 +1072,6 @@ cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame) } cont_restore_1(cont); } -#ifdef __ia64 -#define cont_restore_0(cont, vp) register_stack_extend((cont), (vp), (VALUE*)rb_ia64_bsp()) -#endif /* * Document-class: Continuation @@ -1171,7 +1171,7 @@ dln_strerror(void) } #endif -#if defined(_AIX) && ! defined(_IA64) +#if defined(_AIX) static void aix_loaderror(const char *pathname) { @@ -1400,7 +1400,7 @@ dln_load(const char *file) } #endif /* hpux */ -#if defined(_AIX) && ! defined(_IA64) +#if defined(_AIX) #define DLN_DEFINED { void (*init_fct)(); diff --git a/ext/etc/etc.c b/ext/etc/etc.c index 2dd4ed673e..93b19f12f5 100644 --- a/ext/etc/etc.c +++ b/ext/etc/etc.c @@ -754,9 +754,6 @@ etc_uname(VALUE obj) # ifndef PROCESSOR_ARCHITECTURE_AMD64 # define PROCESSOR_ARCHITECTURE_AMD64 9 # endif -# ifndef PROCESSOR_ARCHITECTURE_IA64 -# define PROCESSOR_ARCHITECTURE_IA64 6 -# endif # ifndef PROCESSOR_ARCHITECTURE_INTEL # define PROCESSOR_ARCHITECTURE_INTEL 0 # endif @@ -768,9 +765,6 @@ etc_uname(VALUE obj) case PROCESSOR_ARCHITECTURE_ARM: mach = "ARM"; break; - case PROCESSOR_ARCHITECTURE_IA64: - mach = "IA64"; - break; case PROCESSOR_ARCHITECTURE_INTEL: mach = "x86"; break; @@ -4324,11 +4324,7 @@ init_mark_stack(mark_stack_t *stack) /* Marking */ -#ifdef __ia64 -#define SET_STACK_END (SET_MACHINE_STACK_END(&ec->machine.stack_end), ec->machine.register_stack_end = rb_ia64_bsp()) -#else #define SET_STACK_END SET_MACHINE_STACK_END(&ec->machine.stack_end) -#endif #define STACK_START (ec->machine.stack_start) #define STACK_END (ec->machine.stack_end) @@ -4384,12 +4380,7 @@ stack_check(rb_execution_context_t *ec, int water_mark) int ret; SET_STACK_END; ret = STACK_LENGTH > STACK_LEVEL_MAX - water_mark; -#ifdef __ia64 - if (!ret) { - ret = (VALUE*)rb_ia64_bsp() - ec->machine.register_stack_start > - ec->machine.register_stack_maxsize/sizeof(VALUE) - water_mark; - } -#endif + return ret; } #else @@ -4719,11 +4710,7 @@ mark_stack_locations(rb_objspace_t *objspace, const rb_execution_context_t *ec, { gc_mark_locations(objspace, stack_start, stack_end); -#ifdef __ia64 - gc_mark_locations(objspace, - ec->machine.register_stack_start, - ec->machine.register_stack_end); -#endif + #if defined(__mc68000__) gc_mark_locations(objspace, (VALUE*)((char*)stack_start + 2), @@ -7230,14 +7217,6 @@ garbage_collect_with_gvl(rb_objspace_t *objspace, int reason) } } -#undef Init_stack - -void -Init_stack(volatile VALUE *addr) -{ - ruby_init_stack(addr); -} - /* * call-seq: * GC.start -> nil diff --git a/ia64.S b/ia64.S deleted file mode 100644 index 1087105585..0000000000 --- a/ia64.S +++ /dev/null @@ -1,42 +0,0 @@ -// rb_ia64_flushrs and rb_ia64_bsp is written in IA64 assembly language -// because Intel Compiler for IA64 doesn't support inline assembly. -// -// This file is based on following C program compiled by gcc. -// -// void rb_ia64_flushrs(void) { __builtin_ia64_flushrs(); } -// void *rb_ia64_bsp(void) { return __builtin_ia64_bsp(); } -// -// Note that rb_ia64_flushrs and rb_ia64_bsp works in its own stack frame. -// It's because BSP is updated by br.call/brl.call (not alloc instruction). -// So rb_ia64_flushrs flushes stack frames including caller's one. -// rb_ia64_bsp returns the address next to caller's register stack frame. -// -// See also -// Intel Itanium Architecture Software Developer's Manual -// Volume 2: System Architecture. -// - .file "ia64.c" - .text - .align 16 - .global rb_ia64_flushrs# - .proc rb_ia64_flushrs# -rb_ia64_flushrs: - .prologue - .body - flushrs - ;; - nop.i 0 - br.ret.sptk.many b0 - .endp rb_ia64_flushrs# - .align 16 - .global rb_ia64_bsp# - .proc rb_ia64_bsp# -rb_ia64_bsp: - .prologue - .body - nop.m 0 - ;; - mov r8 = ar.bsp - br.ret.sptk.many b0 - .endp rb_ia64_bsp# - .ident "GCC: (GNU) 3.3.5 (Debian 1:3.3.5-13)" diff --git a/include/ruby/defines.h b/include/ruby/defines.h index cbf5537790..5d890df854 100644 --- a/include/ruby/defines.h +++ b/include/ruby/defines.h @@ -401,10 +401,6 @@ ruby_xrealloc2_with_location(void *ptr, size_t s1, size_t s2, const char *file, #if defined(__sparc) void rb_sparc_flush_register_windows(void); # define FLUSH_REGISTER_WINDOWS rb_sparc_flush_register_windows() -#elif defined(__ia64) -void *rb_ia64_bsp(void); -void rb_ia64_flushrs(void); -# define FLUSH_REGISTER_WINDOWS rb_ia64_flushrs() #else # define FLUSH_REGISTER_WINDOWS ((void)0) #endif diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h index e698142514..281c3ff98e 100644 --- a/include/ruby/ruby.h +++ b/include/ruby/ruby.h @@ -2669,13 +2669,7 @@ void ruby_show_copyright(void); ruby_init_stack(&variable_in_this_stack_frame); /*! @} */ -#ifdef __ia64 -void ruby_init_stack(volatile VALUE*, void*); -#define ruby_init_stack(addr) ruby_init_stack((addr), rb_ia64_bsp()) -#else void ruby_init_stack(volatile VALUE*); -#endif -#define Init_stack(addr) ruby_init_stack(addr) int ruby_setup(void); int ruby_cleanup(volatile int); @@ -148,16 +148,9 @@ static inline int blocking_region_begin(rb_thread_t *th, struct rb_blocking_regi rb_unblock_function_t *ubf, void *arg, int fail_if_interrupted); static inline void blocking_region_end(rb_thread_t *th, struct rb_blocking_region_buffer *region); -#ifdef __ia64 -#define RB_GC_SAVE_MACHINE_REGISTER_STACK(th) \ - do{(th)->ec->machine.register_stack_end = rb_ia64_bsp();}while(0) -#else -#define RB_GC_SAVE_MACHINE_REGISTER_STACK(th) -#endif #define RB_GC_SAVE_MACHINE_CONTEXT(th) \ do { \ FLUSH_REGISTER_WINDOWS; \ - RB_GC_SAVE_MACHINE_REGISTER_STACK(th); \ setjmp((th)->ec->machine.regs); \ SET_MACHINE_STACK_END(&(th)->ec->machine.stack_end); \ } while (0) @@ -332,11 +325,7 @@ rb_thread_s_debug_set(VALUE self, VALUE val) # define PRI_THREAD_ID "p" #endif -#ifndef __ia64 -#define thread_start_func_2(th, st, rst) thread_start_func_2(th, st) -#endif -NOINLINE(static int thread_start_func_2(rb_thread_t *th, VALUE *stack_start, - VALUE *register_stack_start)); +NOINLINE(static int thread_start_func_2(rb_thread_t *th, VALUE *stack_start)); static void timer_thread_function(void); void ruby_sigchld_handler(rb_vm_t *); /* signal.c */ @@ -608,9 +597,6 @@ thread_cleanup_func_before_exec(void *th_ptr) rb_thread_t *th = th_ptr; th->status = THREAD_KILLED; th->ec->machine.stack_start = th->ec->machine.stack_end = NULL; -#ifdef __ia64 - th->ec->machine.register_stack_start = th->ec->machine.register_stack_end = NULL; -#endif } static void @@ -713,7 +699,7 @@ rb_vm_push_frame(rb_execution_context_t *sec, int stack_max); static int -thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_start) +thread_start_func_2(rb_thread_t *th, VALUE *stack_start) { STACK_GROW_DIR_DETECTION; enum ruby_tag_type state; @@ -734,9 +720,7 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_s th->ec->machine.stack_start = STACK_DIR_UPPER(vm_stack + size, vm_stack); th->ec->machine.stack_maxsize -= size * sizeof(VALUE); -#ifdef __ia64 - th->ec->machine.register_stack_start = register_stack_start; -#endif + thread_debug("thread start: %p\n", (void *)th); gvl_acquire(th->vm, th); diff --git a/thread_pthread.c b/thread_pthread.c index 75922797bb..8e5c0c4c1a 100644 --- a/thread_pthread.c +++ b/thread_pthread.c @@ -647,51 +647,6 @@ size_t pthread_get_stacksize_np(pthread_t); #define STACKADDR_AVAILABLE 1 #elif defined __HAIKU__ #define STACKADDR_AVAILABLE 1 -#elif defined __ia64 && defined _HPUX_SOURCE -#include <sys/dyntune.h> - -#define STACKADDR_AVAILABLE 1 - -/* - * Do not lower the thread's stack to PTHREAD_STACK_MIN, - * otherwise one would receive a 'sendsig: useracc failed.' - * and a coredump. - */ -#undef PTHREAD_STACK_MIN - -#define HAVE_PTHREAD_ATTR_GET_NP 1 -#undef HAVE_PTHREAD_ATTR_GETSTACK - -/* - * As the PTHREAD_STACK_MIN is undefined and - * no one touches the default stacksize, - * it is just fine to use the default. - */ -#define pthread_attr_get_np(thid, attr) 0 - -/* - * Using value of sp is very rough... To make it more real, - * addr would need to be aligned to vps_pagesize. - * The vps_pagesize is 'Default user page size (kBytes)' - * and could be retrieved by gettune(). - */ -static int -hpux_attr_getstackaddr(const pthread_attr_t *attr, void **addr) -{ - static uint64_t pagesize; - size_t size; - - if (!pagesize) { - if (gettune("vps_pagesize", &pagesize)) { - pagesize = 16; - } - pagesize *= 1024; - } - pthread_attr_getstacksize(attr, &size); - *addr = (void *)((size_t)((char *)_Asm_get_sp() - size) & ~(pagesize - 1)); - return 0; -} -#define pthread_attr_getstackaddr(attr, addr) hpux_attr_getstackaddr(attr, addr) #endif #ifndef MAINSTACKADDR_AVAILABLE @@ -791,9 +746,6 @@ static struct { rb_nativethread_id_t id; size_t stack_maxsize; VALUE *stack_start; -#ifdef __ia64 - VALUE *register_stack_start; -#endif } native_main_thread; #ifdef STACK_END_ADDRESS @@ -879,19 +831,10 @@ reserve_stack(volatile char *limit, size_t size) * You must call this function before any heap allocation by Ruby implementation. * Or GC will break living objects */ void -ruby_init_stack(volatile VALUE *addr -#ifdef __ia64 - , void *bsp -#endif - ) +ruby_init_stack(volatile VALUE *addr) { native_main_thread.id = pthread_self(); -#ifdef __ia64 - if (!native_main_thread.register_stack_start || - (VALUE*)bsp < native_main_thread.register_stack_start) { - native_main_thread.register_stack_start = (VALUE*)bsp; - } -#endif + #if MAINSTACKADDR_AVAILABLE if (native_main_thread.stack_maxsize) return; { @@ -995,11 +938,7 @@ native_thread_init_stack(rb_thread_t *th) rb_raise(rb_eNotImpError, "ruby engine can initialize only in the main thread"); #endif } -#ifdef __ia64 - th->ec->machine.register_stack_start = native_main_thread.register_stack_start; - th->ec->machine.stack_maxsize /= 2; - th->ec->machine.register_stack_maxsize = th->ec->machine.stack_maxsize; -#endif + return 0; } @@ -1027,9 +966,9 @@ thread_start_func_1(void *th_ptr) native_thread_init(th); /* run */ #if defined USE_NATIVE_THREAD_INIT - thread_start_func_2(th, th->ec->machine.stack_start, rb_ia64_bsp()); + thread_start_func_2(th, th->ec->machine.stack_start); #else - thread_start_func_2(th, &stack_start, rb_ia64_bsp()); + thread_start_func_2(th, &stack_start); #endif } #if USE_THREAD_CACHE @@ -1161,10 +1100,6 @@ native_thread_create(rb_thread_t *th) const size_t space = space_size(stack_size); th->ec->machine.stack_maxsize = stack_size - space; -#ifdef __ia64 - th->ec->machine.stack_maxsize /= 2; - th->ec->machine.register_stack_maxsize = th->ec->machine.stack_maxsize; -#endif CHECK_ERR(pthread_attr_init(&attr)); diff --git a/thread_win32.c b/thread_win32.c index e1286253a5..d8eb2b1ee6 100644 --- a/thread_win32.c +++ b/thread_win32.c @@ -582,7 +582,7 @@ thread_start_func_1(void *th_ptr) thread_debug("thread created (th: %p, thid: %p, event: %p)\n", th, th->thread_id, th->native_thread_data.interrupt_event); - thread_start_func_2(th, th->ec->machine.stack_start, rb_ia64_bsp()); + thread_start_func_2(th, th->ec->machine.stack_start); w32_close_handle(thread_id); thread_debug("thread deleted (th: %p)\n", th); diff --git a/tool/m4/ruby_stack_grow_direction.m4 b/tool/m4/ruby_stack_grow_direction.m4 index e930bc62ec..74ec219322 100644 --- a/tool/m4/ruby_stack_grow_direction.m4 +++ b/tool/m4/ruby_stack_grow_direction.m4 @@ -3,7 +3,7 @@ AC_DEFUN([RUBY_STACK_GROW_DIRECTION], [ AS_VAR_PUSHDEF([stack_grow_dir], [rb_cv_stack_grow_dir_$1]) AC_CACHE_CHECK(stack growing direction on $1, stack_grow_dir, [ AS_CASE(["$1"], -[m68*|x86*|x64|i?86|ia64|ppc*|sparc*|alpha*], [ $2=-1], +[m68*|x86*|x64|i?86|ppc*|sparc*|alpha*], [ $2=-1], [hppa*], [ $2=+1], [ AC_TRY_RUN([ @@ -2878,9 +2878,6 @@ mjit_pause_m(int argc, VALUE *argv, RB_UNUSED_VAR(VALUE self)) extern VALUE *rb_gc_stack_start; extern size_t rb_gc_stack_maxsize; -#ifdef __ia64 -extern VALUE *rb_gc_register_stack_start; -#endif /* debug functions */ @@ -894,11 +894,6 @@ typedef struct rb_execution_context_struct { VALUE *stack_start; VALUE *stack_end; size_t stack_maxsize; -#ifdef __ia64 - VALUE *register_stack_start; - VALUE *register_stack_end; - size_t register_stack_maxsize; -#endif RUBY_ALIGNAS(SIZEOF_VALUE) jmp_buf regs; } machine; } rb_execution_context_t; @@ -649,14 +649,6 @@ dump_thread(void *arg) frame.AddrFrame.Offset = context.Rbp; frame.AddrStack.Mode = AddrModeFlat; frame.AddrStack.Offset = context.Rsp; -#elif defined(_M_IA64) || defined(__ia64__) - mac = IMAGE_FILE_MACHINE_IA64; - frame.AddrPC.Mode = AddrModeFlat; - frame.AddrPC.Offset = context.StIIP; - frame.AddrBStore.Mode = AddrModeFlat; - frame.AddrBStore.Offset = context.RsBSP; - frame.AddrStack.Mode = AddrModeFlat; - frame.AddrStack.Offset = context.IntSp; #else /* i386 */ mac = IMAGE_FILE_MACHINE_I386; frame.AddrPC.Mode = AddrModeFlat; diff --git a/win32/Makefile.sub b/win32/Makefile.sub index 756ee7a280..d79a16bddb 100644 --- a/win32/Makefile.sub +++ b/win32/Makefile.sub @@ -399,7 +399,7 @@ RUBY = ruby DTRACE_EXT = dmyh !if !defined(STACK) -!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64" +!if "$(ARCH)" == "x64" STACK = 0x400000 !else STACK = 0x200000 @@ -646,7 +646,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub !else #define SIZEOF_OFF_T 4 !endif -!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64" +!if "$(ARCH)" == "x64" #define SIZEOF_VOIDP 8 !else #define SIZEOF_VOIDP 4 @@ -668,7 +668,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub #define NUM2CLOCKID(v) NUM2INT(v) #define SIZEOF_CLOCK_T 4 #define SIZEOF_RLIM_T 0 -!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64" +!if "$(ARCH)" == "x64" #define SIZEOF_SIZE_T 8 #define SIZEOF_PTRDIFF_T 8 #define SIZEOF_INTPTR_T 8 @@ -712,7 +712,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub !else #define PACKED_STRUCT(x) x !endif -!if "$(ARCH)" == "x86" || "$(ARCH)" == "x64" || "$(ARCH)" == "ia64" +!if "$(ARCH)" == "x86" || "$(ARCH)" == "x64" #define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x) !else #define PACKED_STRUCT_UNALIGNED(x) x @@ -778,7 +778,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub #define HAVE_INTPTR_T 1 #define HAVE_UINTPTR_T 1 #define HAVE_SSIZE_T 1 -!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64" +!if "$(ARCH)" == "x64" #define ssize_t __int64 #define PRI_PTR_PREFIX "I64" !else @@ -868,7 +868,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub #define restrict /* not supported */ !endif #define NEED_IO_SEEK_BETWEEN_RW 1 -!if "$(MACHINE)" == "x86" || "$(ARCH)" == "x64" || "$(ARCH)" == "ia64" +!if "$(MACHINE)" == "x86" || "$(ARCH)" == "x64" #define STACK_GROW_DIRECTION -1 !endif !if "$(COROUTINE_OBJ)" != "" diff --git a/win32/README.win32 b/win32/README.win32 index 18d03815b2..eae6cdce9a 100644 --- a/win32/README.win32 +++ b/win32/README.win32 @@ -8,8 +8,8 @@ 2. Visual C++ 12.0 (2013) or later. - [Note] if you want to build x64 or ia64 version, use native compiler for - x64/ia64. + [Note] if you want to build x64 version, use native compiler for + x64. 3. Please set environment variable +INCLUDE+, +LIB+, +PATH+ to run required commands properly from the command line. diff --git a/win32/configure.bat b/win32/configure.bat index fa8966e0c9..b141bfc546 100755 --- a/win32/configure.bat +++ b/win32/configure.bat @@ -101,8 +101,7 @@ goto :loop ; :target
echo>> ~tmp~.mak "%~2" \
echo>>confargs.tmp --target=%2 \
- if "%~2" == "x64-mswin64" goto target2
- if NOT "%~2" == "ia64-mswin64" goto target3
+ if NOT "%~2" == "x64-mswin64" goto target3
:target2
echo>> ~tmp~.mak "TARGET_OS=mswin64" \
:target3
diff --git a/win32/setup.mak b/win32/setup.mak index 043edbeb66..d67b6843a4 100644 --- a/win32/setup.mak +++ b/win32/setup.mak @@ -31,7 +31,6 @@ i586-mswin32: -prologue- -i586- -epilogue- i686-mswin32: -prologue- -i686- -epilogue- alpha-mswin32: -prologue- -alpha- -epilogue- x64-mswin64: -prologue- -x64- -epilogue- -ia64-mswin64: -prologue- -ia64- -epilogue- -prologue-: -basic-vars- -generic-: -osname- @@ -178,8 +177,6 @@ RUBY_SO_NAME = $(RUBY_SO_NAME) @$(CPP) <<conftest.c 2>nul | findstr = >>$(MAKEFILE) #if defined _M_X64 MACHINE = x64 -#elif defined _M_IA64 -MACHINE = ia64 #else MACHINE = x86 #endif @@ -192,8 +189,6 @@ MACHINE = x86 @echo MACHINE = alpha>>$(MAKEFILE) -x64-: -osname64- @echo MACHINE = x64>>$(MAKEFILE) --ia64-: -osname64- - @echo MACHINE = ia64>>$(MAKEFILE) -ix86-: -osname32- @echo MACHINE = x86>>$(MAKEFILE) |