1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* vm.h: rename insn_func_type to rb_insn_func_type.

* vm_evalbody.ci: ditt.
* insns.def: add opt_call_native_compiled instruction
  instead of opt_call_native_compiled.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12672 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ko1 2007-06-30 18:02:24 +00:00
parent fd3f9eee0e
commit eb9aaa4c4f
5 changed files with 32 additions and 23 deletions

View file

@ -1,3 +1,12 @@
Sun Jul 1 02:57:57 2007 Koichi Sasada <ko1@atdot.net>
* vm.h: rename insn_func_type to rb_insn_func_type.
* vm_evalbody.ci: ditt.
* insns.def: add opt_call_native_compiled instruction
instead of opt_call_native_compiled.
Sat Jun 30 00:17:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org> Sat Jun 30 00:17:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (parser_yylex): return non-valid token for an invalid * parse.y (parser_yylex): return non-valid token for an invalid

View file

@ -2331,21 +2331,21 @@ opt_regexpmatch2
@j kick @j kick
*/ */
DEFINE_INSN DEFINE_INSN
opt_call_native_compiled opt_call_c_function
() (VALUE func)
() ()
() ()
{ {
#if __GNUC__ && OPT_USE_JIT_COMPILE rb_insn_func_t funcptr = (rb_insn_func_t) func;
rb_iseq_t *iseq = GET_ISEQ(); reg_cfp = (funcptr)(th, reg_cfp);
void *label = (void *)iseq->jit_compiled;
breakpoint(); if (reg_cfp == 0) {
SET_PC(iseq->iseq_orig); VALUE err = th->errinfo;
goto *label; th->errinfo = Qnil;
#else return err;
rb_bug("opt_call_native_compiled is not supported"); }
#endif
NEXT_INSN();
} }
/** /**

View file

@ -1,15 +1,15 @@
#define RUBY_VERSION "1.9.0" #define RUBY_VERSION "1.9.0"
#define RUBY_RELEASE_DATE "2007-06-30" #define RUBY_RELEASE_DATE "2007-07-01"
#define RUBY_VERSION_CODE 190 #define RUBY_VERSION_CODE 190
#define RUBY_RELEASE_CODE 20070630 #define RUBY_RELEASE_CODE 20070701
#define RUBY_PATCHLEVEL 0 #define RUBY_PATCHLEVEL 0
#define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_MINOR 9
#define RUBY_VERSION_TEENY 0 #define RUBY_VERSION_TEENY 0
#define RUBY_RELEASE_YEAR 2007 #define RUBY_RELEASE_YEAR 2007
#define RUBY_RELEASE_MONTH 6 #define RUBY_RELEASE_MONTH 7
#define RUBY_RELEASE_DAY 30 #define RUBY_RELEASE_DAY 1
#ifdef RUBY_EXTERN #ifdef RUBY_EXTERN
RUBY_EXTERN const char ruby_version[]; RUBY_EXTERN const char ruby_version[];

14
vm.h
View file

@ -24,6 +24,13 @@ typedef unsigned long lindex_t;
typedef unsigned long dindex_t; typedef unsigned long dindex_t;
typedef rb_num_t GENTRY; typedef rb_num_t GENTRY;
#ifndef FUNC_FASTCALL
#define FUNC_FASTCALL(x) x
#endif
typedef rb_control_frame_t *
(FUNC_FASTCALL(*rb_insn_func_t))(rb_thread_t *, rb_control_frame_t *);
extern VALUE rb_cEnv; extern VALUE rb_cEnv;
extern VALUE ruby_vm_global_state_version; extern VALUE ruby_vm_global_state_version;
extern VALUE ruby_vm_redefined_flag; extern VALUE ruby_vm_redefined_flag;
@ -101,13 +108,6 @@ error !
#define ELABEL(x) #define ELABEL(x)
#define LABEL_PTR(x) &LABEL(x) #define LABEL_PTR(x) &LABEL(x)
#ifndef FUNC_FASTCALL
#define FUNC_FASTCALL(x) x
#endif
typedef rb_control_frame_t *
(FUNC_FASTCALL(*insn_func_type))(rb_thread_t *, rb_control_frame_t *);
#define INSN_ENTRY(insn) \ #define INSN_ENTRY(insn) \
static rb_control_frame_t * \ static rb_control_frame_t * \
FUNC_FASTCALL(LABEL(insn))(rb_thread_t *th, rb_control_frame_t *reg_cfp) { FUNC_FASTCALL(LABEL(insn))(rb_thread_t *th, rb_control_frame_t *reg_cfp) {

View file

@ -125,7 +125,7 @@ vm_eval(rb_thread_t *th, VALUE initial)
VALUE ret; VALUE ret;
while (*GET_PC()) { while (*GET_PC()) {
reg_cfp = ((insn_func_type) (*GET_PC()))(th, reg_cfp); reg_cfp = ((rb_insn_func_t) (*GET_PC()))(th, reg_cfp);
if (reg_cfp == 0) { if (reg_cfp == 0) {
VALUE err = th->errinfo; VALUE err = th->errinfo;