yarv-diff:334
From: ko1 atdot.net
Date: 18 May 2006 06:55:05 -0000
Subject: [yarv-diff:334] r501 - in trunk: . rb
Author: ko1
Date: 2006-05-18 15:55:03 +0900 (Thu, 18 May 2006)
New Revision: 501
Added:
trunk/rb/runruby.rb
Modified:
trunk/
trunk/ChangeLog
trunk/thread.c
Log:
r776@lermite: ko1 | 2006-05-18 12:13:46 +0900
* rb/runruby.rb : added
* thread.c (rb_thread_alone) : check if vm->living_threads
is available
Property changes on: trunk
___________________________________________________________________
Name: svk:merge
- 81cd9672-7512-7e48-ae48-6936450e977d:/local/yarv/trunk:770
+ 81cd9672-7512-7e48-ae48-6936450e977d:/local/yarv/trunk:776
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2006-05-18 03:09:03 UTC (rev 500)
+++ trunk/ChangeLog 2006-05-18 06:55:03 UTC (rev 501)
@@ -4,6 +4,14 @@
# from Mon, 03 May 2004 01:24:19 +0900
#
+2006-05-18(Thu) 12:12:03 +0900 Koichi Sasada <ko1 atdot.net>
+
+ * rb/runruby.rb : added
+
+ * thread.c (rb_thread_alone) : check if vm->living_threads
+ is available
+
+
2006-05-18(Thu) 12:05:35 +0900 Koichi Sasada <ko1 atdot.net>
* signal.c : not mask SIGSEGV
Added: trunk/rb/runruby.rb
===================================================================
--- trunk/rb/runruby.rb 2006-05-18 03:09:03 UTC (rev 500)
+++ trunk/rb/runruby.rb 2006-05-18 06:55:03 UTC (rev 501)
@@ -0,0 +1,4 @@
+require 'rbconfig'
+$:.unshift File.join('.ext', Config::CONFIG['arch'])
+$:.unshift '.ext'
+load ARGV[0]
Modified: trunk/thread.c
===================================================================
--- trunk/thread.c 2006-05-18 03:09:03 UTC (rev 500)
+++ trunk/thread.c 2006-05-18 06:55:03 UTC (rev 501)
@@ -54,6 +54,8 @@
void rb_signal_exec(yarv_thread_t *th, int sig);
void rb_disable_interrupt();
+NOINLINE(void yarv_set_stack_end(VALUE **stack_end_p));
+
static VALUE eKillSignal = INT2FIX(0);
static VALUE eTerminateSignal = INT2FIX(1);
static int system_working = 1;
@@ -528,12 +530,14 @@
yarv_thread_t *th = GET_THREAD();
thread_debug("rb_thread_schedule/switch start\n");
+
yarv_save_machine_context(th);
native_mutex_unlock(&th->vm->global_interpreter_lock);
{
native_thread_yield();
}
native_mutex_lock(&th->vm->global_interpreter_lock);
+
yarv_set_current_running_thread(th);
thread_debug("rb_thread_schedule/switch done\n");
@@ -1356,8 +1360,11 @@
int
rb_thread_alone()
{
- int num = GET_THREAD()->vm->living_threads->num_entries;
- thread_debug("rb_thread_alone: %d\n", num);
+ int num = 1;
+ if (GET_THREAD()->vm->living_threads) {
+ num = GET_THREAD()->vm->living_threads->num_entries;
+ thread_debug("rb_thread_alone: %d\n", num);
+ }
return num == 1;
}
--
ML: yarv-diff quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml