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