[前][次][番号順一覧][スレッド一覧]

ruby-changes:32643

From: nobu <ko1@a...>
Date: Tue, 28 Jan 2014 15:10:05 +0900 (JST)
Subject: [ruby-changes:32643] nobu:r44722 (trunk): vm_core.h: rb_thread_struct::machine

nobu	2014-01-28 15:09:58 +0900 (Tue, 28 Jan 2014)

  New Revision: 44722

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=44722

  Log:
    vm_core.h: rb_thread_struct::machine
    
    * vm_core.h (rb_thread_struct): aggregate cpu stuff into a struct,
      so that a debugger can show its content at once.

  Modified files:
    trunk/cont.c
    trunk/gc.c
    trunk/thread.c
    trunk/thread_pthread.c
    trunk/thread_win32.c
    trunk/vm.c
    trunk/vm_core.h
Index: thread_win32.c
===================================================================
--- thread_win32.c	(revision 44721)
+++ thread_win32.c	(revision 44722)
@@ -571,8 +571,8 @@ native_thread_init_stack(rb_thread_t *th https://github.com/ruby/ruby/blob/trunk/thread_win32.c#L571
     size = end - base;
     space = size / 5;
     if (space > 1024*1024) space = 1024*1024;
-    th->machine_stack_start = (VALUE *)end - 1;
-    th->machine_stack_maxsize = size - space;
+    th->machine.stack_start = (VALUE *)end - 1;
+    th->machine.stack_maxsize = size - space;
 }
 
 #ifndef InterlockedExchangePointer
@@ -600,7 +600,7 @@ thread_start_func_1(void *th_ptr) https://github.com/ruby/ruby/blob/trunk/thread_win32.c#L600
     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->machine_stack_start, rb_ia64_bsp());
+    thread_start_func_2(th, th->machine.stack_start, rb_ia64_bsp());
 
     w32_close_handle(thread_id);
     thread_debug("thread deleted (th: %p)\n", th);
Index: thread_pthread.c
===================================================================
--- thread_pthread.c	(revision 44721)
+++ thread_pthread.c	(revision 44722)
@@ -749,8 +749,8 @@ native_thread_init_stack(rb_thread_t *th https://github.com/ruby/ruby/blob/trunk/thread_pthread.c#L749
     rb_nativethread_id_t curr = pthread_self();
 
     if (pthread_equal(curr, native_main_thread.id)) {
-	th->machine_stack_start = native_main_thread.stack_start;
-	th->machine_stack_maxsize = native_main_thread.stack_maxsize;
+	th->machine.stack_start = native_main_thread.stack_start;
+	th->machine.stack_maxsize = native_main_thread.stack_maxsize;
     }
     else {
 #ifdef STACKADDR_AVAILABLE
@@ -758,11 +758,11 @@ native_thread_init_stack(rb_thread_t *th https://github.com/ruby/ruby/blob/trunk/thread_pthread.c#L758
 	size_t size;
 
 	if (get_stack(&start, &size) == 0) {
-	    th->machine_stack_start = start;
-	    th->machine_stack_maxsize = size;
+	    th->machine.stack_start = start;
+	    th->machine.stack_maxsize = size;
 	}
 #elif defined get_stack_of
-	if (!th->machine_stack_maxsize) {
+	if (!th->machine.stack_maxsize) {
 	    native_mutex_lock(&th->interrupt_lock);
 	    native_mutex_unlock(&th->interrupt_lock);
 	}
@@ -771,9 +771,9 @@ native_thread_init_stack(rb_thread_t *th https://github.com/ruby/ruby/blob/trunk/thread_pthread.c#L771
 #endif
     }
 #ifdef __ia64
-    th->machine_register_stack_start = native_main_thread.register_stack_start;
-    th->machine_stack_maxsize /= 2;
-    th->machine_register_stack_maxsize = th->machine_stack_maxsize;
+    th->machine.register_stack_start = native_main_thread.register_stack_start;
+    th->machine.stack_maxsize /= 2;
+    th->machine.register_stack_maxsize = th->machine.stack_maxsize;
 #endif
     return 0;
 }
@@ -800,7 +800,7 @@ thread_start_func_1(void *th_ptr) https://github.com/ruby/ruby/blob/trunk/thread_pthread.c#L800
 	native_thread_init(th);
 	/* run */
 #if defined USE_NATIVE_THREAD_INIT
-	thread_start_func_2(th, th->machine_stack_start, rb_ia64_bsp());
+	thread_start_func_2(th, th->machine.stack_start, rb_ia64_bsp());
 #else
 	thread_start_func_2(th, &stack_start, rb_ia64_bsp());
 #endif
@@ -922,10 +922,10 @@ native_thread_create(rb_thread_t *th) https://github.com/ruby/ruby/blob/trunk/thread_pthread.c#L922
 	const size_t stack_size = th->vm->default_params.thread_machine_stack_size;
 	const size_t space = space_size(stack_size);
 
-        th->machine_stack_maxsize = stack_size - space;
+        th->machine.stack_maxsize = stack_size - space;
 #ifdef __ia64
-        th->machine_stack_maxsize /= 2;
-        th->machine_register_stack_maxsize = th->machine_stack_maxsize;
+        th->machine.stack_maxsize /= 2;
+        th->machine.register_stack_maxsize = th->machine.stack_maxsize;
 #endif
 
 #ifdef HAVE_PTHREAD_ATTR_INIT
@@ -948,8 +948,8 @@ native_thread_create(rb_thread_t *th) https://github.com/ruby/ruby/blob/trunk/thread_pthread.c#L948
 #ifdef get_stack_of
 	if (!err) {
 	    get_stack_of(th->thread_id,
-			 &th->machine_stack_start,
-			 &th->machine_stack_maxsize);
+			 &th->machine.stack_start,
+			 &th->machine.stack_maxsize);
 	}
 	native_mutex_unlock(&th->interrupt_lock);
 #endif
@@ -1561,7 +1561,7 @@ ruby_stack_overflowed_p(const rb_thread_ https://github.com/ruby/ruby/blob/trunk/thread_pthread.c#L1561
     STACK_GROW_DIR_DETECTION;
 
     if (th) {
-	size = th->machine_stack_maxsize;
+	size = th->machine.stack_maxsize;
 #if defined(HAVE_GETRLIMIT) && MAINSTACKADDR_AVAILABLE
 	if (pthread_equal(th->thread_id, native_main_thread.id)) {
 	    struct rlimit rlim;
@@ -1570,7 +1570,7 @@ ruby_stack_overflowed_p(const rb_thread_ https://github.com/ruby/ruby/blob/trunk/thread_pthread.c#L1570
 	    }
 	}
 #endif
-	base = (char *)th->machine_stack_start - STACK_DIR_UPPER(0, size);
+	base = (char *)th->machine.stack_start - STACK_DIR_UPPER(0, size);
     }
 #ifdef STACKADDR_AVAILABLE
     else if (get_stack(&base, &size) == 0) {
Index: vm_core.h
===================================================================
--- vm_core.h	(revision 44721)
+++ vm_core.h	(revision 44722)
@@ -617,15 +617,17 @@ typedef struct rb_thread_struct { https://github.com/ruby/ruby/blob/trunk/vm_core.h#L617
     VALUE (*first_func)(ANYARGS);
 
     /* for GC */
-    VALUE *machine_stack_start;
-    VALUE *machine_stack_end;
-    size_t machine_stack_maxsize;
+    struct {
+	VALUE *stack_start;
+	VALUE *stack_end;
+	size_t stack_maxsize;
 #ifdef __ia64
-    VALUE *machine_register_stack_start;
-    VALUE *machine_register_stack_end;
-    size_t machine_register_stack_maxsize;
+	VALUE *register_stack_start;
+	VALUE *register_stack_end;
+	size_t register_stack_maxsize;
 #endif
-    jmp_buf machine_regs;
+	jmp_buf regs;
+    } machine;
     int mark_stack_len;
 
     /* statistics data for profiler */
Index: thread.c
===================================================================
--- thread.c	(revision 44721)
+++ thread.c	(revision 44722)
@@ -121,7 +121,7 @@ static inline void blocking_region_end(r https://github.com/ruby/ruby/blob/trunk/thread.c#L121
 
 #ifdef __ia64
 #define RB_GC_SAVE_MACHINE_REGISTER_STACK(th)          \
-    do{(th)->machine_register_stack_end = rb_ia64_bsp();}while(0)
+    do{(th)->machine.register_stack_end = rb_ia64_bsp();}while(0)
 #else
 #define RB_GC_SAVE_MACHINE_REGISTER_STACK(th)
 #endif
@@ -129,8 +129,8 @@ static inline void blocking_region_end(r https://github.com/ruby/ruby/blob/trunk/thread.c#L129
     do {							\
 	FLUSH_REGISTER_WINDOWS;					\
 	RB_GC_SAVE_MACHINE_REGISTER_STACK(th);			\
-	setjmp((th)->machine_regs);				\
-	SET_MACHINE_STACK_END(&(th)->machine_stack_end);	\
+	setjmp((th)->machine.regs);				\
+	SET_MACHINE_STACK_END(&(th)->machine.stack_end);	\
     } while (0)
 
 #define GVL_UNLOCK_BEGIN() do { \
@@ -465,9 +465,9 @@ thread_cleanup_func_before_exec(void *th https://github.com/ruby/ruby/blob/trunk/thread.c#L465
 {
     rb_thread_t *th = th_ptr;
     th->status = THREAD_KILLED;
-    th->machine_stack_start = th->machine_stack_end = 0;
+    th->machine.stack_start = th->machine.stack_end = 0;
 #ifdef __ia64
-    th->machine_register_stack_start = th->machine_register_stack_end = 0;
+    th->machine.register_stack_start = th->machine.register_stack_end = 0;
 #endif
 }
 
@@ -519,9 +519,9 @@ thread_start_func_2(rb_thread_t *th, VAL https://github.com/ruby/ruby/blob/trunk/thread.c#L519
 
     ruby_thread_set_native(th);
 
-    th->machine_stack_start = stack_start;
+    th->machine.stack_start = stack_start;
 #ifdef __ia64
-    th->machine_register_stack_start = register_stack_start;
+    th->machine.register_stack_start = register_stack_start;
 #endif
     thread_debug("thread start: %p\n", (void *)th);
 
Index: gc.c
===================================================================
--- gc.c	(revision 44721)
+++ gc.c	(revision 44722)
@@ -3209,14 +3209,14 @@ init_mark_stack(mark_stack_t *stack) https://github.com/ruby/ruby/blob/trunk/gc.c#L3209
 /* Marking */
 
 #ifdef __ia64
-#define SET_STACK_END (SET_MACHINE_STACK_END(&th->machine_stack_end), th->machine_register_stack_end = rb_ia64_bsp())
+#define SET_STACK_END (SET_MACHINE_STACK_END(&th->machine.stack_end), th->machine.register_stack_end = rb_ia64_bsp())
 #else
-#define SET_STACK_END SET_MACHINE_STACK_END(&th->machine_stack_end)
+#define SET_STACK_END SET_MACHINE_STACK_END(&th->machine.stack_end)
 #endif
 
-#define STACK_START (th->machine_stack_start)
-#define STACK_END (th->machine_stack_end)
-#define STACK_LEVEL_MAX (th->machine_stack_maxsize/sizeof(VALUE))
+#define STACK_START (th->machine.stack_start)
+#define STACK_END (th->machine.stack_end)
+#define STACK_LEVEL_MAX (th->machine.stack_maxsize/sizeof(VALUE))
 
 #if STACK_GROW_DIRECTION < 0
 # define STACK_LENGTH  (size_t)(STACK_START - STACK_END)
@@ -3258,8 +3258,8 @@ stack_check(int water_mark) https://github.com/ruby/ruby/blob/trunk/gc.c#L3258
     ret = STACK_LENGTH > STACK_LEVEL_MAX - water_mark;
 #ifdef __ia64
     if (!ret) {
-        ret = (VALUE*)rb_ia64_bsp() - th->machine_register_stack_start >
-              th->machine_register_stack_maxsize/sizeof(VALUE) - water_mark;
+        ret = (VALUE*)rb_ia64_bsp() - th->machine.register_stack_start >
+              th->machine.register_stack_maxsize/sizeof(VALUE) - water_mark;
     }
 #endif
     return ret;
@@ -3483,7 +3483,7 @@ mark_current_machine_context(rb_objspace https://github.com/ruby/ruby/blob/trunk/gc.c#L3483
 
     rb_gc_mark_locations(stack_start, stack_end);
 #ifdef __ia64
-    rb_gc_mark_locations(th->machine_register_stack_start, th->machine_register_stack_end);
+    rb_gc_mark_locations(th->machine.register_stack_start, th->machine.register_stack_end);
 #endif
 #if defined(__mc68000__)
     mark_locations_array(objspace, (VALUE*)((char*)STACK_END + 2),
@@ -3500,7 +3500,7 @@ rb_gc_mark_machine_stack(rb_thread_t *th https://github.com/ruby/ruby/blob/trunk/gc.c#L3500
     GET_STACK_BOUNDS(stack_start, stack_end, 0);
     rb_gc_mark_locations(stack_start, stack_end);
 #ifdef __ia64
-    rb_gc_mark_locations(th->machine_register_stack_start, th->machine_register_stack_end);
+    rb_gc_mark_locations(th->machine.register_stack_start, th->machine.register_stack_end);
 #endif
 }
 
Index: cont.c
===================================================================
--- cont.c	(revision 44721)
+++ cont.c	(revision 44722)
@@ -97,16 +97,18 @@ typedef struct rb_context_struct { https://github.com/ruby/ruby/blob/trunk/cont.c#L97
     size_t vm_stack_slen;  /* length of stack (head of th->stack) */
     size_t vm_stack_clen;  /* length of control frames (tail of th->stack) */
 #endif
-    VALUE *machine_stack;
-    VALUE *machine_stack_src;
+    struct {
+	VALUE *stack;
+	VALUE *stack_src;
+	size_t stack_size;
 #ifdef __ia64
-    VALUE *machine_register_stack;
-    VALUE *machine_register_stack_src;
-    int machine_register_stack_size;
+	VALUE *register_stack;
+	VALUE *register_stack_src;
+	int register_stack_size;
 #endif
+    } machine;
     rb_thread_t saved_thread;
     rb_jmpbuf_t jmpbuf;
-    size_t machine_stack_size;
     rb_ensure_entry_t *ensure_array;
     rb_ensure_list_t *ensure_list;
 } rb_context_t;
@@ -188,11 +190,11 @@ cont_mark(void *ptr) https://github.com/ruby/ruby/blob/trunk/cont.c#L190
 #endif
 	}
 
-	if (cont->machine_stack) {
+	if (cont->machine.stack) {
 	    if (cont->type == CONTINUATION_CONTEXT) {
 		/* cont */
-		rb_gc_mark_locations(cont->machine_stack,
-				     cont->machine_stack + cont->machine_stack_size);
+		rb_gc_mark_locations(cont->machine.stack,
+				     cont->machine.stack + cont->machine.stack_size);
             }
             else {
 		/* fiber */
@@ -200,15 +202,15 @@ cont_mark(void *ptr) https://github.com/ruby/ruby/blob/trunk/cont.c#L202
                 rb_fiber_t *fib = (rb_fiber_t*)cont;
 		GetThreadPtr(cont->saved_thread.self, th);
 		if ((th->fiber != cont->self) && fib->status == RUNNING) {
-		    rb_gc_mark_locations(cont->machine_stack,
-					 cont->machine_stack + cont->machine_stack_size);
+		    rb_gc_mark_locations(cont->machine.stack,
+					 cont->machine.stack + cont->machine.stack_size);
 		}
 	    }
 	}
 #ifdef __ia64
-	if (cont->machine_register_stack) {
-	    rb_gc_mark_locations(cont->machine_register_stack,
-				 cont->machine_register_stack + cont->machine_register_stack_size);
+	if (cont->machine.register_stack) {
+	    rb_gc_mark_locations(cont->machine.register_stack,
+				 cont->machine.register_stack + cont->machine.register_stack_size);
 	}
 #endif
     }
@@ -226,7 +228,7 @@ cont_free(void *ptr) https://github.com/ruby/ruby/blob/trunk/cont.c#L228
 	if (cont->type == CONTINUATION_CONTEXT) {
 	    /* cont */
 	    ruby_xfree(cont->ensure_array);
-	    RUBY_FREE_UNLESS_NULL(cont->machine_stack);
+	    RUBY_FREE_UNLESS_NULL(cont->machine.stack);
 	}
 	else {
 	    /* fiber */
@@ -257,10 +259,10 @@ cont_free(void *ptr) https://github.com/ruby/ruby/blob/trunk/cont.c#L259
 	}
 #else /* not FIBER_USE_NATIVE */
 	ruby_xfree(cont->ensure_array);
-	RUBY_FREE_UNLESS_NULL(cont->machine_stack);
+	RUBY_FREE_UNLESS_NULL(cont->machine.stack);
 #endif
 #ifdef __ia64
-	RUBY_FREE_UNLESS_NULL(cont->machine_register_stack);
+	RUBY_FREE_UNLESS_NULL(cont->machine.register_stack);
 #endif
 	RUBY_FREE_UNLESS_NULL(cont->vm_stack);
 
@@ -286,12 +288,12 @@ cont_memsize(const void *ptr) https://github.com/ruby/ruby/blob/trunk/cont.c#L288
 	    size += n * sizeof(*cont->vm_stack);
 	}
 
-	if (cont->machine_stack) {
-	    size += cont->machine_stack_size * sizeof(*cont->machine_stack);
+	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);
+	if (cont->machine.register_stack) {
+	    size += cont->machine.register_stack_size * sizeof(*cont->machine.register_stack);
 	}
 #endif
     }
@@ -380,42 +382,42 @@ cont_save_machine_stack(rb_thread_t *th, https://github.com/ruby/ruby/blob/trunk/cont.c#L382
 {
     size_t size;
 
-    SET_MACHINE_STACK_END(&th->machine_stack_end);
+    SET_MACHINE_STACK_END(&th->machine.stack_end);
 #ifdef __ia64
-    th->machine_register_stack_end = rb_ia64_bsp();
+    th->machine.register_stack_end = rb_ia64_bsp();
 #endif
 
-    if (th->machine_stack_start > th->machine_stack_end) {
-	size = cont->machine_stack_size = th->machine_stack_start - th->machine_stack_end;
-	cont->machine_stack_src = th->machine_stack_end;
+    if (th->machine.stack_start > th->machine.stack_end) {
+	size = cont->machine.stack_size = th->machine.stack_start - th->machine.stack_end;
+	cont->machine.stack_src = th->machine.stack_end;
     }
     else {
-	size = cont->machine_stack_size = th->machine_stack_end - th->machine_stack_start;
-	cont->machine_stack_src = th->machine_stack_start;
+	size = cont->machine.stack_size = th->machine.stack_end - th->machine.stack_start;
+	cont->machine.stack_src = th->machine.stack_start;
     }
 
-    if (cont->machine_stack) {
-	REALLOC_N(cont->machine_stack, VALUE, size);
+    if (cont->machine.stack) {
+	REALLOC_N(cont->machine.stack, VALUE, size);
     }
     else {
-	cont->machine_stack = ALLOC_N(VALUE, size);
+	cont->machine.stack = ALLOC_N(VALUE, size);
     }
 
     FLUSH_REGISTER_WINDOWS;
-    MEMCPY(cont->machine_stack, cont->machine_stack_src, VALUE, size);
+    MEMCPY(cont->machine.stack, cont->machine.stack_src, VALUE, size);
 
 #ifdef __ia64
     rb_ia64_flushrs();
-    size = cont->machine_register_stack_size = th->machine_register_stack_end - th->machine_register_stack_start;
-    cont->machine_register_stack_src = th->machine_register_stack_start;
-    if (cont->machine_register_stack) {
-	REALLOC_N(cont->machine_register_stack, VALUE, size);
+    size = cont->machine.register_stack_size = th->machine.register_stack_end - th->machine.register_stack_start;
+    cont->machine.register_stack_src = th->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);
+	cont->machine.register_stack = ALLOC_N(VALUE, size);
     }
 
-    MEMCPY(cont->machine_register_stack, cont->machine_register_stack_src, VALUE, size);
+    MEMCPY(cont->machine.register_stack, cont->machine.register_stack_src, VALUE, size);
 #endif
 }
 
@@ -430,13 +432,13 @@ cont_save_thread(rb_context_t *cont, rb_ https://github.com/ruby/ruby/blob/trunk/cont.c#L432
 {
     /* save thread context */
     cont->saved_thread = *th;
-    /* saved_thread->machine_stack_(start|end) should be NULL */
+    /* saved_thread->machine.stack_(start|end) should be NULL */
     /* because it may happen GC afterward */
-    cont->saved_thread.machine_stack_start = 0;
-    cont->saved_thread.machine_stack_end = 0;
+    cont->saved_thread.machine.stack_start = 0;
+    cont->saved_thread.machine.stack_end = 0;
 #ifdef __ia64
-    cont->saved_thread.machine_register_stack_start = 0;
-    cont->saved_thread.machine_register_stack_end = 0;
+    cont->saved_thread.machine.register_stack_start = 0;
+    cont->saved_thread.machine.register_stack_end = 0;
 #endif
 }
 
@@ -579,7 +581,7 @@ fiber_set_stack_location(void) https://github.com/ruby/ruby/blob/trunk/cont.c#L581
     VALUE *ptr;
 
     SET_MACHINE_STACK_END(&ptr);
-    th->machine_stack_start = (void*)(((VALUE)ptr & RB_PAGE_MASK) + STACK_UPPER((void *)&ptr, 0, RB_PAGE_SIZE));
+    th->machine.stack_start = (void*)(((VALUE)ptr & RB_PAGE_MASK) + STACK_UPPER((void *)&ptr, 0, RB_PAGE_SIZE));
 }
 
 static VOID CALLBACK
@@ -654,7 +656,7 @@ fiber_initialize_machine_stack_context(r https://github.com/ruby/ruby/blob/trunk/cont.c#L656
 	    rb_raise(rb_eFiberError, "can't create fiber");
 	}
     }
-    sth->machine_stack_maxsize = size;
+    sth->machine.stack_maxsize = size;
 #else /* not WIN32 */
     ucontext_t *context = &fib->context;
     char *ptr;
@@ -666,11 +668,11 @@ fiber_initialize_machine_stack_context(r https://github.com/ruby/ruby/blob/trunk/cont.c#L668
     context->uc_stack.ss_sp = ptr;
     context->uc_stack.ss_size = size;
     makecontext(context, rb_fiber_start, 0);
-    sth->machine_stack_start = (VALUE*)(ptr + STACK_DIR_UPPER(0, size));
-    sth->machine_stack_maxsize = size - RB_PAGE_SIZE;
+    sth->machine.stack_start = (VALUE*)(ptr + STACK_DIR_UPPER(0, size));
+    sth->machine.stack_maxsize = size - RB_PAGE_SIZE;
 #endif
 #ifdef __ia64
-    sth->machine_register_stack_maxsize = sth->machine_stack_maxsize;
+    sth->machine.register_stack_maxsize = sth->machine.stack_maxsize;
 #endif
 }
 
@@ -687,29 +689,29 @@ fiber_setcontext(rb_fiber_t *newfib, rb_ https://github.com/ruby/ruby/blob/trunk/cont.c#L689
 
     /* restore thread context */
     cont_restore_thread(&newfib->cont);
-    th->machine_stack_maxsize = sth->machine_stack_maxsize;
-    if (sth->machine_stack_end && (newfib != oldfib)) {
-	rb_bug("fiber_setcontext: sth->machine_stack_end has non zero value");
+    th->machine.stack_maxsize = sth->machine.stack_maxsize;
+    if (sth->machine.stack_end && (newfib != oldfib)) {
+	rb_bug("fiber_setcontext: sth->machine.stack_end has non zero value");
     }
 
     /* save  oldfib's machine stack */
     if (oldfib->status != TERMINATED) {
 	STACK_GROW_DIR_DETECTION;
-	SET_MACHINE_STACK_END(&th->machine_stack_end);
+	SET_MACHINE_STACK_END(&th->machine.stack_end);
 	if (STACK_DIR_UPPER(0, 1)) {
-	    oldfib->cont.machine_stack_size = th->machine_stack_start - th->machine_stack_end;
-	    oldfib->cont.machine_stack = th->machine_stack_end;
+	    oldfib->cont.machine.stack_size = th->machine.stack_start - th->machine.stack_end;
+	    oldfib->cont.machine.stack = th->machine.stack_end;
 	}
 	else {
-	    oldfib->cont.machine_stack_size = th->machine_stack_end - th->machine_stack_start;
-	    oldfib->cont.machine_stack = th->machine_stack_start;
+	    oldfib->cont.machine.stack_size = th->ma (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]