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

yarv-diff:29

From: ko1 atdot.net
Date: 29 Jun 2005 07:19:03 -0000
Subject: [yarv-diff:29] r184 - in trunk: . benchmark

Author: ko1
Date: 2005-06-29 16:19:03 +0900 (Wed, 29 Jun 2005)
New Revision: 184

Added:
   trunk/call_cfunc.h
Removed:
   trunk/call_cfunc.inc
Modified:
   trunk/ChangeLog
   trunk/benchmark/run.rb
   trunk/test.rb
   trunk/vm.c
   trunk/vm.h
Log:
	* benchmark/run.rb : fix output format

	* call_cfunc.inc -> call_cfunc.h

	* vm.h : add sign by asm statement



Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2005-06-28 13:29:06 UTC (rev 183)
+++ trunk/ChangeLog	2005-06-29 07:19:03 UTC (rev 184)
@@ -4,6 +4,15 @@
 #  from Mon, 03 May 2004 01:24:19 +0900
 #
 
+2005-06-29(Wed) 16:16:52 +0900  Koichi Sasada  <ko1 atdot.net>
+
+	* benchmark/run.rb : fix output format
+
+	* call_cfunc.inc -> call_cfunc.h
+
+	* vm.h : add sign by asm statement
+
+
 2005-06-28(Tue) 22:28:40 +0900  Koichi Sasada  <ko1 atdot.net>
 
 	* vm.c : fix method search

Modified: trunk/benchmark/run.rb
===================================================================
--- trunk/benchmark/run.rb	2005-06-28 13:29:06 UTC (rev 183)
+++ trunk/benchmark/run.rb	2005-06-29 07:19:03 UTC (rev 184)
@@ -18,7 +18,7 @@
   prog = File.read(file).map{|e| e.rstrip}.join("\n")
   return if prog.empty?
 
-  /bm_(.+)\.rb/ =~ file
+  /[a-z]+_(.+)\.rb/ =~ file
   bm_name = $1
   puts '-----------------------------------------------------------' unless $yarvonly
   puts "#{bm_name}: "
@@ -116,9 +116,10 @@
   end
 
   puts
+  puts "-- benchmark summary ---------------------------"
   $results.each{|res|
-    print res.shift + "\t"
-    res.each{|result|
+    print res.shift, "\t"
+    (res||[]).each{|result|
       /([\d\.]+)/ =~ result
       print $1 + "\t"
     }

Copied: trunk/call_cfunc.h (from rev 183, trunk/call_cfunc.inc)

Deleted: trunk/call_cfunc.inc
===================================================================
--- trunk/call_cfunc.inc	2005-06-28 13:29:06 UTC (rev 183)
+++ trunk/call_cfunc.inc	2005-06-29 07:19:03 UTC (rev 184)
@@ -1,92 +0,0 @@
-/* -*-c-*- */
-
-/* from ruby1.9/eval.c */
-
-static inline VALUE
-call_cfunc(func, recv, len, argc, argv)
-    VALUE (*func)();
-    VALUE recv;
-    int len, argc;
-    const VALUE *argv;
-{
-  if (len >= 0 && argc != len) {
-    rb_raise(rb_eArgError, "wrong number of arguments(%d for %d)",
-             argc, len);
-  }
-
-  switch (len) {
-  case -2:
-    return (*func)(recv, rb_ary_new4(argc, argv));
-    break;
-  case -1:
-    return (*func)(argc, argv, recv);
-    break;
-  case 0:
-    return (*func)(recv);
-    break;
-  case 1:
-    return (*func)(recv, argv[0]);
-    break;
-  case 2:
-    return (*func)(recv, argv[0], argv[1]);
-    break;
-  case 3:
-    return (*func)(recv, argv[0], argv[1], argv[2]);
-    break;
-  case 4:
-    return (*func)(recv, argv[0], argv[1], argv[2], argv[3]);
-    break;
-  case 5:
-    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4]);
-    break;
-  case 6:
-    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4],
-                   argv[5]);
-    break;
-  case 7:
-    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4],
-                   argv[5], argv[6]);
-    break;
-  case 8:
-    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4],
-                   argv[5], argv[6], argv[7]);
-    break;
-  case 9:
-    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4],
-                   argv[5], argv[6], argv[7], argv[8]);
-    break;
-  case 10:
-    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4],
-                   argv[5], argv[6], argv[7], argv[8], argv[9]);
-    break;
-  case 11:
-    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4],
-                   argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]);
-    break;
-  case 12:
-    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4],
-                   argv[5], argv[6], argv[7], argv[8], argv[9],
-                   argv[10], argv[11]);
-    break;
-  case 13:
-    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4],
-                   argv[5], argv[6], argv[7], argv[8], argv[9], argv[10],
-                   argv[11], argv[12]);
-    break;
-  case 14:
-    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4],
-                   argv[5], argv[6], argv[7], argv[8], argv[9], argv[10],
-                   argv[11], argv[12], argv[13]);
-    break;
-  case 15:
-    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4],
-                   argv[5], argv[6], argv[7], argv[8], argv[9], argv[10],
-                   argv[11], argv[12], argv[13], argv[14]);
-    break;
-  default:
-    rb_raise(rb_eArgError, "too many arguments(%d)", len);
-    break;
-  }
-  return Qnil;		/* not reached */
-}
-

Modified: trunk/test.rb
===================================================================
--- trunk/test.rb	2005-06-28 13:29:06 UTC (rev 183)
+++ trunk/test.rb	2005-06-29 07:19:03 UTC (rev 184)
@@ -9,6 +9,15 @@
 ###########################################################
 $prog =<<'__EOP__'
 
+def m
+end
+
+i=0
+while i<1000000
+  i+=1
+  m; m; m; m; m; m; m; m; m; m
+end
+__END__
 def test(arg)
 a =  case arg
   when 1

Modified: trunk/vm.c
===================================================================
--- trunk/vm.c	2005-06-28 13:29:06 UTC (rev 183)
+++ trunk/vm.c	2005-06-29 07:19:03 UTC (rev 184)
@@ -54,7 +54,7 @@
 NODE*
 rb_get_method_body(VALUE *klassp, ID *idp, int *noexp);
 
-#include "call_cfunc.inc"
+#include "call_cfunc.h"
 
 /*
  * prepare stack frame

Modified: trunk/vm.h
===================================================================
--- trunk/vm.h	2005-06-28 13:29:06 UTC (rev 183)
+++ trunk/vm.h	2005-06-29 07:19:03 UTC (rev 184)
@@ -89,8 +89,18 @@
 #define LABEL(x)  INSN_LABEL_##x
 #define ELABEL(x) INSN_ELABEL_##x
 
+#define INSN_ENTRY_SIG(insn) \
+  asm volatile (  "; *****************************************************\n" \
+                "\t; [start] " # insn "\n") \
+
+
+#define INSN_DISPATCH_SIG(insn) \
+  asm volatile (  "; [end  ] " # insn "\n"\
+                "\t; =====================================================\n") \
+
 #define INSN_ENTRY(insn) \
-  LABEL(insn):
+  LABEL(insn): \
+  INSN_ENTRY_SIG(insn); \
 
 /**********************************/
 #ifdef DISPATCH_DIRECT_THREADED_CODE
@@ -104,6 +114,7 @@
 /* for GCC 3.4.x */
 #define TC_DISPATCH(insn) \
   x86_dispatch(*((void **)reg_pc)); \
+  INSN_DISPATCH_SIG(insn); \
   goto *GET_CURRENT_INSN(); \
   ;
 #else


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

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