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

yarv-diff:121

From: ko1 atdot.net
Date: 11 Oct 2005 04:37:38 -0000
Subject: [yarv-diff:121] r277 - in trunk: . yarvtest

Author: ko1
Date: 2005-10-11 13:37:37 +0900 (Tue, 11 Oct 2005)
New Revision: 277

Modified:
   trunk/ChangeLog
   trunk/insns.def
   trunk/test.rb
   trunk/thread.c
   trunk/thread_pthread.h
   trunk/thread_win32.h
   trunk/vm.c
   trunk/vm_opts.h
   trunk/yarvcore.h
   trunk/yarvtest/yarvtest.rb
Log:
	* insns.def : add YARV_CHECK_INTS()

	* thread.c, thread_pthread.h, thread_win32.h : kick timer thread
	when another thread kicked

	* vm.c : remove debug print

	* vm_opts.h : add OPT_CALL_THREADED_CODE

	* yarvtest/yarvtest.rb : remove "\r" from answer



Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2005-10-07 00:36:58 UTC (rev 276)
+++ trunk/ChangeLog	2005-10-11 04:37:37 UTC (rev 277)
@@ -4,6 +4,20 @@
 #  from Mon, 03 May 2004 01:24:19 +0900
 #
 
+2005-10-11(Tue) 13:35:25 +0900  Koichi Sasada  <ko1 atdot.net>
+
+	* insns.def : add YARV_CHECK_INTS()
+
+	* thread.c, thread_pthread.h, thread_win32.h : kick timer thread
+	when another thread kicked
+
+	* vm.c : remove debug print
+
+	* vm_opts.h : add OPT_CALL_THREADED_CODE
+
+	* yarvtest/yarvtest.rb : remove "\r" from answer
+
+
 2005-10-07(Fri) 09:36:36 +0900  Koichi Sasada  <ko1 atdot.net>
 
 	* yarvcore.h : add member variable "interrupt_flag" to yarv_thread_t

Modified: trunk/insns.def
===================================================================
--- trunk/insns.def	2005-10-07 00:36:58 UTC (rev 276)
+++ trunk/insns.def	2005-10-11 04:37:37 UTC (rev 277)
@@ -1477,6 +1477,7 @@
 ()
 ()
 {
+  YARV_CHECK_INTS();
   JUMP(dst);
 }
 
@@ -1492,6 +1493,7 @@
 ()
 {
   if(RTEST(val)){
+    YARV_CHECK_INTS();
     JUMP(dst);
   }
 }
@@ -1508,6 +1510,7 @@
 ()
 {
   if(!RTEST(val)){
+    YARV_CHECK_INTS();
     JUMP(dst);
   }
 }

Modified: trunk/test.rb
===================================================================
--- trunk/test.rb	2005-10-07 00:36:58 UTC (rev 276)
+++ trunk/test.rb	2005-10-11 04:37:37 UTC (rev 277)
@@ -1,3 +1,23 @@
+
+i=0
+while i<10_000_000
+  i+=1
+end
+
+__END__
+t1 = Thread.new{
+  10000.times{|e|
+    p [1, e]
+  }
+}
+t2 = Thread.new{
+  10000.times{|e|
+    p [2, e]
+  }
+}
+t1.join; t2.join
+
+__END__
 a = 0
 def m b
   eval('a+=1', b)

Modified: trunk/thread.c
===================================================================
--- trunk/thread.c	2005-10-07 00:36:58 UTC (rev 276)
+++ trunk/thread.c	2005-10-11 04:37:37 UTC (rev 277)
@@ -534,8 +534,6 @@
   rb_define_method(cYarvThread, "keys", rb_thread_keys, 0);
 
   Init_native_thread();
-  make_timer_thread();
-
   {
     /* main thread setting */
     {

Modified: trunk/thread_pthread.h
===================================================================
--- trunk/thread_pthread.h	2005-10-07 00:36:58 UTC (rev 276)
+++ trunk/thread_pthread.h	2005-10-11 04:37:37 UTC (rev 277)
@@ -56,13 +56,20 @@
   return 0;
 }
 
+static void make_timer_thread();
+
 static int
 native_thread_crteate(yarv_thread_t *th)
 {
   pthread_attr_t attr;
   size_t stack_size = 4 * 1024 - sizeof(int); /* 4KB */
   int err;
+  static int init = 0;
 
+  if(!init){
+    make_timer_thread();
+  }
+  
   thread_debug("create: %p, stack size: %d\n", th, stack_size);
 
   pthread_attr_init(&attr);

Modified: trunk/thread_win32.h
===================================================================
--- trunk/thread_win32.h	2005-10-07 00:36:58 UTC (rev 276)
+++ trunk/thread_win32.h	2005-10-11 04:37:37 UTC (rev 277)
@@ -176,10 +176,18 @@
   return 0;
 }
 
+static void make_timer_thread();
+
 static int
 native_thread_crteate(yarv_thread_t *th)
 {
   size_t stack_size = 4 * 1024 - sizeof(int); /* 4KB */
+  static int init = 0;
+
+  if(!init){
+    make_timer_thread();
+  }
+  
   if((th->thread_id = (HANDLE)_beginthreadex(0, /* security */
                                              stack_size,
                                              thread_start_func_1,

Modified: trunk/vm.c
===================================================================
--- trunk/vm.c	2005-10-07 00:36:58 UTC (rev 276)
+++ trunk/vm.c	2005-10-11 04:37:37 UTC (rev 277)
@@ -158,7 +158,6 @@
   int i, local_size;
 
   if(ENV_IN_HEAP_P(envptr)){
-    printf("ENV_IN_HEAP!\n");
     return ENV_VAL(envptr);
   }
   if(envptr != endptr){

Modified: trunk/vm_opts.h
===================================================================
--- trunk/vm_opts.h	2005-10-07 00:36:58 UTC (rev 276)
+++ trunk/vm_opts.h	2005-10-11 04:37:37 UTC (rev 277)
@@ -5,12 +5,13 @@
 #ifndef VM_OPTS_H_INCLUDED
 #define VM_OPTS_H_INCLUDED
 
-#define IGNORE_OPTIMIZE 1
+#define IGNORE_OPTIMIZE 0
 
 #if IGNORE_OPTIMIZE == 0
 
 /* compiler depend */
 #define OPT_DIRECT_THREADED_CODE     1
+#define OPT_CALL_THREADED_CODE       0
 
 /* architecture independent */
 #define OPT_BASIC_OPERATIONS         1
@@ -21,7 +22,7 @@
 #define OPT_INSTRUCTIONS_UNIFICATION 1
 #define OPT_UNIFY_ALL_COMBINATION    1
 
-#define OPT_STACK_CACHING            1
+#define OPT_STACK_CACHING            0
 
 #endif /* IGNORE_OPTIMIZE */
 

Modified: trunk/yarvcore.h
===================================================================
--- trunk/yarvcore.h	2005-10-07 00:36:58 UTC (rev 276)
+++ trunk/yarvcore.h	2005-10-11 04:37:37 UTC (rev 277)
@@ -41,7 +41,7 @@
 #endif
 #endif
 
-#else
+#else /* defined(__GNUC__) && __GNUC__ >= 2 */
 
 /* disable threaded code options */
 #if OPT_DIRECT_THREADED_CODE
@@ -56,21 +56,21 @@
 #if    OPT_CALL_THREADED_CODE
 #if    OPT_DIRECT_THREADED_CODE
 #undef OPT_DIRECT_THREADED_CODE
-#endif
+#endif /* OPT_DIRECT_THREADED_CODE */
 #if    OPT_STACK_CACHING
 #undef OPT_STACK_CACHING
-#endif
+#endif /* OPT_STACK_CACHING */
 #define YARV_AOT_COMPILED 1
-#endif
+#endif /* OPT_CALL_THREADED_CODE */
 
 /* likely */
 #ifdef __GCC__
 #define LIKELY(x)   (__builtin_expect(x, 1))
 #define UNLIKELY(x) (__builtin_expect(x, 0))
-#else
+#else  /* __GCC__ */
 #define LIKELY(x)   ((x) == 1)
 #define UNLIKELY(x) ((x) == 0)
-#endif
+#endif /* __GCC__*/
 
 #define YARVDEBUG 0
 #define CPDEBUG   0

Modified: trunk/yarvtest/yarvtest.rb
===================================================================
--- trunk/yarvtest/yarvtest.rb	2005-10-07 00:36:58 UTC (rev 276)
+++ trunk/yarvtest/yarvtest.rb	2005-10-11 04:37:37 UTC (rev 277)
@@ -58,6 +58,7 @@
   end
 
   def exec exec_file, program
+    exec_file.tr!('\\', '/')
     r = ''
     IO.popen("#{exec_file}", 'r+'){|io|
       #
@@ -88,7 +89,7 @@
       puts "ruby (#@ruby): #{ruby}"
     end
 
-    assert_equal(ruby, yarv)
+    assert_equal(ruby.gsub(/\r/, ''), yarv.gsub(/\r/, ''))
   end
   
   def test_


--
ML: yarv-diff quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml

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