* 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
This commit is contained in:
ko1 2007-06-27 20:03:53 +00:00
parent c1849cf094
commit fd58a0836f
4 changed files with 28 additions and 10 deletions

View File

@ -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> Thu Jun 28 02:12:08 2007 Koichi Sasada <ko1@atdot.net>
* bootstraptest/runner.rb: fix to untouch $:. * bootstraptest/runner.rb: fix to untouch $:.

View File

@ -663,6 +663,7 @@ run.gdb:
echo '# handle SIGPIPE nostop' >> run.gdb echo '# handle SIGPIPE nostop' >> run.gdb
echo '# b rb_longjmp' >> run.gdb echo '# b rb_longjmp' >> run.gdb
echo source $(srcdir)/breakpoints.gdb >> run.gdb echo source $(srcdir)/breakpoints.gdb >> run.gdb
echo source $(srcdir)/.gdbinit >> run.gdb
echo run >> run.gdb echo run >> run.gdb
gdb: miniruby$(EXEEXT) run.gdb PHONY gdb: miniruby$(EXEEXT) run.gdb PHONY

2
vm.c
View File

@ -52,7 +52,7 @@ rb_vm_set_finish_env(rb_thread_t *th)
vm_push_frame(th, 0, FRAME_MAGIC_FINISH, vm_push_frame(th, 0, FRAME_MAGIC_FINISH,
Qnil, th->cfp->lfp[0], 0, Qnil, th->cfp->lfp[0], 0,
th->cfp->sp, 0, 1); th->cfp->sp, 0, 1);
th->cfp->pc = &yarv_finish_insn_seq[0]; th->cfp->pc = (VALUE *)&yarv_finish_insn_seq[0];
return Qtrue; return Qtrue;
} }

27
vm.h
View File

@ -97,23 +97,32 @@ error !
/************************************************/ /************************************************/
#elif OPT_CALL_THREADED_CODE #elif OPT_CALL_THREADED_CODE
#if __GCC__
#define FASTCALL __attribute__ ((fastcall))
#else
#define FASTCALL
#endif
#define LABEL(x) insn_func_##x #define LABEL(x) insn_func_##x
#define ELABEL(x) #define ELABEL(x)
#define LABEL_PTR(x) &LABEL(x) #define LABEL_PTR(x) &LABEL(x)
#if __GCC__
#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
typedef rb_control_frame_t * 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) \ #define INSN_ENTRY(insn) \
static rb_control_frame_t * \ 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;} #define END_INSN(insn) return reg_cfp;}