aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-06-27 20:03:53 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-06-27 20:03:53 +0000
commitfd58a0836f2c4d0cf1c03be97011691a29a035ba (patch)
tree54febd72f25f57e16be29c4dcf7850892bb424d6
parentc1849cf09476181825ab5f59f819245d3559bfa2 (diff)
downloadruby-fd58a0836f2c4d0cf1c03be97011691a29a035ba.tar.gz
* common.mk (run.gdb): fix to load $(srcdir)/.gdbinit
* vm.c (rb_vm_set_finish_env): add a cast. * vm.h: support __fastcall for MSVC. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12644 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--common.mk1
-rw-r--r--vm.c2
-rw-r--r--vm.h25
4 files changed, 27 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index e40ccdb771..1aa77dabaf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Thu Jun 28 05:01:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk (run.gdb): fix to load $(srcdir)/.gdbinit
+
+ * vm.c (rb_vm_set_finish_env): add a cast.
+
+ * vm.h: support __fastcall for MSVC.
+
Thu Jun 28 02:12:08 2007 Koichi Sasada <ko1@atdot.net>
* bootstraptest/runner.rb: fix to untouch $:.
diff --git a/common.mk b/common.mk
index 3e335561d9..d9b0f15c75 100644
--- a/common.mk
+++ b/common.mk
@@ -663,6 +663,7 @@ run.gdb:
echo '# handle SIGPIPE nostop' >> run.gdb
echo '# b rb_longjmp' >> run.gdb
echo source $(srcdir)/breakpoints.gdb >> run.gdb
+ echo source $(srcdir)/.gdbinit >> run.gdb
echo run >> run.gdb
gdb: miniruby$(EXEEXT) run.gdb PHONY
diff --git a/vm.c b/vm.c
index 7dc292e112..27d6d42de9 100644
--- a/vm.c
+++ b/vm.c
@@ -52,7 +52,7 @@ rb_vm_set_finish_env(rb_thread_t *th)
vm_push_frame(th, 0, FRAME_MAGIC_FINISH,
Qnil, th->cfp->lfp[0], 0,
th->cfp->sp, 0, 1);
- th->cfp->pc = &yarv_finish_insn_seq[0];
+ th->cfp->pc = (VALUE *)&yarv_finish_insn_seq[0];
return Qtrue;
}
diff --git a/vm.h b/vm.h
index 13781bbe68..3b87033344 100644
--- a/vm.h
+++ b/vm.h
@@ -97,23 +97,32 @@ error !
/************************************************/
#elif OPT_CALL_THREADED_CODE
+#define LABEL(x) insn_func_##x
+#define ELABEL(x)
+#define LABEL_PTR(x) &LABEL(x)
+
#if __GCC__
-#define FASTCALL __attribute__ ((fastcall))
+#define FASTCALL(x) x __attribute__ ((fastcall))
+#define FASTCALL_KWD_GCC __attribute__ ((fastcall))
+#define FASTCALL_KWD_VC
+
+#elif defined(_MSC_VER)
+#define FASTCALL(x) __fastcall x
+#define FASTCALL_KWD_GCC
+#define FASTCALL_KWD_VC __fastcall
#else
+
#define FASTCALL
+#define FASTCALL_KWD_GCC
+#define FASTCALL_KWD_VC
#endif
-
-#define LABEL(x) insn_func_##x
-#define ELABEL(x)
-#define LABEL_PTR(x) &LABEL(x)
-
typedef rb_control_frame_t *
- (*insn_func_type) (rb_thread_t *, rb_control_frame_t *)FASTCALL;
+ (FASTCALL_KWD_VC *insn_func_type)(rb_thread_t *, rb_control_frame_t *) FASTCALL_KWD_GCC;
#define INSN_ENTRY(insn) \
static rb_control_frame_t * \
- LABEL(insn)(rb_thread_t *th, rb_control_frame_t *reg_cfp) FASTCALL {
+ FASTCALL(LABEL(insn)(rb_thread_t *th, rb_control_frame_t *reg_cfp)) {
#define END_INSN(insn) return reg_cfp;}