yarv-diff:20
From: ko1 atdot.net
Date: 27 Jun 2005 14:32:31 -0000
Subject: [yarv-diff:20] r175 - in trunk: . benchmark
Author: ko1
Date: 2005-06-27 23:32:31 +0900 (Mon, 27 Jun 2005)
New Revision: 175
Modified:
trunk/ChangeLog
trunk/benchmark/bm_whileloop.rb
trunk/depend
trunk/extconf.rb
trunk/vm.h
Log:
* depend : add gdb rule
* vm.h : use inline assembler for x86 (to support gcc 3.4.x)
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2005-06-27 11:09:33 UTC (rev 174)
+++ trunk/ChangeLog 2005-06-27 14:32:31 UTC (rev 175)
@@ -4,8 +4,16 @@
# from Mon, 03 May 2004 01:24:19 +0900
#
-2005-06-27(Mon) 20:04:10 +0900
+2005-06-27(Mon) 23:31:12 +0900 Koichi Sasada <ko1 atdot.net>
+ * depend : add gdb rule
+
+ * vm.h : use inline assembler for x86 (to support gcc 3.4.x)
+
+ *
+
+2005-06-27(Mon) 20:04:10 +0900 Koichi Sasada <ko1 atdot.net>
+
* yarvcore.c, compile.c, disasm.c : remove unused variables
* vm.h, insnhelper.h, debug.h : fix to reduce warning
@@ -18,7 +26,6 @@
* vm_evalbody.inc : rename to vm_evalbody.h
-
2005-06-27(Mon) 16:50:31 +0900 Koichi Sasada <ko1 atdot.net>
Modified: trunk/benchmark/bm_whileloop.rb
===================================================================
--- trunk/benchmark/bm_whileloop.rb 2005-06-27 11:09:33 UTC (rev 174)
+++ trunk/benchmark/bm_whileloop.rb 2005-06-27 14:32:31 UTC (rev 175)
@@ -1,4 +1,4 @@
i = 0
-while i<10000000
+while i<30000000
i+=1
end
Modified: trunk/depend
===================================================================
--- trunk/depend 2005-06-27 11:09:33 UTC (rev 174)
+++ trunk/depend 2005-06-27 14:32:31 UTC (rev 175)
@@ -83,3 +83,7 @@
reconf:
make clean
$(RUBY) $(srcdir)/extconf.rb
+
+gdb: all
+ gdb --args $(RUBY) -I$(srcdir) $(srcdir)/test.rb
+
Modified: trunk/extconf.rb
===================================================================
--- trunk/extconf.rb 2005-06-27 11:09:33 UTC (rev 174)
+++ trunk/extconf.rb 2005-06-27 14:32:31 UTC (rev 175)
@@ -85,10 +85,9 @@
# for GCC
vm.asm:
- $(CC) $(CFLAGS) -fno-crossjumping $(CPPFLAGS) -dA -S -o vm.asm.txt $(srcdir)/vm.c
+ $(CC) $(CFLAGS) -fno-crossjumping $(CPPFLAGS) -dA -S -o vm.asm.s $(srcdir)/vm.c
vm.cpp:
$(CPP) $(CPPFLAGS) $(CFLAGS) $(srcdir)/vm.c > vm.cpp.txt
-
EOS
}
end
Modified: trunk/vm.h
===================================================================
--- trunk/vm.h 2005-06-27 11:09:33 UTC (rev 174)
+++ trunk/vm.h 2005-06-27 14:32:31 UTC (rev 175)
@@ -95,10 +95,26 @@
/**********************************/
#ifdef DISPATCH_DIRECT_THREADED_CODE
+#define x86_dispatch(addr) \
+ asm volatile("jmp *%0;" : : "r" (addr))
+
/* direct threaded code */
-#define TC_DISPATCH(insn) \
+#if __GNUC__ && __i386__
+
+/* for GCC 3.4.x */
+#define TC_DISPATCH(insn) \
+ x86_dispatch(*((void **)reg_pc)); \
goto *GET_CURRENT_INSN();
+#else
+#define TC_DISPATCH(insn) \
+ goto *GET_CURRENT_INSN();
+
+#endif
+
+// goto *GET_CURRENT_INSN(); \
+// rb_bug("dtc error");
+
#define GET_SEQ(iseq) (iseq)->iseq_dt
/**********************************/
--
ML: yarv-diff quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml