From 0e5360b2e406fd0f182e62bc5cb38be4d43a9afc Mon Sep 17 00:00:00 2001 From: ko1 Date: Tue, 3 Jul 2007 04:53:05 +0000 Subject: [PATCH] * cont.c (cont_save_machine_stack): clear saved_thread.machine_stack*. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12681 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ cont.c | 19 ++++++++++++------- version.h | 6 +++--- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4060c0be34..7adfa712be 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Tue Jul 3 13:47:44 2007 Koichi Sasada + + * cont.c (cont_save_machine_stack): clear saved_thread.machine_stack*. + Mon Jul 2 21:45:53 2007 Koichi Sasada * compile.c: rename iseq_translate_direct_threaded_code() diff --git a/cont.c b/cont.c index e06708f9c3..833182aa4e 100644 --- a/cont.c +++ b/cont.c @@ -95,6 +95,7 @@ static void cont_save_machine_stack(rb_thread_t *th, rb_context_t *cont) { int size; + rb_thread_t *sth = &cont->saved_thread; rb_gc_set_stack_end(&th->machine_stack_end); #ifdef __ia64 @@ -132,6 +133,11 @@ cont_save_machine_stack(rb_thread_t *th, rb_context_t *cont) MEMCPY(cont->machine_register_stack, cont->machine_register_stack_src, VALUE, size); #endif + + sth->machine_stack_start = sth->machine_stack_end = 0; +#ifdef __ia64 + sth->machine_register_stack_start = sth->machine_register_stack_end = 0; +#endif } static rb_context_t * @@ -139,7 +145,7 @@ cont_new(VALUE klass) { rb_context_t *cont; volatile VALUE contval; - rb_thread_t *th = GET_THREAD(), *sth; + rb_thread_t *th = GET_THREAD(); contval = Data_Make_Struct(klass, rb_context_t, cont_mark, cont_free, cont); @@ -150,9 +156,8 @@ cont_new(VALUE klass) cont->self = contval; cont->alive = Qtrue; - /* save context */ + /* save thread context */ cont->saved_thread = *th; - sth = &cont->saved_thread; return cont; } @@ -163,17 +168,17 @@ static VALUE cont_capture(volatile int *stat) { rb_context_t *cont; - rb_thread_t *th; + rb_thread_t *th = GET_THREAD(), *sth; volatile VALUE contval; - vm_stack_to_heap(GET_THREAD()); + vm_stack_to_heap(th); cont = cont_new(rb_cCont); contval = cont->self; - th = &cont->saved_thread; + sth = &cont->saved_thread; cont->vm_stack = ALLOC_N(VALUE, th->stack_size); MEMCPY(cont->vm_stack, th->stack, VALUE, th->stack_size); - th->stack = 0; + sth->stack = 0; cont_save_machine_stack(th, cont); diff --git a/version.h b/version.h index bb50bab7c3..0083513161 100644 --- a/version.h +++ b/version.h @@ -1,7 +1,7 @@ #define RUBY_VERSION "1.9.0" -#define RUBY_RELEASE_DATE "2007-07-02" +#define RUBY_RELEASE_DATE "2007-07-03" #define RUBY_VERSION_CODE 190 -#define RUBY_RELEASE_CODE 20070702 +#define RUBY_RELEASE_CODE 20070703 #define RUBY_PATCHLEVEL 0 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 0 #define RUBY_RELEASE_YEAR 2007 #define RUBY_RELEASE_MONTH 7 -#define RUBY_RELEASE_DAY 2 +#define RUBY_RELEASE_DAY 3 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[];