[前][次][番号順一覧][スレッド一覧][生データ]

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

[前][次][番号順一覧][スレッド一覧][生データ]