diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-12-13 23:55:04 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-12-13 23:55:04 +0000 |
commit | 21ae9c745ad435cad08ac394326dee7b77d8e66c (patch) | |
tree | e5e38812ccb87d1df5a1232a1e22b952601be400 | |
parent | 96439f2a4a09c0994883991226966b79701968db (diff) | |
download | ruby-21ae9c745ad435cad08ac394326dee7b77d8e66c.tar.gz |
* eval.c (Init_eval): should mark ruby_eval_tree. [ruby-dev:25189]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | eval.c | 66 | ||||
-rw-r--r-- | intern.h | 1 |
3 files changed, 16 insertions, 55 deletions
@@ -1,3 +1,7 @@ +Tue Dec 14 08:47:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org> + + * eval.c (Init_eval): should mark ruby_eval_tree. [ruby-dev:25189] + Mon Dec 13 18:13:52 2004 Tanaka Akira <akr@m17n.org> * gc.c (set_stack_end): new function to obtain stack end address. @@ -5832,14 +5832,20 @@ rb_f_send(argc, argv, recv) return vid; } -static VALUE -vafuncall(recv, mid, n, ar) +VALUE +#ifdef HAVE_STDARG_PROTOTYPES +rb_funcall(VALUE recv, ID mid, int n, ...) +#else +rb_funcall(recv, mid, n, va_alist) VALUE recv; ID mid; int n; - va_list *ar; + va_dcl +#endif { VALUE *argv; + va_list ar; + va_init_list(ar, n); if (n > 0) { long i; @@ -5847,9 +5853,9 @@ vafuncall(recv, mid, n, ar) argv = ALLOCA_N(VALUE, n); for (i=0;i<n;i++) { - argv[i] = va_arg(*ar, VALUE); + argv[i] = va_arg(ar, VALUE); } - va_end(*ar); + va_end(ar); } else { argv = 0; @@ -5859,55 +5865,6 @@ vafuncall(recv, mid, n, ar) } VALUE -#ifdef HAVE_STDARG_PROTOTYPES -rb_funcall(VALUE recv, ID mid, int n, ...) -#else -rb_funcall(recv, mid, n, va_alist) - VALUE recv; - ID mid; - int n; - va_dcl -#endif -{ - va_list ar; - va_init_list(ar, n); - - return vafuncall(recv, mid, n, &ar); -} - -VALUE -#ifdef HAVE_STDARG_PROTOTYPES -rb_funcall_rescue(VALUE recv, ID mid, int n, ...) -#else -rb_funcall_rescue(recv, mid, n, va_alist) - VALUE recv; - ID mid; - int n; - va_dcl -#endif -{ - VALUE result = Qnil; /* OK */ - int status; - va_list ar; - - va_init_list(ar, n); - - PUSH_TAG(PROT_NONE); - if ((status = EXEC_TAG()) == 0) { - result = vafuncall(recv, mid, n, &ar); - } - POP_TAG(); - switch (status) { - case 0: - return result; - case TAG_RAISE: - return Qundef; - default: - JUMP_TAG(status); - } -} - -VALUE rb_funcall2(recv, mid, argc, argv) VALUE recv; ID mid; @@ -7610,6 +7567,7 @@ Init_eval() __send__ = rb_intern("__send__"); rb_global_variable((VALUE*)&top_scope); + rb_global_variable((VALUE*)&ruby_eval_tree); rb_global_variable((VALUE*)&ruby_dyna_vars); rb_define_virtual_variable("$@", errat_getter, errat_setter); @@ -224,7 +224,6 @@ VALUE rb_thread_main _((void)); VALUE rb_thread_local_aref _((VALUE, ID)); VALUE rb_thread_local_aset _((VALUE, ID, VALUE)); void rb_thread_atfork _((void)); -VALUE rb_funcall_rescue __((VALUE, ID, int, ...)); /* file.c */ int eaccess _((const char*, int)); VALUE rb_file_s_expand_path _((int, VALUE *)); |